modelfusion 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/composed-function/summarize/SummarizationFunction.d.ts +1 -1
- package/composed-function/summarize/summarizeRecursively.d.ts +1 -1
- package/composed-function/summarize/summarizeRecursivelyWithTextGenerationAndTokenSplitting.d.ts +1 -1
- package/{run → core}/DefaultRun.cjs +1 -1
- package/{run → core}/DefaultRun.js +1 -1
- package/{run → core}/FunctionEvent.d.ts +30 -6
- package/core/FunctionOptions.d.ts +33 -0
- package/core/GlobalFunctionLogging.cjs +12 -0
- package/core/GlobalFunctionLogging.d.ts +3 -0
- package/core/GlobalFunctionLogging.js +7 -0
- package/core/getFunctionCallLogger.cjs +74 -0
- package/core/getFunctionCallLogger.d.ts +3 -0
- package/core/getFunctionCallLogger.js +70 -0
- package/{run → core}/index.cjs +1 -1
- package/{run → core}/index.d.ts +1 -1
- package/{run → core}/index.js +1 -1
- package/index.cjs +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/model-function/AbstractModel.d.ts +1 -0
- package/model-function/Model.d.ts +7 -2
- package/model-function/ModelCallEvent.d.ts +39 -5
- package/model-function/ModelFunctionOptions.d.ts +1 -1
- package/model-function/SuccessfulModelCall.cjs +4 -2
- package/model-function/SuccessfulModelCall.d.ts +1 -1
- package/model-function/SuccessfulModelCall.js +4 -2
- package/model-function/embed-text/TextEmbeddingEvent.d.ts +12 -12
- package/model-function/embed-text/TextEmbeddingModel.d.ts +1 -1
- package/model-function/embed-text/embedText.cjs +6 -61
- package/model-function/embed-text/embedText.d.ts +3 -3
- package/model-function/embed-text/embedText.js +6 -61
- package/model-function/executeCall.cjs +50 -30
- package/model-function/executeCall.d.ts +16 -22
- package/model-function/executeCall.js +48 -28
- package/model-function/generate-image/ImageGenerationEvent.d.ts +9 -11
- package/model-function/generate-image/generateImage.cjs +2 -27
- package/model-function/generate-image/generateImage.d.ts +1 -1
- package/model-function/generate-image/generateImage.js +2 -27
- package/model-function/generate-json/JsonGenerationEvent.d.ts +14 -11
- package/model-function/generate-json/JsonGenerationModel.d.ts +13 -0
- package/model-function/generate-json/JsonOrTextGenerationModel.d.ts +23 -0
- package/model-function/generate-json/JsonTextGenerationModel.cjs +3 -0
- package/model-function/generate-json/JsonTextGenerationModel.d.ts +6 -5
- package/model-function/generate-json/JsonTextGenerationModel.js +3 -0
- package/model-function/generate-json/generateJson.cjs +3 -27
- package/model-function/generate-json/generateJson.d.ts +2 -2
- package/model-function/generate-json/generateJson.js +3 -27
- package/model-function/generate-json/generateJsonOrText.cjs +3 -27
- package/model-function/generate-json/generateJsonOrText.d.ts +2 -2
- package/model-function/generate-json/generateJsonOrText.js +3 -27
- package/model-function/generate-text/TextGenerationEvent.d.ts +14 -11
- package/model-function/generate-text/TextGenerationModel.d.ts +5 -0
- package/model-function/generate-text/TextStreamingEvent.d.ts +4 -17
- package/model-function/generate-text/generateText.cjs +3 -27
- package/model-function/generate-text/generateText.d.ts +1 -1
- package/model-function/generate-text/generateText.js +3 -27
- package/model-function/generate-text/streamText.cjs +31 -33
- package/model-function/generate-text/streamText.d.ts +5 -5
- package/model-function/generate-text/streamText.js +31 -33
- package/model-function/index.cjs +3 -2
- package/model-function/index.d.ts +3 -2
- package/model-function/index.js +3 -2
- package/model-function/synthesize-speech/SpeechSynthesisEvent.d.ts +12 -11
- package/model-function/synthesize-speech/SpeechSynthesisModel.d.ts +1 -1
- package/model-function/synthesize-speech/synthesizeSpeech.cjs +2 -28
- package/model-function/synthesize-speech/synthesizeSpeech.d.ts +1 -1
- package/model-function/synthesize-speech/synthesizeSpeech.js +2 -28
- package/model-function/transcribe-speech/TranscriptionEvent.d.ts +9 -11
- package/model-function/transcribe-speech/TranscriptionModel.d.ts +1 -1
- package/model-function/transcribe-speech/transcribe.cjs +2 -27
- package/model-function/transcribe-speech/transcribe.d.ts +1 -1
- package/model-function/transcribe-speech/transcribe.js +2 -27
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +9 -0
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +1 -0
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +9 -0
- package/model-provider/cohere/CohereTextEmbeddingModel.cjs +6 -0
- package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +4 -3
- package/model-provider/cohere/CohereTextEmbeddingModel.js +6 -0
- package/model-provider/cohere/CohereTextGenerationModel.cjs +20 -0
- package/model-provider/cohere/CohereTextGenerationModel.d.ts +2 -1
- package/model-provider/cohere/CohereTextGenerationModel.js +20 -0
- package/model-provider/cohere/CohereTokenizer.d.ts +1 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.cjs +8 -0
- package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.d.ts +1 -0
- package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.js +8 -0
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +7 -0
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +1 -0
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +7 -0
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +16 -0
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +1 -0
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +16 -0
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +6 -0
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +1 -0
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +6 -0
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +31 -0
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +6 -0
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +31 -0
- package/model-provider/llamacpp/LlamaCppTokenizer.d.ts +1 -1
- package/model-provider/openai/OpenAIImageGenerationModel.cjs +8 -0
- package/model-provider/openai/OpenAIImageGenerationModel.d.ts +1 -0
- package/model-provider/openai/OpenAIImageGenerationModel.js +8 -0
- package/model-provider/openai/OpenAITextEmbeddingModel.cjs +5 -0
- package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +12 -11
- package/model-provider/openai/OpenAITextEmbeddingModel.js +5 -0
- package/model-provider/openai/OpenAITextGenerationModel.cjs +24 -0
- package/model-provider/openai/OpenAITextGenerationModel.d.ts +14 -8
- package/model-provider/openai/OpenAITextGenerationModel.js +24 -0
- package/model-provider/openai/OpenAITranscriptionModel.cjs +7 -0
- package/model-provider/openai/OpenAITranscriptionModel.d.ts +2 -0
- package/model-provider/openai/OpenAITranscriptionModel.js +7 -0
- package/model-provider/openai/chat/OpenAIChatModel.cjs +20 -0
- package/model-provider/openai/chat/OpenAIChatModel.d.ts +17 -11
- package/model-provider/openai/chat/OpenAIChatModel.js +20 -0
- package/model-provider/openai/chat/OpenAIChatPrompt.d.ts +2 -2
- package/model-provider/stability/StabilityImageGenerationModel.cjs +15 -0
- package/model-provider/stability/StabilityImageGenerationModel.d.ts +1 -0
- package/model-provider/stability/StabilityImageGenerationModel.js +15 -0
- package/package.json +1 -1
- package/prompt/PromptFormatTextGenerationModel.cjs +3 -0
- package/prompt/PromptFormatTextGenerationModel.d.ts +1 -0
- package/prompt/PromptFormatTextGenerationModel.js +3 -0
- package/text-chunk/split/SplitFunction.d.ts +1 -1
- package/tool/ExecuteToolEvent.d.ts +7 -16
- package/tool/Tool.d.ts +1 -1
- package/tool/WebSearchTool.cjs +25 -0
- package/tool/WebSearchTool.d.ts +56 -1
- package/tool/WebSearchTool.js +25 -0
- package/tool/executeTool.cjs +17 -8
- package/tool/executeTool.d.ts +1 -1
- package/tool/executeTool.js +17 -8
- package/tool/useTool.d.ts +2 -2
- package/tool/useToolOrGenerateText.d.ts +2 -2
- package/vector-index/VectorIndex.d.ts +1 -1
- package/vector-index/memory/MemoryVectorIndex.d.ts +1 -1
- package/vector-index/pinecone/PineconeVectorIndex.d.ts +1 -1
- package/model-function/generate-json/GenerateJsonModel.d.ts +0 -8
- package/model-function/generate-json/GenerateJsonOrTextModel.d.ts +0 -18
- package/run/ConsoleLogger.cjs +0 -9
- package/run/ConsoleLogger.d.ts +0 -5
- package/run/ConsoleLogger.js +0 -5
- package/run/FunctionOptions.d.ts +0 -19
- /package/{run → core}/DefaultRun.d.ts +0 -0
- /package/{run → core}/FunctionEvent.cjs +0 -0
- /package/{run → core}/FunctionEvent.js +0 -0
- /package/{run → core}/FunctionEventSource.cjs +0 -0
- /package/{run → core}/FunctionEventSource.d.ts +0 -0
- /package/{run → core}/FunctionEventSource.js +0 -0
- /package/{run → core}/FunctionObserver.cjs +0 -0
- /package/{run → core}/FunctionObserver.d.ts +0 -0
- /package/{run → core}/FunctionObserver.js +0 -0
- /package/{run → core}/FunctionOptions.cjs +0 -0
- /package/{run → core}/FunctionOptions.js +0 -0
- /package/{run → core}/GlobalFunctionObservers.cjs +0 -0
- /package/{run → core}/GlobalFunctionObservers.d.ts +0 -0
- /package/{run → core}/GlobalFunctionObservers.js +0 -0
- /package/{run → core}/Run.cjs +0 -0
- /package/{run → core}/Run.d.ts +0 -0
- /package/{run → core}/Run.js +0 -0
- /package/{run → core}/Vector.cjs +0 -0
- /package/{run → core}/Vector.d.ts +0 -0
- /package/{run → core}/Vector.js +0 -0
- /package/model-function/generate-json/{GenerateJsonModel.cjs → JsonGenerationModel.cjs} +0 -0
- /package/model-function/generate-json/{GenerateJsonModel.js → JsonGenerationModel.js} +0 -0
- /package/model-function/generate-json/{GenerateJsonOrTextModel.cjs → JsonOrTextGenerationModel.cjs} +0 -0
- /package/model-function/generate-json/{GenerateJsonOrTextModel.js → JsonOrTextGenerationModel.js} +0 -0
package/README.md
CHANGED
@@ -376,6 +376,7 @@ const { chunks } = await retrieveTextChunks(
|
|
376
376
|
- [Text Chunks](https://modelfusion.dev/guide/text-chunk/)
|
377
377
|
- [Split Text](https://modelfusion.dev/guide/text-chunk/split)
|
378
378
|
- [Utilities](https://modelfusion.dev/guide/util/)
|
379
|
+
- [Function Logging](https://modelfusion.dev/guide/util/logging)
|
379
380
|
- [Function observers](https://modelfusion.dev/guide/util/observer)
|
380
381
|
- [Retry strategies](https://modelfusion.dev/guide/util/retry)
|
381
382
|
- [Throttling strategies](https://modelfusion.dev/guide/util/throttle)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Run } from "../../
|
1
|
+
import { Run } from "../../core/Run.js";
|
2
2
|
import { SplitFunction } from "../../text-chunk/split/SplitFunction.js";
|
3
3
|
import { SummarizationFunction } from "./SummarizationFunction.js";
|
4
4
|
export declare function summarizeRecursively({ summarize, split, join, text, }: {
|
package/composed-function/summarize/summarizeRecursivelyWithTextGenerationAndTokenSplitting.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { TextGenerationModel, TextGenerationModelSettings } from "../../model-function/generate-text/TextGenerationModel.js";
|
2
2
|
import { FullTokenizer } from "../../model-function/tokenize-text/Tokenizer.js";
|
3
|
-
import { Run } from "../../
|
3
|
+
import { Run } from "../../core/Run.js";
|
4
4
|
/**
|
5
5
|
* Recursively summarizes a text using a text generation model, e.g. for summarization or text extraction.
|
6
6
|
* It automatically splits the text into optimal chunks that are small enough to be processed by the model,
|
@@ -5,7 +5,7 @@ const nanoid_1 = require("nanoid");
|
|
5
5
|
const calculateCost_js_1 = require("../cost/calculateCost.cjs");
|
6
6
|
const SuccessfulModelCall_js_1 = require("../model-function/SuccessfulModelCall.cjs");
|
7
7
|
class DefaultRun {
|
8
|
-
constructor({ runId = (0, nanoid_1.nanoid)()
|
8
|
+
constructor({ runId = `run-${(0, nanoid_1.nanoid)()}`, sessionId, userId, abortSignal, observers, costCalculators = [], } = {}) {
|
9
9
|
Object.defineProperty(this, "runId", {
|
10
10
|
enumerable: true,
|
11
11
|
configurable: true,
|
@@ -2,7 +2,7 @@ import { nanoid as createId } from "nanoid";
|
|
2
2
|
import { calculateCost } from "../cost/calculateCost.js";
|
3
3
|
import { extractSuccessfulModelCalls, } from "../model-function/SuccessfulModelCall.js";
|
4
4
|
export class DefaultRun {
|
5
|
-
constructor({ runId = createId()
|
5
|
+
constructor({ runId = `run-${createId()}`, sessionId, userId, abortSignal, observers, costCalculators = [], } = {}) {
|
6
6
|
Object.defineProperty(this, "runId", {
|
7
7
|
enumerable: true,
|
8
8
|
configurable: true,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ExecuteToolFinishedEvent, ExecuteToolStartedEvent } from "../tool/ExecuteToolEvent.js";
|
2
2
|
import { ModelCallFinishedEvent, ModelCallStartedEvent } from "../model-function/ModelCallEvent.js";
|
3
|
-
export
|
3
|
+
export interface BaseFunctionEvent {
|
4
4
|
/**
|
5
5
|
* Unique identifier for the function call.
|
6
6
|
*/
|
@@ -36,16 +36,40 @@ export type BaseFunctionEvent = {
|
|
36
36
|
* Type of the function. Defined in the subclasses.
|
37
37
|
*/
|
38
38
|
functionType: string;
|
39
|
-
}
|
40
|
-
export
|
39
|
+
}
|
40
|
+
export interface BaseFunctionStartedEvent extends BaseFunctionEvent {
|
41
41
|
eventType: "started";
|
42
|
+
/**
|
43
|
+
* Timestamp when the function call started.
|
44
|
+
*/
|
42
45
|
startTimestamp: Date;
|
46
|
+
}
|
47
|
+
export type BaseFunctionFinishedEventResult = {
|
48
|
+
status: "success";
|
49
|
+
output: unknown;
|
50
|
+
} | {
|
51
|
+
status: "error";
|
52
|
+
error: unknown;
|
53
|
+
} | {
|
54
|
+
status: "abort";
|
43
55
|
};
|
44
|
-
export
|
56
|
+
export interface BaseFunctionFinishedEvent extends BaseFunctionEvent {
|
45
57
|
eventType: "finished";
|
46
|
-
|
58
|
+
/**
|
59
|
+
* Timestamp when the function call started.
|
60
|
+
*/
|
47
61
|
startTimestamp: Date;
|
62
|
+
/**
|
63
|
+
* Timestamp when the function call finished.
|
64
|
+
*/
|
48
65
|
finishTimestamp: Date;
|
66
|
+
/**
|
67
|
+
* Duration of the function call in milliseconds.
|
68
|
+
*/
|
49
69
|
durationInMs: number;
|
50
|
-
|
70
|
+
/**
|
71
|
+
* Result of the function call.
|
72
|
+
*/
|
73
|
+
result: BaseFunctionFinishedEventResult;
|
74
|
+
}
|
51
75
|
export type FunctionEvent = ModelCallStartedEvent | ExecuteToolStartedEvent | ModelCallFinishedEvent | ExecuteToolFinishedEvent;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { Run } from "./Run.js";
|
2
|
+
import { FunctionObserver } from "./FunctionObserver.js";
|
3
|
+
/**
|
4
|
+
* Additional settings for ModelFusion functions.
|
5
|
+
*/
|
6
|
+
export type FunctionOptions = {
|
7
|
+
/**
|
8
|
+
* Optional function identifier that is used in events to identify the function.
|
9
|
+
*/
|
10
|
+
functionId?: string;
|
11
|
+
/**
|
12
|
+
* Optional logging to use for the function. Logs are sent to the console.
|
13
|
+
* Overrides the global function logging setting.
|
14
|
+
*/
|
15
|
+
logging?: FunctionLogging;
|
16
|
+
/**
|
17
|
+
* Optional observers that are called when the function is invoked.
|
18
|
+
*/
|
19
|
+
observers?: Array<FunctionObserver>;
|
20
|
+
/**
|
21
|
+
* Optional run as part of which this function is called.
|
22
|
+
*/
|
23
|
+
run?: Run;
|
24
|
+
};
|
25
|
+
/**
|
26
|
+
* The logging to use for the function. Logs are sent to the console.
|
27
|
+
*
|
28
|
+
* - `off` or undefined: No logging.
|
29
|
+
* - `basic-text`: Log the timestamp and the type of event as a single line of text.
|
30
|
+
* - `detailed-object`: Log everything except the original response as an object to the console.
|
31
|
+
* - `detailed-json`: Log everything except the original response as a JSON string to the console.
|
32
|
+
*/
|
33
|
+
export type FunctionLogging = undefined | "off" | "basic-text" | "detailed-object" | "detailed-json";
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getGlobalFunctionLogging = exports.setGlobalFunctionLogging = void 0;
|
4
|
+
let globalFunctionLogging = undefined;
|
5
|
+
function setGlobalFunctionLogging(logLevel) {
|
6
|
+
globalFunctionLogging = logLevel;
|
7
|
+
}
|
8
|
+
exports.setGlobalFunctionLogging = setGlobalFunctionLogging;
|
9
|
+
function getGlobalFunctionLogging() {
|
10
|
+
return globalFunctionLogging;
|
11
|
+
}
|
12
|
+
exports.getGlobalFunctionLogging = getGlobalFunctionLogging;
|
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getFunctionCallLogger = void 0;
|
4
|
+
function getFunctionCallLogger(logging) {
|
5
|
+
switch (logging) {
|
6
|
+
case "basic-text":
|
7
|
+
return [basicTextObserver];
|
8
|
+
case "detailed-object":
|
9
|
+
return [detailedObjectObserver];
|
10
|
+
case "detailed-json":
|
11
|
+
return [detailedJsonObserver];
|
12
|
+
case "off":
|
13
|
+
default:
|
14
|
+
return [];
|
15
|
+
}
|
16
|
+
}
|
17
|
+
exports.getFunctionCallLogger = getFunctionCallLogger;
|
18
|
+
const basicTextObserver = {
|
19
|
+
onFunctionEvent(event) {
|
20
|
+
// log based on event type:
|
21
|
+
switch (event.eventType) {
|
22
|
+
case "started": {
|
23
|
+
console.log(`[${event.timestamp.toISOString()}] ${event.callId} - ${event.functionType} ${event.eventType}`);
|
24
|
+
break;
|
25
|
+
}
|
26
|
+
case "finished": {
|
27
|
+
console.log(`[${event.timestamp.toISOString()}] ${event.callId} - ${event.functionType} ${event.eventType} in ${event.durationInMs}ms`);
|
28
|
+
break;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
},
|
32
|
+
};
|
33
|
+
const detailedObjectObserver = {
|
34
|
+
onFunctionEvent(event) {
|
35
|
+
// Remove the "response" property from the result (if any):
|
36
|
+
if (event.eventType === "finished" &&
|
37
|
+
event.result != null &&
|
38
|
+
"response" in event.result &&
|
39
|
+
event.result?.response != null) {
|
40
|
+
event = {
|
41
|
+
...event,
|
42
|
+
result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
44
|
+
),
|
45
|
+
};
|
46
|
+
}
|
47
|
+
// filter all undefined properties from event for cleaner console output:
|
48
|
+
event = Object.fromEntries(
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
50
|
+
Object.entries(event).filter(([_, v]) => v !== undefined));
|
51
|
+
console.log(event);
|
52
|
+
},
|
53
|
+
};
|
54
|
+
const detailedJsonObserver = {
|
55
|
+
onFunctionEvent(event) {
|
56
|
+
// Remove the "response" property from the result (if any):
|
57
|
+
if (event.eventType === "finished" &&
|
58
|
+
event.result != null &&
|
59
|
+
"response" in event.result &&
|
60
|
+
event.result?.response != null) {
|
61
|
+
event = {
|
62
|
+
...event,
|
63
|
+
result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
65
|
+
),
|
66
|
+
};
|
67
|
+
}
|
68
|
+
// filter all undefined properties from event for cleaner console output:
|
69
|
+
event = Object.fromEntries(
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
71
|
+
Object.entries(event).filter(([_, v]) => v !== undefined));
|
72
|
+
console.log(JSON.stringify(event));
|
73
|
+
},
|
74
|
+
};
|
@@ -0,0 +1,70 @@
|
|
1
|
+
export function getFunctionCallLogger(logging) {
|
2
|
+
switch (logging) {
|
3
|
+
case "basic-text":
|
4
|
+
return [basicTextObserver];
|
5
|
+
case "detailed-object":
|
6
|
+
return [detailedObjectObserver];
|
7
|
+
case "detailed-json":
|
8
|
+
return [detailedJsonObserver];
|
9
|
+
case "off":
|
10
|
+
default:
|
11
|
+
return [];
|
12
|
+
}
|
13
|
+
}
|
14
|
+
const basicTextObserver = {
|
15
|
+
onFunctionEvent(event) {
|
16
|
+
// log based on event type:
|
17
|
+
switch (event.eventType) {
|
18
|
+
case "started": {
|
19
|
+
console.log(`[${event.timestamp.toISOString()}] ${event.callId} - ${event.functionType} ${event.eventType}`);
|
20
|
+
break;
|
21
|
+
}
|
22
|
+
case "finished": {
|
23
|
+
console.log(`[${event.timestamp.toISOString()}] ${event.callId} - ${event.functionType} ${event.eventType} in ${event.durationInMs}ms`);
|
24
|
+
break;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
},
|
28
|
+
};
|
29
|
+
const detailedObjectObserver = {
|
30
|
+
onFunctionEvent(event) {
|
31
|
+
// Remove the "response" property from the result (if any):
|
32
|
+
if (event.eventType === "finished" &&
|
33
|
+
event.result != null &&
|
34
|
+
"response" in event.result &&
|
35
|
+
event.result?.response != null) {
|
36
|
+
event = {
|
37
|
+
...event,
|
38
|
+
result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
40
|
+
),
|
41
|
+
};
|
42
|
+
}
|
43
|
+
// filter all undefined properties from event for cleaner console output:
|
44
|
+
event = Object.fromEntries(
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
46
|
+
Object.entries(event).filter(([_, v]) => v !== undefined));
|
47
|
+
console.log(event);
|
48
|
+
},
|
49
|
+
};
|
50
|
+
const detailedJsonObserver = {
|
51
|
+
onFunctionEvent(event) {
|
52
|
+
// Remove the "response" property from the result (if any):
|
53
|
+
if (event.eventType === "finished" &&
|
54
|
+
event.result != null &&
|
55
|
+
"response" in event.result &&
|
56
|
+
event.result?.response != null) {
|
57
|
+
event = {
|
58
|
+
...event,
|
59
|
+
result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
61
|
+
),
|
62
|
+
};
|
63
|
+
}
|
64
|
+
// filter all undefined properties from event for cleaner console output:
|
65
|
+
event = Object.fromEntries(
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
67
|
+
Object.entries(event).filter(([_, v]) => v !== undefined));
|
68
|
+
console.log(JSON.stringify(event));
|
69
|
+
},
|
70
|
+
};
|
package/{run → core}/index.cjs
RENAMED
@@ -14,12 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
__exportStar(require("./ConsoleLogger.cjs"), exports);
|
18
17
|
__exportStar(require("./DefaultRun.cjs"), exports);
|
19
18
|
__exportStar(require("./FunctionEvent.cjs"), exports);
|
20
19
|
__exportStar(require("./FunctionEventSource.cjs"), exports);
|
21
20
|
__exportStar(require("./FunctionObserver.cjs"), exports);
|
22
21
|
__exportStar(require("./FunctionOptions.cjs"), exports);
|
22
|
+
__exportStar(require("./GlobalFunctionLogging.cjs"), exports);
|
23
23
|
__exportStar(require("./GlobalFunctionObservers.cjs"), exports);
|
24
24
|
__exportStar(require("./Run.cjs"), exports);
|
25
25
|
__exportStar(require("./Vector.cjs"), exports);
|
package/{run → core}/index.d.ts
RENAMED
@@ -1,9 +1,9 @@
|
|
1
|
-
export * from "./ConsoleLogger.js";
|
2
1
|
export * from "./DefaultRun.js";
|
3
2
|
export * from "./FunctionEvent.js";
|
4
3
|
export * from "./FunctionEventSource.js";
|
5
4
|
export * from "./FunctionObserver.js";
|
6
5
|
export * from "./FunctionOptions.js";
|
6
|
+
export * from "./GlobalFunctionLogging.js";
|
7
7
|
export * from "./GlobalFunctionObservers.js";
|
8
8
|
export * from "./Run.js";
|
9
9
|
export * from "./Vector.js";
|
package/{run → core}/index.js
RENAMED
@@ -1,9 +1,9 @@
|
|
1
|
-
export * from "./ConsoleLogger.js";
|
2
1
|
export * from "./DefaultRun.js";
|
3
2
|
export * from "./FunctionEvent.js";
|
4
3
|
export * from "./FunctionEventSource.js";
|
5
4
|
export * from "./FunctionObserver.js";
|
6
5
|
export * from "./FunctionOptions.js";
|
6
|
+
export * from "./GlobalFunctionLogging.js";
|
7
7
|
export * from "./GlobalFunctionObservers.js";
|
8
8
|
export * from "./Run.js";
|
9
9
|
export * from "./Vector.js";
|
package/index.cjs
CHANGED
@@ -15,11 +15,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
__exportStar(require("./composed-function/index.cjs"), exports);
|
18
|
+
__exportStar(require("./core/index.cjs"), exports);
|
18
19
|
__exportStar(require("./cost/index.cjs"), exports);
|
19
20
|
__exportStar(require("./model-function/index.cjs"), exports);
|
20
21
|
__exportStar(require("./model-provider/index.cjs"), exports);
|
21
22
|
__exportStar(require("./prompt/index.cjs"), exports);
|
22
|
-
__exportStar(require("./run/index.cjs"), exports);
|
23
23
|
__exportStar(require("./text-chunk/index.cjs"), exports);
|
24
24
|
__exportStar(require("./tool/index.cjs"), exports);
|
25
25
|
__exportStar(require("./util/index.cjs"), exports);
|
package/index.d.ts
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
export * from "./composed-function/index.js";
|
2
|
+
export * from "./core/index.js";
|
2
3
|
export * from "./cost/index.js";
|
3
4
|
export * from "./model-function/index.js";
|
4
5
|
export * from "./model-provider/index.js";
|
5
6
|
export * from "./prompt/index.js";
|
6
|
-
export * from "./run/index.js";
|
7
7
|
export * from "./text-chunk/index.js";
|
8
8
|
export * from "./tool/index.js";
|
9
9
|
export * from "./util/index.js";
|
package/index.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
export * from "./composed-function/index.js";
|
2
|
+
export * from "./core/index.js";
|
2
3
|
export * from "./cost/index.js";
|
3
4
|
export * from "./model-function/index.js";
|
4
5
|
export * from "./model-provider/index.js";
|
5
6
|
export * from "./prompt/index.js";
|
6
|
-
export * from "./run/index.js";
|
7
7
|
export * from "./text-chunk/index.js";
|
8
8
|
export * from "./tool/index.js";
|
9
9
|
export * from "./util/index.js";
|
@@ -7,6 +7,7 @@ export declare abstract class AbstractModel<SETTINGS extends ModelSettings> impl
|
|
7
7
|
abstract readonly provider: string;
|
8
8
|
abstract readonly modelName: string | null;
|
9
9
|
get modelInformation(): ModelInformation;
|
10
|
+
abstract get settingsForEvent(): Partial<SETTINGS>;
|
10
11
|
readonly settings: SETTINGS;
|
11
12
|
abstract withSettings(additionalSettings: Partial<SETTINGS>): this;
|
12
13
|
}
|
@@ -1,14 +1,19 @@
|
|
1
1
|
import { ModelInformation } from "./ModelInformation.js";
|
2
|
-
import { FunctionObserver } from "../
|
2
|
+
import { FunctionObserver } from "../core/FunctionObserver.js";
|
3
3
|
export interface ModelSettings {
|
4
4
|
/**
|
5
5
|
* Observers that are called when the model is used in run functions.
|
6
6
|
*/
|
7
7
|
observers?: Array<FunctionObserver>;
|
8
8
|
}
|
9
|
-
export interface Model<SETTINGS> {
|
9
|
+
export interface Model<SETTINGS extends ModelSettings> {
|
10
10
|
modelInformation: ModelInformation;
|
11
11
|
readonly settings: SETTINGS;
|
12
|
+
/**
|
13
|
+
* Returns settings that should be recorded in observability events.
|
14
|
+
* Security-related settings (e.g. API keys) should not be included here.
|
15
|
+
*/
|
16
|
+
get settingsForEvent(): Partial<SETTINGS>;
|
12
17
|
/**
|
13
18
|
* The `withSettings` method creates a new model with the same configuration as the original model, but with the specified settings changed.
|
14
19
|
*
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../
|
1
|
+
import { BaseFunctionFinishedEvent, BaseFunctionStartedEvent } from "../core/FunctionEvent.js";
|
2
2
|
import { ModelInformation } from "./ModelInformation.js";
|
3
3
|
import { TextEmbeddingFinishedEvent, TextEmbeddingStartedEvent } from "./embed-text/TextEmbeddingEvent.js";
|
4
4
|
import { ImageGenerationFinishedEvent, ImageGenerationStartedEvent } from "./generate-image/ImageGenerationEvent.js";
|
@@ -7,11 +7,45 @@ import { TextGenerationFinishedEvent, TextGenerationStartedEvent } from "./gener
|
|
7
7
|
import { TextStreamingFinishedEvent, TextStreamingStartedEvent } from "./generate-text/TextStreamingEvent.js";
|
8
8
|
import { SpeechSynthesisFinishedEvent, SpeechSynthesisStartedEvent } from "./synthesize-speech/SpeechSynthesisEvent.js";
|
9
9
|
import { TranscriptionFinishedEvent, TranscriptionStartedEvent } from "./transcribe-speech/TranscriptionEvent.js";
|
10
|
-
export
|
10
|
+
export interface BaseModelCallStartedEvent extends BaseFunctionStartedEvent {
|
11
11
|
model: ModelInformation;
|
12
|
+
/**
|
13
|
+
* The main input to the model call. The type depends on the call type or model.
|
14
|
+
*/
|
15
|
+
input: unknown;
|
16
|
+
/**
|
17
|
+
* The model settings used for the call. The type depends on the model.
|
18
|
+
*/
|
19
|
+
settings: unknown;
|
20
|
+
}
|
21
|
+
export type BaseModelCallFinishedEventResult = {
|
22
|
+
status: "success";
|
23
|
+
response: unknown;
|
24
|
+
output: unknown;
|
25
|
+
/**
|
26
|
+
* Optional usage information for the model call. The type depends on the call type.
|
27
|
+
*/
|
28
|
+
usage?: unknown;
|
29
|
+
} | {
|
30
|
+
status: "error";
|
31
|
+
error: unknown;
|
32
|
+
} | {
|
33
|
+
status: "abort";
|
12
34
|
};
|
13
|
-
export
|
14
|
-
export type BaseModelCallFinishedEvent = BaseFunctionFinishedEvent & {
|
35
|
+
export interface BaseModelCallFinishedEvent extends BaseFunctionFinishedEvent {
|
15
36
|
model: ModelInformation;
|
16
|
-
|
37
|
+
/**
|
38
|
+
* The main input to the model call. The type depends on the call type or model.
|
39
|
+
*/
|
40
|
+
input: unknown;
|
41
|
+
/**
|
42
|
+
* The model settings used for the call. The type depends on the model.
|
43
|
+
*/
|
44
|
+
settings: unknown;
|
45
|
+
/**
|
46
|
+
* The result of the model call. Can be "success", "error", or "abort". Additional information is provided depending on the status.
|
47
|
+
*/
|
48
|
+
result: BaseModelCallFinishedEventResult;
|
49
|
+
}
|
50
|
+
export type ModelCallStartedEvent = ImageGenerationStartedEvent | JsonGenerationStartedEvent | SpeechSynthesisStartedEvent | TextEmbeddingStartedEvent | TextGenerationStartedEvent | TextStreamingStartedEvent | TranscriptionStartedEvent;
|
17
51
|
export type ModelCallFinishedEvent = ImageGenerationFinishedEvent | JsonGenerationFinishedEvent | SpeechSynthesisFinishedEvent | TextEmbeddingFinishedEvent | TextGenerationFinishedEvent | TextStreamingFinishedEvent | TranscriptionFinishedEvent;
|
@@ -3,11 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractSuccessfulModelCalls = void 0;
|
4
4
|
function extractSuccessfulModelCalls(runFunctionEvents) {
|
5
5
|
return runFunctionEvents
|
6
|
-
.filter((event) => "
|
6
|
+
.filter((event) => "result" in event &&
|
7
|
+
"status" in event.result &&
|
8
|
+
event.result.status === "success")
|
7
9
|
.map((event) => ({
|
8
10
|
model: event.model,
|
9
11
|
settings: event.settings,
|
10
|
-
response: event.response,
|
12
|
+
response: event.result.response,
|
11
13
|
type: event.functionType,
|
12
14
|
}));
|
13
15
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { FunctionEvent } from "../
|
1
|
+
import { FunctionEvent } from "../core/FunctionEvent.js";
|
2
2
|
import { ModelInformation } from "./ModelInformation.js";
|
3
3
|
export type SuccessfulModelCall = {
|
4
4
|
type: "image-generation" | "json-generation" | "json-or-text-generation" | "speech-synthesis" | "text-embedding" | "text-generation" | "text-streaming" | "transcription";
|
@@ -1,10 +1,12 @@
|
|
1
1
|
export function extractSuccessfulModelCalls(runFunctionEvents) {
|
2
2
|
return runFunctionEvents
|
3
|
-
.filter((event) => "
|
3
|
+
.filter((event) => "result" in event &&
|
4
|
+
"status" in event.result &&
|
5
|
+
event.result.status === "success")
|
4
6
|
.map((event) => ({
|
5
7
|
model: event.model,
|
6
8
|
settings: event.settings,
|
7
|
-
response: event.response,
|
9
|
+
response: event.result.response,
|
8
10
|
type: event.functionType,
|
9
11
|
}));
|
10
12
|
}
|
@@ -1,21 +1,21 @@
|
|
1
|
-
import { Vector } from "../../
|
1
|
+
import { Vector } from "../../core/Vector.js";
|
2
2
|
import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
|
3
|
-
export
|
3
|
+
export interface TextEmbeddingStartedEvent extends BaseModelCallStartedEvent {
|
4
4
|
functionType: "text-embedding";
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
export type TextEmbeddingFinishedEvent = BaseModelCallFinishedEvent & {
|
9
|
-
functionType: "text-embedding";
|
10
|
-
settings: unknown;
|
11
|
-
texts: Array<string>;
|
12
|
-
} & ({
|
5
|
+
input: string | Array<string>;
|
6
|
+
}
|
7
|
+
export type TextEmbeddingFinishedEventResult = {
|
13
8
|
status: "success";
|
14
9
|
response: unknown;
|
15
|
-
|
10
|
+
output: Vector | Array<Vector>;
|
16
11
|
} | {
|
17
12
|
status: "error";
|
18
13
|
error: unknown;
|
19
14
|
} | {
|
20
15
|
status: "abort";
|
21
|
-
}
|
16
|
+
};
|
17
|
+
export interface TextEmbeddingFinishedEvent extends BaseModelCallFinishedEvent {
|
18
|
+
functionType: "text-embedding";
|
19
|
+
input: string | Array<string>;
|
20
|
+
result: TextEmbeddingFinishedEventResult;
|
21
|
+
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Vector } from "../../
|
1
|
+
import { Vector } from "../../core/Vector.js";
|
2
2
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
3
3
|
import { Model, ModelSettings } from "../Model.js";
|
4
4
|
export interface TextEmbeddingModelSettings extends ModelSettings {
|