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
@@ -16,6 +16,8 @@ const executeCall_js_1 = require("../executeCall.cjs");
|
|
16
16
|
*/
|
17
17
|
function embedTexts(model, texts, options) {
|
18
18
|
return (0, executeCall_js_1.executeCall)({
|
19
|
+
functionType: "text-embedding",
|
20
|
+
input: texts,
|
19
21
|
model,
|
20
22
|
options,
|
21
23
|
generateResponse: (options) => {
|
@@ -34,33 +36,6 @@ function embedTexts(model, texts, options) {
|
|
34
36
|
}
|
35
37
|
return embeddings;
|
36
38
|
},
|
37
|
-
getStartEvent: (metadata, settings) => ({
|
38
|
-
...metadata,
|
39
|
-
functionType: "text-embedding",
|
40
|
-
settings,
|
41
|
-
texts,
|
42
|
-
}),
|
43
|
-
getAbortEvent: (metadata, settings) => ({
|
44
|
-
...metadata,
|
45
|
-
functionType: "text-embedding",
|
46
|
-
settings,
|
47
|
-
texts,
|
48
|
-
}),
|
49
|
-
getFailureEvent: (metadata, settings, error) => ({
|
50
|
-
...metadata,
|
51
|
-
functionType: "text-embedding",
|
52
|
-
settings,
|
53
|
-
error,
|
54
|
-
texts,
|
55
|
-
}),
|
56
|
-
getSuccessEvent: (metadata, settings, response, output) => ({
|
57
|
-
...metadata,
|
58
|
-
functionType: "text-embedding",
|
59
|
-
settings,
|
60
|
-
texts,
|
61
|
-
response,
|
62
|
-
generatedEmbeddings: output,
|
63
|
-
}),
|
64
39
|
});
|
65
40
|
}
|
66
41
|
exports.embedTexts = embedTexts;
|
@@ -74,43 +49,13 @@ exports.embedTexts = embedTexts;
|
|
74
49
|
* );
|
75
50
|
*/
|
76
51
|
function embedText(model, text, options) {
|
77
|
-
const texts = [text];
|
78
52
|
return (0, executeCall_js_1.executeCall)({
|
53
|
+
functionType: "text-embedding",
|
54
|
+
input: text,
|
79
55
|
model,
|
80
56
|
options,
|
81
|
-
generateResponse: (options) =>
|
82
|
-
|
83
|
-
},
|
84
|
-
extractOutputValue: (result) => {
|
85
|
-
return model.extractEmbeddings(result)[0];
|
86
|
-
},
|
87
|
-
getStartEvent: (metadata, settings) => ({
|
88
|
-
...metadata,
|
89
|
-
functionType: "text-embedding",
|
90
|
-
settings,
|
91
|
-
texts,
|
92
|
-
}),
|
93
|
-
getAbortEvent: (metadata, settings) => ({
|
94
|
-
...metadata,
|
95
|
-
functionType: "text-embedding",
|
96
|
-
settings,
|
97
|
-
texts,
|
98
|
-
}),
|
99
|
-
getFailureEvent: (metadata, settings, error) => ({
|
100
|
-
...metadata,
|
101
|
-
functionType: "text-embedding",
|
102
|
-
settings,
|
103
|
-
error,
|
104
|
-
texts,
|
105
|
-
}),
|
106
|
-
getSuccessEvent: (metadata, settings, response, output) => ({
|
107
|
-
...metadata,
|
108
|
-
functionType: "text-embedding",
|
109
|
-
settings,
|
110
|
-
texts,
|
111
|
-
response,
|
112
|
-
generatedEmbeddings: [output],
|
113
|
-
}),
|
57
|
+
generateResponse: (options) => model.generateEmbeddingResponse([text], options),
|
58
|
+
extractOutputValue: (result) => model.extractEmbeddings(result)[0],
|
114
59
|
});
|
115
60
|
}
|
116
61
|
exports.embedText = embedText;
|
@@ -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 { ModelFunctionPromise } from "../executeCall.js";
|
4
4
|
import { TextEmbeddingModel, TextEmbeddingModelSettings } from "./TextEmbeddingModel.js";
|
@@ -14,7 +14,7 @@ import { TextEmbeddingModel, TextEmbeddingModelSettings } from "./TextEmbeddingM
|
|
14
14
|
* ]
|
15
15
|
* );
|
16
16
|
*/
|
17
|
-
export declare function embedTexts<RESPONSE, SETTINGS extends TextEmbeddingModelSettings>(model: TextEmbeddingModel<RESPONSE, SETTINGS>, texts: string[], options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<
|
17
|
+
export declare function embedTexts<RESPONSE, SETTINGS extends TextEmbeddingModelSettings>(model: TextEmbeddingModel<RESPONSE, SETTINGS>, texts: string[], options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<Vector[], RESPONSE[]>;
|
18
18
|
/**
|
19
19
|
* Generate an embedding for a single text.
|
20
20
|
*
|
@@ -24,4 +24,4 @@ export declare function embedTexts<RESPONSE, SETTINGS extends TextEmbeddingModel
|
|
24
24
|
* "At first, Nox didn't know what to do with the pup."
|
25
25
|
* );
|
26
26
|
*/
|
27
|
-
export declare function embedText<RESPONSE, SETTINGS extends TextEmbeddingModelSettings>(model: TextEmbeddingModel<RESPONSE, SETTINGS>, text: string, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<
|
27
|
+
export declare function embedText<RESPONSE, SETTINGS extends TextEmbeddingModelSettings>(model: TextEmbeddingModel<RESPONSE, SETTINGS>, text: string, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<Vector, RESPONSE>;
|
@@ -13,6 +13,8 @@ import { executeCall } from "../executeCall.js";
|
|
13
13
|
*/
|
14
14
|
export function embedTexts(model, texts, options) {
|
15
15
|
return executeCall({
|
16
|
+
functionType: "text-embedding",
|
17
|
+
input: texts,
|
16
18
|
model,
|
17
19
|
options,
|
18
20
|
generateResponse: (options) => {
|
@@ -31,33 +33,6 @@ export function embedTexts(model, texts, options) {
|
|
31
33
|
}
|
32
34
|
return embeddings;
|
33
35
|
},
|
34
|
-
getStartEvent: (metadata, settings) => ({
|
35
|
-
...metadata,
|
36
|
-
functionType: "text-embedding",
|
37
|
-
settings,
|
38
|
-
texts,
|
39
|
-
}),
|
40
|
-
getAbortEvent: (metadata, settings) => ({
|
41
|
-
...metadata,
|
42
|
-
functionType: "text-embedding",
|
43
|
-
settings,
|
44
|
-
texts,
|
45
|
-
}),
|
46
|
-
getFailureEvent: (metadata, settings, error) => ({
|
47
|
-
...metadata,
|
48
|
-
functionType: "text-embedding",
|
49
|
-
settings,
|
50
|
-
error,
|
51
|
-
texts,
|
52
|
-
}),
|
53
|
-
getSuccessEvent: (metadata, settings, response, output) => ({
|
54
|
-
...metadata,
|
55
|
-
functionType: "text-embedding",
|
56
|
-
settings,
|
57
|
-
texts,
|
58
|
-
response,
|
59
|
-
generatedEmbeddings: output,
|
60
|
-
}),
|
61
36
|
});
|
62
37
|
}
|
63
38
|
/**
|
@@ -70,42 +45,12 @@ export function embedTexts(model, texts, options) {
|
|
70
45
|
* );
|
71
46
|
*/
|
72
47
|
export function embedText(model, text, options) {
|
73
|
-
const texts = [text];
|
74
48
|
return executeCall({
|
49
|
+
functionType: "text-embedding",
|
50
|
+
input: text,
|
75
51
|
model,
|
76
52
|
options,
|
77
|
-
generateResponse: (options) =>
|
78
|
-
|
79
|
-
},
|
80
|
-
extractOutputValue: (result) => {
|
81
|
-
return model.extractEmbeddings(result)[0];
|
82
|
-
},
|
83
|
-
getStartEvent: (metadata, settings) => ({
|
84
|
-
...metadata,
|
85
|
-
functionType: "text-embedding",
|
86
|
-
settings,
|
87
|
-
texts,
|
88
|
-
}),
|
89
|
-
getAbortEvent: (metadata, settings) => ({
|
90
|
-
...metadata,
|
91
|
-
functionType: "text-embedding",
|
92
|
-
settings,
|
93
|
-
texts,
|
94
|
-
}),
|
95
|
-
getFailureEvent: (metadata, settings, error) => ({
|
96
|
-
...metadata,
|
97
|
-
functionType: "text-embedding",
|
98
|
-
settings,
|
99
|
-
error,
|
100
|
-
texts,
|
101
|
-
}),
|
102
|
-
getSuccessEvent: (metadata, settings, response, output) => ({
|
103
|
-
...metadata,
|
104
|
-
functionType: "text-embedding",
|
105
|
-
settings,
|
106
|
-
texts,
|
107
|
-
response,
|
108
|
-
generatedEmbeddings: [output],
|
109
|
-
}),
|
53
|
+
generateResponse: (options) => model.generateEmbeddingResponse([text], options),
|
54
|
+
extractOutputValue: (result) => model.extractEmbeddings(result)[0],
|
110
55
|
});
|
111
56
|
}
|
@@ -1,25 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.executeCall = exports.ModelFunctionPromise = void 0;
|
4
4
|
const nanoid_1 = require("nanoid");
|
5
|
-
const FunctionEventSource_js_1 = require("../
|
6
|
-
const
|
5
|
+
const FunctionEventSource_js_1 = require("../core/FunctionEventSource.cjs");
|
6
|
+
const GlobalFunctionLogging_js_1 = require("../core/GlobalFunctionLogging.cjs");
|
7
|
+
const GlobalFunctionObservers_js_1 = require("../core/GlobalFunctionObservers.cjs");
|
8
|
+
const getFunctionCallLogger_js_1 = require("../core/getFunctionCallLogger.cjs");
|
7
9
|
const DurationMeasurement_js_1 = require("../util/DurationMeasurement.cjs");
|
8
10
|
const AbortError_js_1 = require("../util/api/AbortError.cjs");
|
9
11
|
const runSafe_js_1 = require("../util/runSafe.cjs");
|
10
|
-
function executeCall({ model, options, getStartEvent, getAbortEvent, getFailureEvent, getSuccessEvent, generateResponse, extractOutputValue, }) {
|
11
|
-
return new ModelFunctionPromise(doExecuteCall({
|
12
|
-
model,
|
13
|
-
options,
|
14
|
-
getStartEvent,
|
15
|
-
getAbortEvent,
|
16
|
-
getFailureEvent,
|
17
|
-
getSuccessEvent,
|
18
|
-
generateResponse,
|
19
|
-
extractOutputValue,
|
20
|
-
}));
|
21
|
-
}
|
22
|
-
exports.executeCall = executeCall;
|
23
12
|
class ModelFunctionPromise extends Promise {
|
24
13
|
constructor(fullPromise) {
|
25
14
|
super((resolve) => {
|
@@ -54,11 +43,24 @@ class ModelFunctionPromise extends Promise {
|
|
54
43
|
}
|
55
44
|
}
|
56
45
|
exports.ModelFunctionPromise = ModelFunctionPromise;
|
57
|
-
|
46
|
+
function executeCall({ model, options, input, functionType, generateResponse, extractOutputValue, extractUsage, }) {
|
47
|
+
return new ModelFunctionPromise(doExecuteCall({
|
48
|
+
model,
|
49
|
+
options,
|
50
|
+
input,
|
51
|
+
functionType,
|
52
|
+
generateResponse,
|
53
|
+
extractOutputValue,
|
54
|
+
extractUsage,
|
55
|
+
}));
|
56
|
+
}
|
57
|
+
exports.executeCall = executeCall;
|
58
|
+
async function doExecuteCall({ model, options, input, functionType, generateResponse, extractOutputValue, extractUsage, }) {
|
58
59
|
if (options?.settings != null) {
|
59
60
|
model = model.withSettings(options.settings);
|
60
61
|
options = {
|
61
62
|
functionId: options.functionId,
|
63
|
+
logging: options.logging,
|
62
64
|
observers: options.observers,
|
63
65
|
run: options.run,
|
64
66
|
};
|
@@ -67,6 +69,7 @@ async function doExecuteCall({ model, options, getStartEvent, getAbortEvent, get
|
|
67
69
|
const settings = model.settings;
|
68
70
|
const eventSource = new FunctionEventSource_js_1.FunctionEventSource({
|
69
71
|
observers: [
|
72
|
+
...(0, getFunctionCallLogger_js_1.getFunctionCallLogger)(options?.logging ?? (0, GlobalFunctionLogging_js_1.getGlobalFunctionLogging)()),
|
70
73
|
...(0, GlobalFunctionObservers_js_1.getGlobalFunctionObservers)(),
|
71
74
|
...(settings.observers ?? []),
|
72
75
|
...(run?.observers ?? []),
|
@@ -76,50 +79,67 @@ async function doExecuteCall({ model, options, getStartEvent, getAbortEvent, get
|
|
76
79
|
});
|
77
80
|
const durationMeasurement = (0, DurationMeasurement_js_1.startDurationMeasurement)();
|
78
81
|
const startMetadata = {
|
82
|
+
functionType,
|
79
83
|
callId: `call-${(0, nanoid_1.nanoid)()}`,
|
80
84
|
runId: run?.runId,
|
81
85
|
sessionId: run?.sessionId,
|
82
86
|
userId: run?.userId,
|
83
87
|
functionId: options?.functionId,
|
84
88
|
model: model.modelInformation,
|
89
|
+
settings: model.settingsForEvent,
|
90
|
+
input,
|
85
91
|
timestamp: durationMeasurement.startDate,
|
86
92
|
startTimestamp: durationMeasurement.startDate,
|
87
93
|
};
|
88
|
-
eventSource.notify(
|
89
|
-
...startMetadata,
|
94
|
+
eventSource.notify({
|
90
95
|
eventType: "started",
|
91
|
-
|
96
|
+
...startMetadata,
|
97
|
+
});
|
92
98
|
const result = await (0, runSafe_js_1.runSafe)(() => generateResponse({
|
93
99
|
functionId: options?.functionId,
|
94
100
|
settings,
|
95
101
|
run,
|
96
102
|
}));
|
97
103
|
const finishMetadata = {
|
98
|
-
...startMetadata,
|
99
104
|
eventType: "finished",
|
105
|
+
...startMetadata,
|
100
106
|
finishTimestamp: new Date(),
|
101
107
|
durationInMs: durationMeasurement.durationInMs,
|
102
108
|
};
|
103
109
|
if (!result.ok) {
|
104
110
|
if (result.isAborted) {
|
105
|
-
eventSource.notify(
|
111
|
+
eventSource.notify({
|
106
112
|
...finishMetadata,
|
107
|
-
|
108
|
-
|
113
|
+
eventType: "finished",
|
114
|
+
result: {
|
115
|
+
status: "abort",
|
116
|
+
},
|
117
|
+
});
|
109
118
|
throw new AbortError_js_1.AbortError();
|
110
119
|
}
|
111
|
-
eventSource.notify(
|
120
|
+
eventSource.notify({
|
112
121
|
...finishMetadata,
|
113
|
-
|
114
|
-
|
122
|
+
eventType: "finished",
|
123
|
+
result: {
|
124
|
+
status: "error",
|
125
|
+
error: result.error,
|
126
|
+
},
|
127
|
+
});
|
115
128
|
throw result.error;
|
116
129
|
}
|
117
130
|
const response = result.output;
|
118
131
|
const output = extractOutputValue(response);
|
119
|
-
|
132
|
+
const usage = extractUsage?.(response);
|
133
|
+
eventSource.notify({
|
120
134
|
...finishMetadata,
|
121
|
-
|
122
|
-
|
135
|
+
eventType: "finished",
|
136
|
+
result: {
|
137
|
+
status: "success",
|
138
|
+
usage,
|
139
|
+
response,
|
140
|
+
output,
|
141
|
+
},
|
142
|
+
});
|
123
143
|
return {
|
124
144
|
output,
|
125
145
|
response,
|
@@ -1,47 +1,41 @@
|
|
1
1
|
import { Model, ModelSettings } from "./Model.js";
|
2
|
-
import {
|
2
|
+
import { ModelCallStartedEvent } from "./ModelCallEvent.js";
|
3
3
|
import { ModelFunctionOptions } from "./ModelFunctionOptions.js";
|
4
|
-
|
4
|
+
import { ModelInformation } from "./ModelInformation.js";
|
5
|
+
export type ModelCallMetadata = {
|
5
6
|
callId: string;
|
6
7
|
runId?: string;
|
7
8
|
sessionId?: string;
|
8
9
|
userId?: string;
|
9
10
|
functionId?: string;
|
10
|
-
model: MODEL["modelInformation"];
|
11
11
|
startTimestamp: Date;
|
12
12
|
finishTimestamp: Date;
|
13
13
|
durationInMs: number;
|
14
|
+
model: ModelInformation;
|
14
15
|
};
|
15
|
-
export declare
|
16
|
-
model: MODEL;
|
17
|
-
options?: ModelFunctionOptions<SETTINGS>;
|
18
|
-
getStartEvent: (metadata: Omit<BaseModelCallStartedEvent, "functionType">, settings: SETTINGS) => ModelCallStartedEvent;
|
19
|
-
getAbortEvent: (metadata: Omit<BaseModelCallFinishedEvent & {
|
20
|
-
status: "abort";
|
21
|
-
}, "functionType">, settings: SETTINGS) => ModelCallFinishedEvent;
|
22
|
-
getFailureEvent: (metadata: Omit<BaseModelCallFinishedEvent & {
|
23
|
-
status: "error";
|
24
|
-
}, "functionType">, settings: SETTINGS, error: unknown) => ModelCallFinishedEvent;
|
25
|
-
getSuccessEvent: (metadata: Omit<BaseModelCallFinishedEvent & {
|
26
|
-
status: "success";
|
27
|
-
}, "functionType">, settings: SETTINGS, response: RESPONSE, output: OUTPUT) => ModelCallFinishedEvent;
|
28
|
-
generateResponse: (options: ModelFunctionOptions<SETTINGS>) => PromiseLike<RESPONSE>;
|
29
|
-
extractOutputValue: (response: RESPONSE) => OUTPUT;
|
30
|
-
}): ModelFunctionPromise<MODEL, OUTPUT, RESPONSE>;
|
31
|
-
export declare class ModelFunctionPromise<MODEL extends Model<any>, OUTPUT, RESPONSE> extends Promise<OUTPUT> {
|
16
|
+
export declare class ModelFunctionPromise<OUTPUT, RESPONSE> extends Promise<OUTPUT> {
|
32
17
|
private fullPromise;
|
33
18
|
private outputPromise;
|
34
19
|
constructor(fullPromise: Promise<{
|
35
20
|
output: OUTPUT;
|
36
21
|
response: RESPONSE;
|
37
|
-
metadata:
|
22
|
+
metadata: ModelCallMetadata;
|
38
23
|
}>);
|
39
24
|
asFullResponse(): Promise<{
|
40
25
|
output: OUTPUT;
|
41
26
|
response: RESPONSE;
|
42
|
-
metadata:
|
27
|
+
metadata: ModelCallMetadata;
|
43
28
|
}>;
|
44
29
|
then<TResult1 = OUTPUT, TResult2 = never>(onfulfilled?: ((value: OUTPUT) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
|
45
30
|
catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<OUTPUT | TResult>;
|
46
31
|
finally(onfinally?: (() => void) | undefined | null): Promise<OUTPUT>;
|
47
32
|
}
|
33
|
+
export declare function executeCall<SETTINGS extends ModelSettings, MODEL extends Model<SETTINGS>, OUTPUT, RESPONSE>({ model, options, input, functionType, generateResponse, extractOutputValue, extractUsage, }: {
|
34
|
+
model: MODEL;
|
35
|
+
options?: ModelFunctionOptions<SETTINGS>;
|
36
|
+
input: unknown;
|
37
|
+
functionType: ModelCallStartedEvent["functionType"];
|
38
|
+
generateResponse: (options: ModelFunctionOptions<SETTINGS>) => PromiseLike<RESPONSE>;
|
39
|
+
extractOutputValue: (response: RESPONSE) => OUTPUT;
|
40
|
+
extractUsage?: (response: RESPONSE) => unknown;
|
41
|
+
}): ModelFunctionPromise<OUTPUT, RESPONSE>;
|
@@ -1,21 +1,11 @@
|
|
1
1
|
import { nanoid as createId } from "nanoid";
|
2
|
-
import { FunctionEventSource } from "../
|
3
|
-
import {
|
2
|
+
import { FunctionEventSource } from "../core/FunctionEventSource.js";
|
3
|
+
import { getGlobalFunctionLogging } from "../core/GlobalFunctionLogging.js";
|
4
|
+
import { getGlobalFunctionObservers } from "../core/GlobalFunctionObservers.js";
|
5
|
+
import { getFunctionCallLogger } from "../core/getFunctionCallLogger.js";
|
4
6
|
import { startDurationMeasurement } from "../util/DurationMeasurement.js";
|
5
7
|
import { AbortError } from "../util/api/AbortError.js";
|
6
8
|
import { runSafe } from "../util/runSafe.js";
|
7
|
-
export function executeCall({ model, options, getStartEvent, getAbortEvent, getFailureEvent, getSuccessEvent, generateResponse, extractOutputValue, }) {
|
8
|
-
return new ModelFunctionPromise(doExecuteCall({
|
9
|
-
model,
|
10
|
-
options,
|
11
|
-
getStartEvent,
|
12
|
-
getAbortEvent,
|
13
|
-
getFailureEvent,
|
14
|
-
getSuccessEvent,
|
15
|
-
generateResponse,
|
16
|
-
extractOutputValue,
|
17
|
-
}));
|
18
|
-
}
|
19
9
|
export class ModelFunctionPromise extends Promise {
|
20
10
|
constructor(fullPromise) {
|
21
11
|
super((resolve) => {
|
@@ -49,11 +39,23 @@ export class ModelFunctionPromise extends Promise {
|
|
49
39
|
return this.outputPromise.finally(onfinally);
|
50
40
|
}
|
51
41
|
}
|
52
|
-
|
42
|
+
export function executeCall({ model, options, input, functionType, generateResponse, extractOutputValue, extractUsage, }) {
|
43
|
+
return new ModelFunctionPromise(doExecuteCall({
|
44
|
+
model,
|
45
|
+
options,
|
46
|
+
input,
|
47
|
+
functionType,
|
48
|
+
generateResponse,
|
49
|
+
extractOutputValue,
|
50
|
+
extractUsage,
|
51
|
+
}));
|
52
|
+
}
|
53
|
+
async function doExecuteCall({ model, options, input, functionType, generateResponse, extractOutputValue, extractUsage, }) {
|
53
54
|
if (options?.settings != null) {
|
54
55
|
model = model.withSettings(options.settings);
|
55
56
|
options = {
|
56
57
|
functionId: options.functionId,
|
58
|
+
logging: options.logging,
|
57
59
|
observers: options.observers,
|
58
60
|
run: options.run,
|
59
61
|
};
|
@@ -62,6 +64,7 @@ async function doExecuteCall({ model, options, getStartEvent, getAbortEvent, get
|
|
62
64
|
const settings = model.settings;
|
63
65
|
const eventSource = new FunctionEventSource({
|
64
66
|
observers: [
|
67
|
+
...getFunctionCallLogger(options?.logging ?? getGlobalFunctionLogging()),
|
65
68
|
...getGlobalFunctionObservers(),
|
66
69
|
...(settings.observers ?? []),
|
67
70
|
...(run?.observers ?? []),
|
@@ -71,50 +74,67 @@ async function doExecuteCall({ model, options, getStartEvent, getAbortEvent, get
|
|
71
74
|
});
|
72
75
|
const durationMeasurement = startDurationMeasurement();
|
73
76
|
const startMetadata = {
|
77
|
+
functionType,
|
74
78
|
callId: `call-${createId()}`,
|
75
79
|
runId: run?.runId,
|
76
80
|
sessionId: run?.sessionId,
|
77
81
|
userId: run?.userId,
|
78
82
|
functionId: options?.functionId,
|
79
83
|
model: model.modelInformation,
|
84
|
+
settings: model.settingsForEvent,
|
85
|
+
input,
|
80
86
|
timestamp: durationMeasurement.startDate,
|
81
87
|
startTimestamp: durationMeasurement.startDate,
|
82
88
|
};
|
83
|
-
eventSource.notify(
|
84
|
-
...startMetadata,
|
89
|
+
eventSource.notify({
|
85
90
|
eventType: "started",
|
86
|
-
|
91
|
+
...startMetadata,
|
92
|
+
});
|
87
93
|
const result = await runSafe(() => generateResponse({
|
88
94
|
functionId: options?.functionId,
|
89
95
|
settings,
|
90
96
|
run,
|
91
97
|
}));
|
92
98
|
const finishMetadata = {
|
93
|
-
...startMetadata,
|
94
99
|
eventType: "finished",
|
100
|
+
...startMetadata,
|
95
101
|
finishTimestamp: new Date(),
|
96
102
|
durationInMs: durationMeasurement.durationInMs,
|
97
103
|
};
|
98
104
|
if (!result.ok) {
|
99
105
|
if (result.isAborted) {
|
100
|
-
eventSource.notify(
|
106
|
+
eventSource.notify({
|
101
107
|
...finishMetadata,
|
102
|
-
|
103
|
-
|
108
|
+
eventType: "finished",
|
109
|
+
result: {
|
110
|
+
status: "abort",
|
111
|
+
},
|
112
|
+
});
|
104
113
|
throw new AbortError();
|
105
114
|
}
|
106
|
-
eventSource.notify(
|
115
|
+
eventSource.notify({
|
107
116
|
...finishMetadata,
|
108
|
-
|
109
|
-
|
117
|
+
eventType: "finished",
|
118
|
+
result: {
|
119
|
+
status: "error",
|
120
|
+
error: result.error,
|
121
|
+
},
|
122
|
+
});
|
110
123
|
throw result.error;
|
111
124
|
}
|
112
125
|
const response = result.output;
|
113
126
|
const output = extractOutputValue(response);
|
114
|
-
|
127
|
+
const usage = extractUsage?.(response);
|
128
|
+
eventSource.notify({
|
115
129
|
...finishMetadata,
|
116
|
-
|
117
|
-
|
130
|
+
eventType: "finished",
|
131
|
+
result: {
|
132
|
+
status: "success",
|
133
|
+
usage,
|
134
|
+
response,
|
135
|
+
output,
|
136
|
+
},
|
137
|
+
});
|
118
138
|
return {
|
119
139
|
output,
|
120
140
|
response,
|
@@ -1,20 +1,18 @@
|
|
1
1
|
import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
|
2
|
-
export
|
2
|
+
export interface ImageGenerationStartedEvent extends BaseModelCallStartedEvent {
|
3
3
|
functionType: "image-generation";
|
4
|
-
|
5
|
-
|
6
|
-
};
|
7
|
-
export type ImageGenerationFinishedEvent = BaseModelCallFinishedEvent & {
|
8
|
-
functionType: "image-generation";
|
9
|
-
settings: unknown;
|
10
|
-
prompt: unknown;
|
11
|
-
} & ({
|
4
|
+
}
|
5
|
+
export type ImageGenerationFinishedEventResult = {
|
12
6
|
status: "success";
|
13
7
|
response: unknown;
|
14
|
-
|
8
|
+
output: string;
|
15
9
|
} | {
|
16
10
|
status: "error";
|
17
11
|
error: unknown;
|
18
12
|
} | {
|
19
13
|
status: "abort";
|
20
|
-
}
|
14
|
+
};
|
15
|
+
export interface ImageGenerationFinishedEvent extends BaseModelCallFinishedEvent {
|
16
|
+
functionType: "image-generation";
|
17
|
+
result: ImageGenerationFinishedEventResult;
|
18
|
+
}
|
@@ -19,37 +19,12 @@ const executeCall_js_1 = require("../executeCall.cjs");
|
|
19
19
|
*/
|
20
20
|
function generateImage(model, prompt, options) {
|
21
21
|
return (0, executeCall_js_1.executeCall)({
|
22
|
+
functionType: "image-generation",
|
23
|
+
input: prompt,
|
22
24
|
model,
|
23
25
|
options,
|
24
26
|
generateResponse: (options) => model.generateImageResponse(prompt, options),
|
25
27
|
extractOutputValue: model.extractBase64Image,
|
26
|
-
getStartEvent: (metadata, settings) => ({
|
27
|
-
...metadata,
|
28
|
-
functionType: "image-generation",
|
29
|
-
settings,
|
30
|
-
prompt,
|
31
|
-
}),
|
32
|
-
getAbortEvent: (metadata, settings) => ({
|
33
|
-
...metadata,
|
34
|
-
functionType: "image-generation",
|
35
|
-
settings,
|
36
|
-
prompt,
|
37
|
-
}),
|
38
|
-
getFailureEvent: (metadata, settings, error) => ({
|
39
|
-
...metadata,
|
40
|
-
functionType: "image-generation",
|
41
|
-
settings,
|
42
|
-
prompt,
|
43
|
-
error,
|
44
|
-
}),
|
45
|
-
getSuccessEvent: (metadata, settings, response, output) => ({
|
46
|
-
...metadata,
|
47
|
-
functionType: "image-generation",
|
48
|
-
settings,
|
49
|
-
prompt,
|
50
|
-
response,
|
51
|
-
generatedImage: output,
|
52
|
-
}),
|
53
28
|
});
|
54
29
|
}
|
55
30
|
exports.generateImage = generateImage;
|
@@ -16,4 +16,4 @@ import { ImageGenerationModel, ImageGenerationModelSettings } from "./ImageGener
|
|
16
16
|
* ]
|
17
17
|
* );
|
18
18
|
*/
|
19
|
-
export declare function generateImage<PROMPT, RESPONSE, SETTINGS extends ImageGenerationModelSettings>(model: ImageGenerationModel<PROMPT, RESPONSE, SETTINGS>, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<
|
19
|
+
export declare function generateImage<PROMPT, RESPONSE, SETTINGS extends ImageGenerationModelSettings>(model: ImageGenerationModel<PROMPT, RESPONSE, SETTINGS>, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<string, RESPONSE>;
|
@@ -16,36 +16,11 @@ import { executeCall } from "../executeCall.js";
|
|
16
16
|
*/
|
17
17
|
export function generateImage(model, prompt, options) {
|
18
18
|
return executeCall({
|
19
|
+
functionType: "image-generation",
|
20
|
+
input: prompt,
|
19
21
|
model,
|
20
22
|
options,
|
21
23
|
generateResponse: (options) => model.generateImageResponse(prompt, options),
|
22
24
|
extractOutputValue: model.extractBase64Image,
|
23
|
-
getStartEvent: (metadata, settings) => ({
|
24
|
-
...metadata,
|
25
|
-
functionType: "image-generation",
|
26
|
-
settings,
|
27
|
-
prompt,
|
28
|
-
}),
|
29
|
-
getAbortEvent: (metadata, settings) => ({
|
30
|
-
...metadata,
|
31
|
-
functionType: "image-generation",
|
32
|
-
settings,
|
33
|
-
prompt,
|
34
|
-
}),
|
35
|
-
getFailureEvent: (metadata, settings, error) => ({
|
36
|
-
...metadata,
|
37
|
-
functionType: "image-generation",
|
38
|
-
settings,
|
39
|
-
prompt,
|
40
|
-
error,
|
41
|
-
}),
|
42
|
-
getSuccessEvent: (metadata, settings, response, output) => ({
|
43
|
-
...metadata,
|
44
|
-
functionType: "image-generation",
|
45
|
-
settings,
|
46
|
-
prompt,
|
47
|
-
response,
|
48
|
-
generatedImage: output,
|
49
|
-
}),
|
50
25
|
});
|
51
26
|
}
|