modelfusion 0.22.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/core/FunctionOptions.d.ts +14 -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/core/index.cjs +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +1 -1
- package/model-function/AbstractModel.d.ts +1 -0
- package/model-function/Model.d.ts +6 -1
- package/model-function/ModelCallEvent.d.ts +21 -2
- package/model-function/embed-text/embedText.d.ts +2 -2
- package/model-function/executeCall.cjs +24 -17
- package/model-function/executeCall.d.ts +15 -13
- package/model-function/executeCall.js +22 -15
- package/model-function/generate-image/generateImage.d.ts +1 -1
- package/model-function/generate-json/JsonGenerationEvent.d.ts +16 -0
- 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 +1 -0
- package/model-function/generate-json/generateJson.d.ts +2 -2
- package/model-function/generate-json/generateJson.js +1 -0
- package/model-function/generate-json/generateJsonOrText.cjs +1 -0
- package/model-function/generate-json/generateJsonOrText.d.ts +2 -2
- package/model-function/generate-json/generateJsonOrText.js +1 -0
- package/model-function/generate-text/TextGenerationEvent.d.ts +5 -2
- package/model-function/generate-text/TextGenerationModel.d.ts +5 -0
- package/model-function/generate-text/generateText.cjs +1 -0
- package/model-function/generate-text/generateText.d.ts +1 -1
- package/model-function/generate-text/generateText.js +1 -0
- package/model-function/generate-text/streamText.cjs +9 -6
- package/model-function/generate-text/streamText.d.ts +5 -5
- package/model-function/generate-text/streamText.js +9 -6
- 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 +2 -2
- package/model-function/synthesize-speech/SpeechSynthesisModel.d.ts +1 -1
- package/model-function/synthesize-speech/synthesizeSpeech.d.ts +1 -1
- package/model-function/transcribe-speech/TranscriptionModel.d.ts +1 -1
- package/model-function/transcribe-speech/transcribe.d.ts +1 -1
- 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 +1 -0
- 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/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/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/tool/executeTool.cjs +3 -0
- package/tool/executeTool.js +3 -0
- package/tool/useTool.d.ts +2 -2
- package/tool/useToolOrGenerateText.d.ts +2 -2
- package/core/ConsoleLogger.cjs +0 -9
- package/core/ConsoleLogger.d.ts +0 -5
- package/core/ConsoleLogger.js +0 -5
- package/model-function/generate-json/GenerateJsonModel.d.ts +0 -8
- package/model-function/generate-json/GenerateJsonOrTextModel.d.ts +0 -18
- /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
@@ -0,0 +1,23 @@
|
|
1
|
+
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
2
|
+
import { Model, ModelSettings } from "../Model.js";
|
3
|
+
export interface JsonOrTextGenerationModelSettings extends ModelSettings {
|
4
|
+
}
|
5
|
+
export interface JsonOrTextGenerationPrompt<RESPONSE> {
|
6
|
+
extractJsonAndText(response: RESPONSE): {
|
7
|
+
schema: null;
|
8
|
+
value: null;
|
9
|
+
text: string;
|
10
|
+
} | {
|
11
|
+
schema: string;
|
12
|
+
value: unknown;
|
13
|
+
text: string | null;
|
14
|
+
};
|
15
|
+
}
|
16
|
+
export interface JsonOrTextGenerationModel<PROMPT, RESPONSE, SETTINGS extends JsonOrTextGenerationModelSettings> extends Model<SETTINGS> {
|
17
|
+
generateJsonResponse(prompt: PROMPT & JsonOrTextGenerationPrompt<RESPONSE>, options?: ModelFunctionOptions<SETTINGS>): PromiseLike<RESPONSE>;
|
18
|
+
extractUsage?(response: RESPONSE): {
|
19
|
+
promptTokens: number;
|
20
|
+
completionTokens: number;
|
21
|
+
totalTokens: number;
|
22
|
+
};
|
23
|
+
}
|
@@ -25,6 +25,9 @@ class JsonTextGenerationModel {
|
|
25
25
|
get settings() {
|
26
26
|
return this.model.settings;
|
27
27
|
}
|
28
|
+
get settingsForEvent() {
|
29
|
+
return this.model.settingsForEvent;
|
30
|
+
}
|
28
31
|
async generateJsonResponse(prompt, options) {
|
29
32
|
return await (0, generateText_js_1.generateText)(this.model, this.format.createPrompt(prompt), options);
|
30
33
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { TextGenerationModel, TextGenerationModelSettings } from "../generate-text/TextGenerationModel.js";
|
2
2
|
import { SchemaDefinition } from "./SchemaDefinition.js";
|
3
3
|
import { InstructionWithSchema } from "./InstructionWithSchemaPrompt.js";
|
4
|
-
import {
|
4
|
+
import { JsonGenerationModel } from "./JsonGenerationModel.js";
|
5
5
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
6
6
|
export type JsonTextPromptFormat = {
|
7
7
|
createPrompt: (prompt: {
|
@@ -10,7 +10,7 @@ export type JsonTextPromptFormat = {
|
|
10
10
|
}) => string;
|
11
11
|
extractJson: (response: string) => unknown;
|
12
12
|
};
|
13
|
-
export declare class JsonTextGenerationModel<
|
13
|
+
export declare class JsonTextGenerationModel<MODEL extends TextGenerationModel<string, any, any, TextGenerationModelSettings>> implements JsonGenerationModel<InstructionWithSchema<string, unknown>, string, MODEL["settings"]> {
|
14
14
|
private readonly model;
|
15
15
|
private readonly format;
|
16
16
|
constructor({ model, format, }: {
|
@@ -18,8 +18,9 @@ export declare class JsonTextGenerationModel<SETTINGS extends TextGenerationMode
|
|
18
18
|
format: JsonTextPromptFormat;
|
19
19
|
});
|
20
20
|
get modelInformation(): import("../ModelInformation.js").ModelInformation;
|
21
|
-
get settings():
|
22
|
-
|
21
|
+
get settings(): TextGenerationModelSettings;
|
22
|
+
get settingsForEvent(): Partial<MODEL["settings"]>;
|
23
|
+
generateJsonResponse(prompt: InstructionWithSchema<string, unknown>, options?: ModelFunctionOptions<MODEL["settings"]> | undefined): Promise<string>;
|
23
24
|
extractJson(response: string): unknown;
|
24
|
-
withSettings(additionalSettings: Partial<
|
25
|
+
withSettings(additionalSettings: Partial<MODEL["settings"]>): this;
|
25
26
|
}
|
@@ -22,6 +22,9 @@ export class JsonTextGenerationModel {
|
|
22
22
|
get settings() {
|
23
23
|
return this.model.settings;
|
24
24
|
}
|
25
|
+
get settingsForEvent() {
|
26
|
+
return this.model.settingsForEvent;
|
27
|
+
}
|
25
28
|
async generateJsonResponse(prompt, options) {
|
26
29
|
return await generateText(this.model, this.format.createPrompt(prompt), options);
|
27
30
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
2
2
|
import { ModelFunctionPromise } from "../executeCall.js";
|
3
|
-
import {
|
3
|
+
import { JsonGenerationModel, JsonGenerationModelSettings } from "./JsonGenerationModel.js";
|
4
4
|
import { SchemaDefinition } from "./SchemaDefinition.js";
|
5
|
-
export declare function generateJson<STRUCTURE, PROMPT, RESPONSE, NAME extends string, SETTINGS extends
|
5
|
+
export declare function generateJson<STRUCTURE, PROMPT, RESPONSE, NAME extends string, SETTINGS extends JsonGenerationModelSettings>(model: JsonGenerationModel<PROMPT, RESPONSE, SETTINGS>, schemaDefinition: SchemaDefinition<NAME, STRUCTURE>, prompt: (schemaDefinition: SchemaDefinition<NAME, STRUCTURE>) => PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<STRUCTURE, RESPONSE>;
|
@@ -36,6 +36,7 @@ function generateJsonOrText(model, schemaDefinitions, prompt, options) {
|
|
36
36
|
text: text, // text is string | null, which is part of the response for schema values
|
37
37
|
};
|
38
38
|
},
|
39
|
+
extractUsage: (result) => model.extractUsage?.(result),
|
39
40
|
});
|
40
41
|
}
|
41
42
|
exports.generateJsonOrText = generateJsonOrText;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
2
2
|
import { ModelFunctionPromise } from "../executeCall.js";
|
3
|
-
import {
|
3
|
+
import { JsonOrTextGenerationModel, JsonOrTextGenerationModelSettings, JsonOrTextGenerationPrompt } from "./JsonOrTextGenerationModel.js";
|
4
4
|
import { SchemaDefinition } from "./SchemaDefinition.js";
|
5
5
|
type SchemaDefinitionArray<T extends SchemaDefinition<any, any>[]> = T;
|
6
6
|
type ToSchemaDefinitionsMap<T extends SchemaDefinitionArray<SchemaDefinition<any, any>[]>> = {
|
@@ -14,7 +14,7 @@ type ToSchemaUnion<T> = {
|
|
14
14
|
} : never;
|
15
15
|
}[keyof T];
|
16
16
|
type ToOutputValue<SCHEMAS extends SchemaDefinitionArray<SchemaDefinition<any, any>[]>> = ToSchemaUnion<ToSchemaDefinitionsMap<SCHEMAS>>;
|
17
|
-
export declare function generateJsonOrText<SCHEMAS extends SchemaDefinition<any, any>[], PROMPT, RESPONSE, SETTINGS extends
|
17
|
+
export declare function generateJsonOrText<SCHEMAS extends SchemaDefinition<any, any>[], PROMPT, RESPONSE, SETTINGS extends JsonOrTextGenerationModelSettings>(model: JsonOrTextGenerationModel<PROMPT, RESPONSE, SETTINGS>, schemaDefinitions: SCHEMAS, prompt: (schemaDefinitions: SCHEMAS) => PROMPT & JsonOrTextGenerationPrompt<RESPONSE>, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<{
|
18
18
|
schema: null;
|
19
19
|
value: null;
|
20
20
|
text: string;
|
@@ -1,12 +1,16 @@
|
|
1
1
|
import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
|
2
2
|
export interface TextGenerationStartedEvent extends BaseModelCallStartedEvent {
|
3
3
|
functionType: "text-generation";
|
4
|
-
prompt: unknown;
|
5
4
|
}
|
6
5
|
export type TextGenerationFinishedEventResult = {
|
7
6
|
status: "success";
|
8
7
|
response: unknown;
|
9
8
|
output: string;
|
9
|
+
usage?: {
|
10
|
+
promptTokens: number;
|
11
|
+
completionTokens: number;
|
12
|
+
totalTokens: number;
|
13
|
+
};
|
10
14
|
} | {
|
11
15
|
status: "error";
|
12
16
|
error: unknown;
|
@@ -15,6 +19,5 @@ export type TextGenerationFinishedEventResult = {
|
|
15
19
|
};
|
16
20
|
export interface TextGenerationFinishedEvent extends BaseModelCallFinishedEvent {
|
17
21
|
functionType: "text-generation";
|
18
|
-
prompt: unknown;
|
19
22
|
result: TextGenerationFinishedEventResult;
|
20
23
|
}
|
@@ -38,5 +38,10 @@ export interface TextGenerationModel<PROMPT, RESPONSE, FULL_DELTA, SETTINGS exte
|
|
38
38
|
* Optional. Implement for streaming support.
|
39
39
|
*/
|
40
40
|
readonly extractTextDelta: ((fullDelta: FULL_DELTA) => string | undefined) | undefined;
|
41
|
+
extractUsage?(response: RESPONSE): {
|
42
|
+
promptTokens: number;
|
43
|
+
completionTokens: number;
|
44
|
+
totalTokens: number;
|
45
|
+
};
|
41
46
|
withPromptFormat<INPUT_PROMPT>(promptFormat: PromptFormat<INPUT_PROMPT, PROMPT>): PromptFormatTextGenerationModel<INPUT_PROMPT, PROMPT, RESPONSE, FULL_DELTA, SETTINGS, this>;
|
42
47
|
}
|
@@ -13,4 +13,4 @@ import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerati
|
|
13
13
|
* "Write a short story about a robot learning to love:\n\n"
|
14
14
|
* );
|
15
15
|
*/
|
16
|
-
export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<
|
16
|
+
export declare function generateText<PROMPT, RESPONSE, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, RESPONSE, any, SETTINGS>, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<string, RESPONSE>;
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.streamText = exports.StreamTextPromise = void 0;
|
4
4
|
const nanoid_1 = require("nanoid");
|
5
5
|
const FunctionEventSource_js_1 = require("../../core/FunctionEventSource.cjs");
|
6
|
+
const GlobalFunctionLogging_js_1 = require("../../core/GlobalFunctionLogging.cjs");
|
6
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");
|
@@ -59,6 +61,7 @@ async function doStreamText(model, prompt, options) {
|
|
59
61
|
const settings = model.settings;
|
60
62
|
const eventSource = new FunctionEventSource_js_1.FunctionEventSource({
|
61
63
|
observers: [
|
64
|
+
...(0, getFunctionCallLogger_js_1.getFunctionCallLogger)(options?.logging ?? (0, GlobalFunctionLogging_js_1.getGlobalFunctionLogging)()),
|
62
65
|
...(0, GlobalFunctionObservers_js_1.getGlobalFunctionObservers)(),
|
63
66
|
...(settings.observers ?? []),
|
64
67
|
...(run?.observers ?? []),
|
@@ -68,21 +71,21 @@ async function doStreamText(model, prompt, options) {
|
|
68
71
|
});
|
69
72
|
const durationMeasurement = (0, DurationMeasurement_js_1.startDurationMeasurement)();
|
70
73
|
const startMetadata = {
|
74
|
+
functionType: "text-streaming",
|
71
75
|
callId: `call-${(0, nanoid_1.nanoid)()}`,
|
72
76
|
runId: run?.runId,
|
73
77
|
sessionId: run?.sessionId,
|
74
78
|
userId: run?.userId,
|
75
79
|
functionId: options?.functionId,
|
76
80
|
model: model.modelInformation,
|
77
|
-
|
81
|
+
settings: model.settingsForEvent,
|
78
82
|
input: prompt,
|
79
|
-
settings,
|
80
83
|
timestamp: durationMeasurement.startDate,
|
81
84
|
startTimestamp: durationMeasurement.startDate,
|
82
85
|
};
|
83
86
|
eventSource.notify({
|
84
|
-
...startMetadata,
|
85
87
|
eventType: "started",
|
88
|
+
...startMetadata,
|
86
89
|
});
|
87
90
|
const result = await (0, runSafe_js_1.runSafe)(async () => (0, extractTextDeltas_js_1.extractTextDeltas)({
|
88
91
|
deltaIterable: await model.generateDeltaStreamResponse(prompt, {
|
@@ -93,8 +96,8 @@ async function doStreamText(model, prompt, options) {
|
|
93
96
|
extractDelta: (fullDelta) => model.extractTextDelta(fullDelta),
|
94
97
|
onDone: (fullText, lastFullDelta) => {
|
95
98
|
const finishMetadata = {
|
96
|
-
...startMetadata,
|
97
99
|
eventType: "finished",
|
100
|
+
...startMetadata,
|
98
101
|
finishTimestamp: new Date(),
|
99
102
|
durationInMs: durationMeasurement.durationInMs,
|
100
103
|
};
|
@@ -109,8 +112,8 @@ async function doStreamText(model, prompt, options) {
|
|
109
112
|
},
|
110
113
|
onError: (error) => {
|
111
114
|
const finishMetadata = {
|
112
|
-
...startMetadata,
|
113
115
|
eventType: "finished",
|
116
|
+
...startMetadata,
|
114
117
|
finishTimestamp: new Date(),
|
115
118
|
durationInMs: durationMeasurement.durationInMs,
|
116
119
|
};
|
@@ -132,8 +135,8 @@ async function doStreamText(model, prompt, options) {
|
|
132
135
|
}));
|
133
136
|
if (!result.ok) {
|
134
137
|
const finishMetadata = {
|
135
|
-
...startMetadata,
|
136
138
|
eventType: "finished",
|
139
|
+
...startMetadata,
|
137
140
|
finishTimestamp: new Date(),
|
138
141
|
durationInMs: durationMeasurement.durationInMs,
|
139
142
|
};
|
@@ -1,17 +1,17 @@
|
|
1
1
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
2
|
-
import {
|
2
|
+
import { ModelCallMetadata } from "../executeCall.js";
|
3
3
|
import { DeltaEvent } from "./DeltaEvent.js";
|
4
4
|
import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerationModel.js";
|
5
|
-
export declare class StreamTextPromise
|
5
|
+
export declare class StreamTextPromise extends Promise<AsyncIterable<string>> {
|
6
6
|
private fullPromise;
|
7
7
|
private outputPromise;
|
8
8
|
constructor(fullPromise: Promise<{
|
9
9
|
output: AsyncIterable<string>;
|
10
|
-
metadata: Omit<
|
10
|
+
metadata: Omit<ModelCallMetadata, "durationInMs" | "finishTimestamp">;
|
11
11
|
}>);
|
12
12
|
asFullResponse(): Promise<{
|
13
13
|
output: AsyncIterable<string>;
|
14
|
-
metadata: Omit<
|
14
|
+
metadata: Omit<ModelCallMetadata, "durationInMs" | "finishTimestamp">;
|
15
15
|
}>;
|
16
16
|
then<TResult1 = AsyncIterable<string>, TResult2 = never>(onfulfilled?: ((value: AsyncIterable<string>) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
|
17
17
|
catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<AsyncIterable<string> | TResult>;
|
@@ -20,4 +20,4 @@ export declare class StreamTextPromise<PROMPT, FULL_DELTA, SETTINGS extends Text
|
|
20
20
|
export declare function streamText<PROMPT, FULL_DELTA, SETTINGS extends TextGenerationModelSettings>(model: TextGenerationModel<PROMPT, unknown, FULL_DELTA, SETTINGS> & {
|
21
21
|
generateDeltaStreamResponse: (prompt: PROMPT, options: ModelFunctionOptions<SETTINGS>) => PromiseLike<AsyncIterable<DeltaEvent<FULL_DELTA>>>;
|
22
22
|
extractTextDelta: (fullDelta: FULL_DELTA) => string | undefined;
|
23
|
-
}, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): StreamTextPromise
|
23
|
+
}, prompt: PROMPT, options?: ModelFunctionOptions<SETTINGS>): StreamTextPromise;
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { nanoid as createId } from "nanoid";
|
2
2
|
import { FunctionEventSource } from "../../core/FunctionEventSource.js";
|
3
|
+
import { getGlobalFunctionLogging } from "../../core/GlobalFunctionLogging.js";
|
3
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";
|
@@ -54,6 +56,7 @@ async function doStreamText(model, prompt, options) {
|
|
54
56
|
const settings = model.settings;
|
55
57
|
const eventSource = new FunctionEventSource({
|
56
58
|
observers: [
|
59
|
+
...getFunctionCallLogger(options?.logging ?? getGlobalFunctionLogging()),
|
57
60
|
...getGlobalFunctionObservers(),
|
58
61
|
...(settings.observers ?? []),
|
59
62
|
...(run?.observers ?? []),
|
@@ -63,21 +66,21 @@ async function doStreamText(model, prompt, options) {
|
|
63
66
|
});
|
64
67
|
const durationMeasurement = startDurationMeasurement();
|
65
68
|
const startMetadata = {
|
69
|
+
functionType: "text-streaming",
|
66
70
|
callId: `call-${createId()}`,
|
67
71
|
runId: run?.runId,
|
68
72
|
sessionId: run?.sessionId,
|
69
73
|
userId: run?.userId,
|
70
74
|
functionId: options?.functionId,
|
71
75
|
model: model.modelInformation,
|
72
|
-
|
76
|
+
settings: model.settingsForEvent,
|
73
77
|
input: prompt,
|
74
|
-
settings,
|
75
78
|
timestamp: durationMeasurement.startDate,
|
76
79
|
startTimestamp: durationMeasurement.startDate,
|
77
80
|
};
|
78
81
|
eventSource.notify({
|
79
|
-
...startMetadata,
|
80
82
|
eventType: "started",
|
83
|
+
...startMetadata,
|
81
84
|
});
|
82
85
|
const result = await runSafe(async () => extractTextDeltas({
|
83
86
|
deltaIterable: await model.generateDeltaStreamResponse(prompt, {
|
@@ -88,8 +91,8 @@ async function doStreamText(model, prompt, options) {
|
|
88
91
|
extractDelta: (fullDelta) => model.extractTextDelta(fullDelta),
|
89
92
|
onDone: (fullText, lastFullDelta) => {
|
90
93
|
const finishMetadata = {
|
91
|
-
...startMetadata,
|
92
94
|
eventType: "finished",
|
95
|
+
...startMetadata,
|
93
96
|
finishTimestamp: new Date(),
|
94
97
|
durationInMs: durationMeasurement.durationInMs,
|
95
98
|
};
|
@@ -104,8 +107,8 @@ async function doStreamText(model, prompt, options) {
|
|
104
107
|
},
|
105
108
|
onError: (error) => {
|
106
109
|
const finishMetadata = {
|
107
|
-
...startMetadata,
|
108
110
|
eventType: "finished",
|
111
|
+
...startMetadata,
|
109
112
|
finishTimestamp: new Date(),
|
110
113
|
durationInMs: durationMeasurement.durationInMs,
|
111
114
|
};
|
@@ -127,8 +130,8 @@ async function doStreamText(model, prompt, options) {
|
|
127
130
|
}));
|
128
131
|
if (!result.ok) {
|
129
132
|
const finishMetadata = {
|
130
|
-
...startMetadata,
|
131
133
|
eventType: "finished",
|
134
|
+
...startMetadata,
|
132
135
|
finishTimestamp: new Date(),
|
133
136
|
durationInMs: durationMeasurement.durationInMs,
|
134
137
|
};
|
package/model-function/index.cjs
CHANGED
@@ -25,10 +25,10 @@ __exportStar(require("./embed-text/embedText.cjs"), exports);
|
|
25
25
|
__exportStar(require("./generate-image/ImageGenerationEvent.cjs"), exports);
|
26
26
|
__exportStar(require("./generate-image/ImageGenerationModel.cjs"), exports);
|
27
27
|
__exportStar(require("./generate-image/generateImage.cjs"), exports);
|
28
|
-
__exportStar(require("./generate-json/GenerateJsonModel.cjs"), exports);
|
29
|
-
__exportStar(require("./generate-json/GenerateJsonOrTextModel.cjs"), exports);
|
30
28
|
__exportStar(require("./generate-json/InstructionWithSchemaPrompt.cjs"), exports);
|
31
29
|
__exportStar(require("./generate-json/JsonGenerationEvent.cjs"), exports);
|
30
|
+
__exportStar(require("./generate-json/JsonGenerationModel.cjs"), exports);
|
31
|
+
__exportStar(require("./generate-json/JsonOrTextGenerationModel.cjs"), exports);
|
32
32
|
__exportStar(require("./generate-json/JsonTextGenerationModel.cjs"), exports);
|
33
33
|
__exportStar(require("./generate-json/NoSuchSchemaError.cjs"), exports);
|
34
34
|
__exportStar(require("./generate-json/SchemaDefinition.cjs"), exports);
|
@@ -39,6 +39,7 @@ __exportStar(require("./generate-text/DeltaEvent.cjs"), exports);
|
|
39
39
|
__exportStar(require("./generate-text/TextDeltaEventSource.cjs"), exports);
|
40
40
|
__exportStar(require("./generate-text/TextGenerationEvent.cjs"), exports);
|
41
41
|
__exportStar(require("./generate-text/TextGenerationModel.cjs"), exports);
|
42
|
+
__exportStar(require("./generate-text/TextStreamingEvent.cjs"), exports);
|
42
43
|
__exportStar(require("./generate-text/generateText.cjs"), exports);
|
43
44
|
__exportStar(require("./generate-text/streamText.cjs"), exports);
|
44
45
|
__exportStar(require("./synthesize-speech/SpeechSynthesisEvent.cjs"), exports);
|
@@ -9,10 +9,10 @@ export * from "./embed-text/embedText.js";
|
|
9
9
|
export * from "./generate-image/ImageGenerationEvent.js";
|
10
10
|
export * from "./generate-image/ImageGenerationModel.js";
|
11
11
|
export * from "./generate-image/generateImage.js";
|
12
|
-
export * from "./generate-json/GenerateJsonModel.js";
|
13
|
-
export * from "./generate-json/GenerateJsonOrTextModel.js";
|
14
12
|
export * from "./generate-json/InstructionWithSchemaPrompt.js";
|
15
13
|
export * from "./generate-json/JsonGenerationEvent.js";
|
14
|
+
export * from "./generate-json/JsonGenerationModel.js";
|
15
|
+
export * from "./generate-json/JsonOrTextGenerationModel.js";
|
16
16
|
export * from "./generate-json/JsonTextGenerationModel.js";
|
17
17
|
export * from "./generate-json/NoSuchSchemaError.js";
|
18
18
|
export * from "./generate-json/SchemaDefinition.js";
|
@@ -23,6 +23,7 @@ export * from "./generate-text/DeltaEvent.js";
|
|
23
23
|
export * from "./generate-text/TextDeltaEventSource.js";
|
24
24
|
export * from "./generate-text/TextGenerationEvent.js";
|
25
25
|
export * from "./generate-text/TextGenerationModel.js";
|
26
|
+
export * from "./generate-text/TextStreamingEvent.js";
|
26
27
|
export * from "./generate-text/generateText.js";
|
27
28
|
export * from "./generate-text/streamText.js";
|
28
29
|
export * from "./synthesize-speech/SpeechSynthesisEvent.js";
|
package/model-function/index.js
CHANGED
@@ -9,10 +9,10 @@ export * from "./embed-text/embedText.js";
|
|
9
9
|
export * from "./generate-image/ImageGenerationEvent.js";
|
10
10
|
export * from "./generate-image/ImageGenerationModel.js";
|
11
11
|
export * from "./generate-image/generateImage.js";
|
12
|
-
export * from "./generate-json/GenerateJsonModel.js";
|
13
|
-
export * from "./generate-json/GenerateJsonOrTextModel.js";
|
14
12
|
export * from "./generate-json/InstructionWithSchemaPrompt.js";
|
15
13
|
export * from "./generate-json/JsonGenerationEvent.js";
|
14
|
+
export * from "./generate-json/JsonGenerationModel.js";
|
15
|
+
export * from "./generate-json/JsonOrTextGenerationModel.js";
|
16
16
|
export * from "./generate-json/JsonTextGenerationModel.js";
|
17
17
|
export * from "./generate-json/NoSuchSchemaError.js";
|
18
18
|
export * from "./generate-json/SchemaDefinition.js";
|
@@ -23,6 +23,7 @@ export * from "./generate-text/DeltaEvent.js";
|
|
23
23
|
export * from "./generate-text/TextDeltaEventSource.js";
|
24
24
|
export * from "./generate-text/TextGenerationEvent.js";
|
25
25
|
export * from "./generate-text/TextGenerationModel.js";
|
26
|
+
export * from "./generate-text/TextStreamingEvent.js";
|
26
27
|
export * from "./generate-text/generateText.js";
|
27
28
|
export * from "./generate-text/streamText.js";
|
28
29
|
export * from "./synthesize-speech/SpeechSynthesisEvent.js";
|
@@ -2,7 +2,7 @@
|
|
2
2
|
import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
|
3
3
|
export interface SpeechSynthesisStartedEvent extends BaseModelCallStartedEvent {
|
4
4
|
functionType: "speech-synthesis";
|
5
|
-
|
5
|
+
input: string;
|
6
6
|
}
|
7
7
|
export type SpeechSynthesisFinishedEventResult = {
|
8
8
|
status: "success";
|
@@ -16,6 +16,6 @@ export type SpeechSynthesisFinishedEventResult = {
|
|
16
16
|
};
|
17
17
|
export interface SpeechSynthesisFinishedEvent extends BaseModelCallFinishedEvent {
|
18
18
|
functionType: "speech-synthesis";
|
19
|
-
|
19
|
+
input: string;
|
20
20
|
result: SpeechSynthesisFinishedEventResult;
|
21
21
|
}
|
@@ -3,7 +3,7 @@ import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
|
3
3
|
import { Model, ModelSettings } from "../Model.js";
|
4
4
|
export interface SpeechSynthesisModelSettings extends ModelSettings {
|
5
5
|
}
|
6
|
-
export interface SpeechSynthesisModel<SETTINGS> extends Model<SETTINGS> {
|
6
|
+
export interface SpeechSynthesisModel<SETTINGS extends SpeechSynthesisModelSettings> extends Model<SETTINGS> {
|
7
7
|
/**
|
8
8
|
* Generates an mp3 audio buffer that contains the speech for the given text.
|
9
9
|
*/
|
@@ -5,4 +5,4 @@ import { SpeechSynthesisModel, SpeechSynthesisModelSettings } from "./SpeechSynt
|
|
5
5
|
/**
|
6
6
|
* Synthesizes speech from text.
|
7
7
|
*/
|
8
|
-
export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<
|
8
|
+
export declare function synthesizeSpeech<SETTINGS extends SpeechSynthesisModelSettings>(model: SpeechSynthesisModel<SETTINGS>, text: string, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<Buffer, Buffer>;
|
@@ -2,7 +2,7 @@ import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
|
2
2
|
import { Model, ModelSettings } from "../Model.js";
|
3
3
|
export interface TranscriptionModelSettings extends ModelSettings {
|
4
4
|
}
|
5
|
-
export interface TranscriptionModel<DATA, RESPONSE, SETTINGS> extends Model<SETTINGS> {
|
5
|
+
export interface TranscriptionModel<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings> extends Model<SETTINGS> {
|
6
6
|
generateTranscriptionResponse: (data: DATA, options?: ModelFunctionOptions<SETTINGS>) => PromiseLike<RESPONSE>;
|
7
7
|
extractTranscriptionText: (response: RESPONSE) => string;
|
8
8
|
}
|
@@ -15,4 +15,4 @@ import { TranscriptionModel, TranscriptionModelSettings } from "./TranscriptionM
|
|
15
15
|
* }
|
16
16
|
* );
|
17
17
|
*/
|
18
|
-
export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<
|
18
|
+
export declare function transcribe<DATA, RESPONSE, SETTINGS extends TranscriptionModelSettings>(model: TranscriptionModel<DATA, RESPONSE, SETTINGS>, data: DATA, options?: ModelFunctionOptions<SETTINGS>): ModelFunctionPromise<string, RESPONSE>;
|
@@ -38,6 +38,15 @@ class Automatic1111ImageGenerationModel extends AbstractModel_js_1.AbstractModel
|
|
38
38
|
call: async () => callAutomatic1111ImageGenerationAPI(callSettings),
|
39
39
|
});
|
40
40
|
}
|
41
|
+
get settingsForEvent() {
|
42
|
+
return {
|
43
|
+
baseUrl: this.settings.baseUrl,
|
44
|
+
height: this.settings.height,
|
45
|
+
width: this.settings.width,
|
46
|
+
sampler: this.settings.sampler,
|
47
|
+
steps: this.settings.steps,
|
48
|
+
};
|
49
|
+
}
|
41
50
|
generateImageResponse(prompt, options) {
|
42
51
|
return this.callAPI(prompt, options);
|
43
52
|
}
|
@@ -14,6 +14,7 @@ export declare class Automatic1111ImageGenerationModel extends AbstractModel<Aut
|
|
14
14
|
readonly provider: "Automatic1111";
|
15
15
|
get modelName(): string;
|
16
16
|
callAPI(input: A111ImageGenerationPrompt, options?: ModelFunctionOptions<Automatic1111ImageGenerationModelSettings>): Promise<Automatic1111ImageGenerationResponse>;
|
17
|
+
get settingsForEvent(): Partial<Automatic1111ImageGenerationModelSettings>;
|
17
18
|
generateImageResponse(prompt: A111ImageGenerationPrompt, options?: ModelFunctionOptions<Automatic1111ImageGenerationModelSettings>): Promise<{
|
18
19
|
images: string[];
|
19
20
|
parameters: {};
|
@@ -35,6 +35,15 @@ export class Automatic1111ImageGenerationModel extends AbstractModel {
|
|
35
35
|
call: async () => callAutomatic1111ImageGenerationAPI(callSettings),
|
36
36
|
});
|
37
37
|
}
|
38
|
+
get settingsForEvent() {
|
39
|
+
return {
|
40
|
+
baseUrl: this.settings.baseUrl,
|
41
|
+
height: this.settings.height,
|
42
|
+
width: this.settings.width,
|
43
|
+
sampler: this.settings.sampler,
|
44
|
+
steps: this.settings.steps,
|
45
|
+
};
|
46
|
+
}
|
38
47
|
generateImageResponse(prompt, options) {
|
39
48
|
return this.callAPI(prompt, options);
|
40
49
|
}
|
@@ -120,6 +120,12 @@ class CohereTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
120
120
|
call: async () => callCohereEmbeddingAPI(callSettings),
|
121
121
|
});
|
122
122
|
}
|
123
|
+
get settingsForEvent() {
|
124
|
+
return {
|
125
|
+
baseUrl: this.settings.baseUrl,
|
126
|
+
truncate: this.settings.truncate,
|
127
|
+
};
|
128
|
+
}
|
123
129
|
generateEmbeddingResponse(texts, options) {
|
124
130
|
return this.callAPI(texts, options);
|
125
131
|
}
|
@@ -62,6 +62,7 @@ export declare class CohereTextEmbeddingModel extends AbstractModel<CohereTextEm
|
|
62
62
|
detokenize(tokens: number[]): Promise<string>;
|
63
63
|
private get apiKey();
|
64
64
|
callAPI(texts: Array<string>, options?: ModelFunctionOptions<CohereTextEmbeddingModelSettings>): Promise<CohereTextEmbeddingResponse>;
|
65
|
+
get settingsForEvent(): Partial<CohereTextEmbeddingModelSettings>;
|
65
66
|
generateEmbeddingResponse(texts: string[], options?: ModelFunctionOptions<CohereTextEmbeddingModelSettings>): Promise<{
|
66
67
|
id: string;
|
67
68
|
meta: {
|
@@ -114,6 +114,12 @@ export class CohereTextEmbeddingModel extends AbstractModel {
|
|
114
114
|
call: async () => callCohereEmbeddingAPI(callSettings),
|
115
115
|
});
|
116
116
|
}
|
117
|
+
get settingsForEvent() {
|
118
|
+
return {
|
119
|
+
baseUrl: this.settings.baseUrl,
|
120
|
+
truncate: this.settings.truncate,
|
121
|
+
};
|
122
|
+
}
|
117
123
|
generateEmbeddingResponse(texts, options) {
|
118
124
|
return this.callAPI(texts, options);
|
119
125
|
}
|
@@ -102,6 +102,8 @@ class CohereTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
102
102
|
// to exclude stop tokens from the generated text
|
103
103
|
endSequences: combinedSettings.stopSequences,
|
104
104
|
maxTokens: combinedSettings.maxCompletionTokens,
|
105
|
+
// mapped name because of conflict with stopSequences:
|
106
|
+
stopSequences: combinedSettings.cohereStopSequences,
|
105
107
|
abortSignal: run?.abortSignal,
|
106
108
|
prompt,
|
107
109
|
responseFormat,
|
@@ -112,6 +114,24 @@ class CohereTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
112
114
|
call: async () => callCohereTextGenerationAPI(callSettings),
|
113
115
|
});
|
114
116
|
}
|
117
|
+
get settingsForEvent() {
|
118
|
+
const eventSettingProperties = [
|
119
|
+
"maxCompletionTokens",
|
120
|
+
"stopSequences",
|
121
|
+
"baseUrl",
|
122
|
+
"numGenerations",
|
123
|
+
"temperature",
|
124
|
+
"k",
|
125
|
+
"p",
|
126
|
+
"frequencyPenalty",
|
127
|
+
"presencePenalty",
|
128
|
+
"returnLikelihoods",
|
129
|
+
"logitBias",
|
130
|
+
"truncate",
|
131
|
+
"cohereStopSequences",
|
132
|
+
];
|
133
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
134
|
+
}
|
115
135
|
generateTextResponse(prompt, options) {
|
116
136
|
return this.callAPI(prompt, {
|
117
137
|
...options,
|
@@ -40,10 +40,10 @@ export interface CohereTextGenerationModelSettings extends TextGenerationModelSe
|
|
40
40
|
p?: number;
|
41
41
|
frequencyPenalty?: number;
|
42
42
|
presencePenalty?: number;
|
43
|
-
stopSequences?: string[];
|
44
43
|
returnLikelihoods?: "GENERATION" | "ALL" | "NONE";
|
45
44
|
logitBias?: Record<string, number>;
|
46
45
|
truncate?: "NONE" | "START" | "END";
|
46
|
+
cohereStopSequences?: string[];
|
47
47
|
}
|
48
48
|
/**
|
49
49
|
* Create a text generation model that calls the Cohere Co.Generate API.
|
@@ -73,6 +73,7 @@ export declare class CohereTextGenerationModel extends AbstractModel<CohereTextG
|
|
73
73
|
callAPI<RESPONSE>(prompt: string, options: {
|
74
74
|
responseFormat: CohereTextGenerationResponseFormatType<RESPONSE>;
|
75
75
|
} & ModelFunctionOptions<CohereTextGenerationModelSettings>): Promise<RESPONSE>;
|
76
|
+
get settingsForEvent(): Partial<CohereTextGenerationModelSettings>;
|
76
77
|
generateTextResponse(prompt: string, options?: ModelFunctionOptions<CohereTextGenerationModelSettings>): Promise<{
|
77
78
|
prompt: string;
|
78
79
|
id: string;
|