modelfusion 0.22.0 → 0.24.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 +3 -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/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/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 +62 -6
- package/model-provider/openai/OpenAITextGenerationModel.d.ts +34 -17
- package/model-provider/openai/OpenAITextGenerationModel.js +60 -5
- 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/TikTokenTokenizer.d.ts +4 -2
- package/model-provider/openai/chat/OpenAIChatModel.cjs +68 -9
- package/model-provider/openai/chat/OpenAIChatModel.d.ts +40 -20
- package/model-provider/openai/chat/OpenAIChatModel.js +66 -8
- package/model-provider/openai/chat/OpenAIChatPrompt.d.ts +2 -2
- package/model-provider/openai/chat/countOpenAIChatMessageTokens.cjs +5 -2
- package/model-provider/openai/chat/countOpenAIChatMessageTokens.js +5 -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
@@ -96,6 +96,8 @@ export class CohereTextGenerationModel extends AbstractModel {
|
|
96
96
|
// to exclude stop tokens from the generated text
|
97
97
|
endSequences: combinedSettings.stopSequences,
|
98
98
|
maxTokens: combinedSettings.maxCompletionTokens,
|
99
|
+
// mapped name because of conflict with stopSequences:
|
100
|
+
stopSequences: combinedSettings.cohereStopSequences,
|
99
101
|
abortSignal: run?.abortSignal,
|
100
102
|
prompt,
|
101
103
|
responseFormat,
|
@@ -106,6 +108,24 @@ export class CohereTextGenerationModel extends AbstractModel {
|
|
106
108
|
call: async () => callCohereTextGenerationAPI(callSettings),
|
107
109
|
});
|
108
110
|
}
|
111
|
+
get settingsForEvent() {
|
112
|
+
const eventSettingProperties = [
|
113
|
+
"maxCompletionTokens",
|
114
|
+
"stopSequences",
|
115
|
+
"baseUrl",
|
116
|
+
"numGenerations",
|
117
|
+
"temperature",
|
118
|
+
"k",
|
119
|
+
"p",
|
120
|
+
"frequencyPenalty",
|
121
|
+
"presencePenalty",
|
122
|
+
"returnLikelihoods",
|
123
|
+
"logitBias",
|
124
|
+
"truncate",
|
125
|
+
"cohereStopSequences",
|
126
|
+
];
|
127
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
128
|
+
}
|
109
129
|
generateTextResponse(prompt, options) {
|
110
130
|
return this.callAPI(prompt, {
|
111
131
|
...options,
|
@@ -4,7 +4,7 @@ import { Run } from "../../core/Run.js";
|
|
4
4
|
import { RetryFunction } from "../../util/api/RetryFunction.js";
|
5
5
|
import { ThrottleFunction } from "../../util/api/ThrottleFunction.js";
|
6
6
|
import { CohereTextGenerationModelType } from "./CohereTextGenerationModel.js";
|
7
|
-
import { CohereTextEmbeddingModelType } from "./
|
7
|
+
import { CohereTextEmbeddingModelType } from "./CohereTextEmbeddingModel.js";
|
8
8
|
export type CohereTokenizerModelType = CohereTextGenerationModelType | CohereTextEmbeddingModelType;
|
9
9
|
export interface CohereTokenizerSettings {
|
10
10
|
model: CohereTokenizerModelType;
|
@@ -49,6 +49,14 @@ class ElevenLabsSpeechSynthesisModel extends AbstractModel_js_1.AbstractModel {
|
|
49
49
|
}),
|
50
50
|
});
|
51
51
|
}
|
52
|
+
get settingsForEvent() {
|
53
|
+
return {
|
54
|
+
baseUrl: this.settings.baseUrl,
|
55
|
+
model: this.settings.model,
|
56
|
+
voice: this.settings.voice,
|
57
|
+
voiceSettings: this.settings.voiceSettings,
|
58
|
+
};
|
59
|
+
}
|
52
60
|
generateSpeechResponse(text, options) {
|
53
61
|
return this.callAPI(text, options);
|
54
62
|
}
|
@@ -24,6 +24,7 @@ export declare class ElevenLabsSpeechSynthesisModel extends AbstractModel<Eleven
|
|
24
24
|
readonly modelName: null;
|
25
25
|
private get apiKey();
|
26
26
|
private callAPI;
|
27
|
+
get settingsForEvent(): Partial<ElevenLabsSpeechSynthesisModelSettings>;
|
27
28
|
generateSpeechResponse(text: string, options?: ModelFunctionOptions<ElevenLabsSpeechSynthesisModelSettings> | undefined): Promise<Buffer>;
|
28
29
|
withSettings(additionalSettings: Partial<ElevenLabsSpeechSynthesisModelSettings>): this;
|
29
30
|
}
|
@@ -46,6 +46,14 @@ export class ElevenLabsSpeechSynthesisModel extends AbstractModel {
|
|
46
46
|
}),
|
47
47
|
});
|
48
48
|
}
|
49
|
+
get settingsForEvent() {
|
50
|
+
return {
|
51
|
+
baseUrl: this.settings.baseUrl,
|
52
|
+
model: this.settings.model,
|
53
|
+
voice: this.settings.voice,
|
54
|
+
voiceSettings: this.settings.voiceSettings,
|
55
|
+
};
|
56
|
+
}
|
49
57
|
generateSpeechResponse(text, options) {
|
50
58
|
return this.callAPI(text, options);
|
51
59
|
}
|
@@ -104,6 +104,13 @@ class HuggingFaceTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
104
104
|
call: async () => callHuggingFaceTextGenerationAPI(callSettings),
|
105
105
|
});
|
106
106
|
}
|
107
|
+
get settingsForEvent() {
|
108
|
+
return {
|
109
|
+
baseUrl: this.settings.baseUrl,
|
110
|
+
embeddingDimensions: this.settings.embeddingDimensions,
|
111
|
+
options: this.settings.options,
|
112
|
+
};
|
113
|
+
}
|
107
114
|
generateEmbeddingResponse(texts, options) {
|
108
115
|
return this.callAPI(texts, options);
|
109
116
|
}
|
@@ -47,6 +47,7 @@ export declare class HuggingFaceTextEmbeddingModel extends AbstractModel<Hugging
|
|
47
47
|
readonly tokenizer: undefined;
|
48
48
|
private get apiKey();
|
49
49
|
callAPI(texts: Array<string>, options?: ModelFunctionOptions<HuggingFaceTextEmbeddingModelSettings>): Promise<HuggingFaceTextEmbeddingResponse>;
|
50
|
+
get settingsForEvent(): Partial<HuggingFaceTextEmbeddingModelSettings>;
|
50
51
|
readonly countPromptTokens: undefined;
|
51
52
|
generateEmbeddingResponse(texts: string[], options?: ModelFunctionOptions<HuggingFaceTextEmbeddingModelSettings>): Promise<number[][]>;
|
52
53
|
extractEmbeddings(response: HuggingFaceTextEmbeddingResponse): number[][];
|
@@ -98,6 +98,13 @@ export class HuggingFaceTextEmbeddingModel extends AbstractModel {
|
|
98
98
|
call: async () => callHuggingFaceTextGenerationAPI(callSettings),
|
99
99
|
});
|
100
100
|
}
|
101
|
+
get settingsForEvent() {
|
102
|
+
return {
|
103
|
+
baseUrl: this.settings.baseUrl,
|
104
|
+
embeddingDimensions: this.settings.embeddingDimensions,
|
105
|
+
options: this.settings.options,
|
106
|
+
};
|
107
|
+
}
|
101
108
|
generateEmbeddingResponse(texts, options) {
|
102
109
|
return this.callAPI(texts, options);
|
103
110
|
}
|
@@ -102,6 +102,22 @@ class HuggingFaceTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
102
102
|
call: async () => callHuggingFaceTextGenerationAPI(callSettings),
|
103
103
|
});
|
104
104
|
}
|
105
|
+
get settingsForEvent() {
|
106
|
+
const eventSettingProperties = [
|
107
|
+
"stopSequences",
|
108
|
+
"maxCompletionTokens",
|
109
|
+
"baseUrl",
|
110
|
+
"topK",
|
111
|
+
"topP",
|
112
|
+
"temperature",
|
113
|
+
"repetitionPenalty",
|
114
|
+
"maxTime",
|
115
|
+
"numReturnSequences",
|
116
|
+
"doSample",
|
117
|
+
"options",
|
118
|
+
];
|
119
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
120
|
+
}
|
105
121
|
generateTextResponse(prompt, options) {
|
106
122
|
return this.callAPI(prompt, options);
|
107
123
|
}
|
@@ -50,6 +50,7 @@ export declare class HuggingFaceTextGenerationModel extends AbstractModel<Huggin
|
|
50
50
|
readonly tokenizer: undefined;
|
51
51
|
private get apiKey();
|
52
52
|
callAPI(prompt: string, options?: ModelFunctionOptions<HuggingFaceTextGenerationModelSettings>): Promise<HuggingFaceTextGenerationResponse>;
|
53
|
+
get settingsForEvent(): Partial<HuggingFaceTextGenerationModelSettings>;
|
53
54
|
readonly countPromptTokens: undefined;
|
54
55
|
generateTextResponse(prompt: string, options?: ModelFunctionOptions<HuggingFaceTextGenerationModelSettings>): Promise<{
|
55
56
|
generated_text: string;
|
@@ -96,6 +96,22 @@ export class HuggingFaceTextGenerationModel extends AbstractModel {
|
|
96
96
|
call: async () => callHuggingFaceTextGenerationAPI(callSettings),
|
97
97
|
});
|
98
98
|
}
|
99
|
+
get settingsForEvent() {
|
100
|
+
const eventSettingProperties = [
|
101
|
+
"stopSequences",
|
102
|
+
"maxCompletionTokens",
|
103
|
+
"baseUrl",
|
104
|
+
"topK",
|
105
|
+
"topP",
|
106
|
+
"temperature",
|
107
|
+
"repetitionPenalty",
|
108
|
+
"maxTime",
|
109
|
+
"numReturnSequences",
|
110
|
+
"doSample",
|
111
|
+
"options",
|
112
|
+
];
|
113
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
114
|
+
}
|
99
115
|
generateTextResponse(prompt, options) {
|
100
116
|
return this.callAPI(prompt, options);
|
101
117
|
}
|
@@ -72,6 +72,12 @@ class LlamaCppTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
72
72
|
call: async () => callLlamaCppEmbeddingAPI(callSettings),
|
73
73
|
});
|
74
74
|
}
|
75
|
+
get settingsForEvent() {
|
76
|
+
return {
|
77
|
+
baseUrl: this.settings.baseUrl,
|
78
|
+
embeddingDimensions: this.settings.embeddingDimensions,
|
79
|
+
};
|
80
|
+
}
|
75
81
|
generateEmbeddingResponse(texts, options) {
|
76
82
|
return this.callAPI(texts, options);
|
77
83
|
}
|
@@ -24,6 +24,7 @@ export declare class LlamaCppTextEmbeddingModel extends AbstractModel<LlamaCppTe
|
|
24
24
|
private readonly tokenizer;
|
25
25
|
tokenize(text: string): Promise<number[]>;
|
26
26
|
callAPI(texts: Array<string>, options?: ModelFunctionOptions<LlamaCppTextEmbeddingModelSettings>): Promise<LlamaCppTextEmbeddingResponse>;
|
27
|
+
get settingsForEvent(): Partial<LlamaCppTextEmbeddingModelSettings>;
|
27
28
|
generateEmbeddingResponse(texts: string[], options?: ModelFunctionOptions<LlamaCppTextEmbeddingModelSettings>): Promise<{
|
28
29
|
embedding: number[];
|
29
30
|
}>;
|
@@ -66,6 +66,12 @@ export class LlamaCppTextEmbeddingModel extends AbstractModel {
|
|
66
66
|
call: async () => callLlamaCppEmbeddingAPI(callSettings),
|
67
67
|
});
|
68
68
|
}
|
69
|
+
get settingsForEvent() {
|
70
|
+
return {
|
71
|
+
baseUrl: this.settings.baseUrl,
|
72
|
+
embeddingDimensions: this.settings.embeddingDimensions,
|
73
|
+
};
|
74
|
+
}
|
69
75
|
generateEmbeddingResponse(texts, options) {
|
70
76
|
return this.callAPI(texts, options);
|
71
77
|
}
|
@@ -61,6 +61,30 @@ class LlamaCppTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
61
61
|
call: async () => callLlamaCppTextGenerationAPI(callSettings),
|
62
62
|
});
|
63
63
|
}
|
64
|
+
get settingsForEvent() {
|
65
|
+
const eventSettingProperties = [
|
66
|
+
"maxCompletionTokens",
|
67
|
+
"stopSequences",
|
68
|
+
"baseUrl",
|
69
|
+
"contextWindowSize",
|
70
|
+
"temperature",
|
71
|
+
"topK",
|
72
|
+
"topP",
|
73
|
+
"nKeep",
|
74
|
+
"tfsZ",
|
75
|
+
"typicalP",
|
76
|
+
"repeatPenalty",
|
77
|
+
"repeatLastN",
|
78
|
+
"penalizeNl",
|
79
|
+
"mirostat",
|
80
|
+
"mirostatTau",
|
81
|
+
"mirostatEta",
|
82
|
+
"seed",
|
83
|
+
"ignoreEos",
|
84
|
+
"logitBias",
|
85
|
+
];
|
86
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
87
|
+
}
|
64
88
|
async countPromptTokens(prompt) {
|
65
89
|
const tokens = await this.tokenizer.tokenize(prompt);
|
66
90
|
return tokens.length;
|
@@ -91,6 +115,13 @@ class LlamaCppTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
91
115
|
promptFormat,
|
92
116
|
});
|
93
117
|
}
|
118
|
+
extractUsage(response) {
|
119
|
+
return {
|
120
|
+
promptTokens: response.tokens_evaluated,
|
121
|
+
completionTokens: response.tokens_predicted,
|
122
|
+
totalTokens: response.tokens_evaluated + response.tokens_predicted,
|
123
|
+
};
|
124
|
+
}
|
94
125
|
withSettings(additionalSettings) {
|
95
126
|
return new LlamaCppTextGenerationModel(Object.assign({}, this.settings, additionalSettings));
|
96
127
|
}
|
@@ -47,6 +47,7 @@ export declare class LlamaCppTextGenerationModel<CONTEXT_WINDOW_SIZE extends num
|
|
47
47
|
callAPI<RESPONSE>(prompt: string, options: {
|
48
48
|
responseFormat: LlamaCppTextGenerationResponseFormatType<RESPONSE>;
|
49
49
|
} & ModelFunctionOptions<LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>>): Promise<RESPONSE>;
|
50
|
+
get settingsForEvent(): Partial<LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>>;
|
50
51
|
countPromptTokens(prompt: string): Promise<number>;
|
51
52
|
generateTextResponse(prompt: string, options?: ModelFunctionOptions<LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>>): Promise<{
|
52
53
|
model: string;
|
@@ -101,6 +102,11 @@ export declare class LlamaCppTextGenerationModel<CONTEXT_WINDOW_SIZE extends num
|
|
101
102
|
generateDeltaStreamResponse(prompt: string, options?: ModelFunctionOptions<LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>>): Promise<AsyncIterable<DeltaEvent<LlamaCppTextGenerationDelta>>>;
|
102
103
|
extractTextDelta(fullDelta: LlamaCppTextGenerationDelta): string | undefined;
|
103
104
|
withPromptFormat<INPUT_PROMPT>(promptFormat: PromptFormat<INPUT_PROMPT, string>): PromptFormatTextGenerationModel<INPUT_PROMPT, string, LlamaCppTextGenerationResponse, LlamaCppTextGenerationDelta, LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>, this>;
|
105
|
+
extractUsage(response: LlamaCppTextGenerationResponse): {
|
106
|
+
promptTokens: number;
|
107
|
+
completionTokens: number;
|
108
|
+
totalTokens: number;
|
109
|
+
};
|
104
110
|
withSettings(additionalSettings: Partial<LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>>): this;
|
105
111
|
}
|
106
112
|
declare const llamaCppTextGenerationResponseSchema: z.ZodObject<{
|
@@ -55,6 +55,30 @@ export class LlamaCppTextGenerationModel extends AbstractModel {
|
|
55
55
|
call: async () => callLlamaCppTextGenerationAPI(callSettings),
|
56
56
|
});
|
57
57
|
}
|
58
|
+
get settingsForEvent() {
|
59
|
+
const eventSettingProperties = [
|
60
|
+
"maxCompletionTokens",
|
61
|
+
"stopSequences",
|
62
|
+
"baseUrl",
|
63
|
+
"contextWindowSize",
|
64
|
+
"temperature",
|
65
|
+
"topK",
|
66
|
+
"topP",
|
67
|
+
"nKeep",
|
68
|
+
"tfsZ",
|
69
|
+
"typicalP",
|
70
|
+
"repeatPenalty",
|
71
|
+
"repeatLastN",
|
72
|
+
"penalizeNl",
|
73
|
+
"mirostat",
|
74
|
+
"mirostatTau",
|
75
|
+
"mirostatEta",
|
76
|
+
"seed",
|
77
|
+
"ignoreEos",
|
78
|
+
"logitBias",
|
79
|
+
];
|
80
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
81
|
+
}
|
58
82
|
async countPromptTokens(prompt) {
|
59
83
|
const tokens = await this.tokenizer.tokenize(prompt);
|
60
84
|
return tokens.length;
|
@@ -85,6 +109,13 @@ export class LlamaCppTextGenerationModel extends AbstractModel {
|
|
85
109
|
promptFormat,
|
86
110
|
});
|
87
111
|
}
|
112
|
+
extractUsage(response) {
|
113
|
+
return {
|
114
|
+
promptTokens: response.tokens_evaluated,
|
115
|
+
completionTokens: response.tokens_predicted,
|
116
|
+
totalTokens: response.tokens_evaluated + response.tokens_predicted,
|
117
|
+
};
|
118
|
+
}
|
88
119
|
withSettings(additionalSettings) {
|
89
120
|
return new LlamaCppTextGenerationModel(Object.assign({}, this.settings, additionalSettings));
|
90
121
|
}
|
@@ -68,6 +68,14 @@ class OpenAIImageGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
68
68
|
call: async () => callOpenAIImageGenerationAPI(callSettings),
|
69
69
|
});
|
70
70
|
}
|
71
|
+
get settingsForEvent() {
|
72
|
+
const eventSettingProperties = [
|
73
|
+
"baseUrl",
|
74
|
+
"n",
|
75
|
+
"size",
|
76
|
+
];
|
77
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
78
|
+
}
|
71
79
|
generateImageResponse(prompt, options) {
|
72
80
|
return this.callAPI(prompt, {
|
73
81
|
responseFormat: exports.OpenAIImageGenerationResponseFormat.base64Json,
|
@@ -35,6 +35,7 @@ export declare class OpenAIImageGenerationModel extends AbstractModel<OpenAIImag
|
|
35
35
|
} & ModelFunctionOptions<Partial<OpenAIImageGenerationCallSettings & OpenAIModelSettings & {
|
36
36
|
user?: string;
|
37
37
|
}>>): Promise<RESULT>;
|
38
|
+
get settingsForEvent(): Partial<OpenAIImageGenerationSettings>;
|
38
39
|
generateImageResponse(prompt: string, options?: ModelFunctionOptions<OpenAIImageGenerationSettings>): Promise<{
|
39
40
|
data: {
|
40
41
|
b64_json: string;
|
@@ -64,6 +64,14 @@ export class OpenAIImageGenerationModel extends AbstractModel {
|
|
64
64
|
call: async () => callOpenAIImageGenerationAPI(callSettings),
|
65
65
|
});
|
66
66
|
}
|
67
|
+
get settingsForEvent() {
|
68
|
+
const eventSettingProperties = [
|
69
|
+
"baseUrl",
|
70
|
+
"n",
|
71
|
+
"size",
|
72
|
+
];
|
73
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
74
|
+
}
|
67
75
|
generateImageResponse(prompt, options) {
|
68
76
|
return this.callAPI(prompt, {
|
69
77
|
responseFormat: OpenAIImageGenerationResponseFormat.base64Json,
|
@@ -112,6 +112,11 @@ class OpenAITextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
112
112
|
call: async () => callOpenAITextEmbeddingAPI(callSettings),
|
113
113
|
});
|
114
114
|
}
|
115
|
+
get settingsForEvent() {
|
116
|
+
return {
|
117
|
+
baseUrl: this.settings.baseUrl,
|
118
|
+
};
|
119
|
+
}
|
115
120
|
generateEmbeddingResponse(texts, options) {
|
116
121
|
if (texts.length > this.maxTextsPerCall) {
|
117
122
|
throw new Error(`The OpenAI embedding API only supports ${this.maxTextsPerCall} texts per API call.`);
|
@@ -51,18 +51,19 @@ export declare class OpenAITextEmbeddingModel extends AbstractModel<OpenAITextEm
|
|
51
51
|
private get apiKey();
|
52
52
|
countTokens(input: string): Promise<number>;
|
53
53
|
callAPI(text: string, options?: ModelFunctionOptions<OpenAITextEmbeddingModelSettings>): Promise<OpenAITextEmbeddingResponse>;
|
54
|
+
get settingsForEvent(): Partial<OpenAITextEmbeddingModelSettings>;
|
54
55
|
generateEmbeddingResponse(texts: string[], options?: ModelFunctionOptions<OpenAITextEmbeddingModelSettings>): Promise<{
|
55
56
|
object: "list";
|
56
57
|
model: string;
|
58
|
+
usage: {
|
59
|
+
prompt_tokens: number;
|
60
|
+
total_tokens: number;
|
61
|
+
};
|
57
62
|
data: {
|
58
63
|
object: "embedding";
|
59
64
|
embedding: number[];
|
60
65
|
index: number;
|
61
66
|
}[];
|
62
|
-
usage: {
|
63
|
-
prompt_tokens: number;
|
64
|
-
total_tokens: number;
|
65
|
-
};
|
66
67
|
}>;
|
67
68
|
extractEmbeddings(response: OpenAITextEmbeddingResponse): number[][];
|
68
69
|
withSettings(additionalSettings: OpenAITextEmbeddingModelSettings): this;
|
@@ -96,27 +97,27 @@ declare const openAITextEmbeddingResponseSchema: z.ZodObject<{
|
|
96
97
|
}, "strip", z.ZodTypeAny, {
|
97
98
|
object: "list";
|
98
99
|
model: string;
|
100
|
+
usage: {
|
101
|
+
prompt_tokens: number;
|
102
|
+
total_tokens: number;
|
103
|
+
};
|
99
104
|
data: {
|
100
105
|
object: "embedding";
|
101
106
|
embedding: number[];
|
102
107
|
index: number;
|
103
108
|
}[];
|
109
|
+
}, {
|
110
|
+
object: "list";
|
111
|
+
model: string;
|
104
112
|
usage: {
|
105
113
|
prompt_tokens: number;
|
106
114
|
total_tokens: number;
|
107
115
|
};
|
108
|
-
}, {
|
109
|
-
object: "list";
|
110
|
-
model: string;
|
111
116
|
data: {
|
112
117
|
object: "embedding";
|
113
118
|
embedding: number[];
|
114
119
|
index: number;
|
115
120
|
}[];
|
116
|
-
usage: {
|
117
|
-
prompt_tokens: number;
|
118
|
-
total_tokens: number;
|
119
|
-
};
|
120
121
|
}>;
|
121
122
|
export type OpenAITextEmbeddingResponse = z.infer<typeof openAITextEmbeddingResponseSchema>;
|
122
123
|
export {};
|
@@ -104,6 +104,11 @@ export class OpenAITextEmbeddingModel extends AbstractModel {
|
|
104
104
|
call: async () => callOpenAITextEmbeddingAPI(callSettings),
|
105
105
|
});
|
106
106
|
}
|
107
|
+
get settingsForEvent() {
|
108
|
+
return {
|
109
|
+
baseUrl: this.settings.baseUrl,
|
110
|
+
};
|
111
|
+
}
|
107
112
|
generateEmbeddingResponse(texts, options) {
|
108
113
|
if (texts.length > this.maxTextsPerCall) {
|
109
114
|
throw new Error(`The OpenAI embedding API only supports ${this.maxTextsPerCall} texts per API call.`);
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.OpenAITextResponseFormat = exports.OpenAITextGenerationModel = exports.calculateOpenAITextGenerationCostInMillicents = exports.isOpenAITextGenerationModel = exports.OPENAI_TEXT_GENERATION_MODELS = void 0;
|
6
|
+
exports.OpenAITextResponseFormat = exports.OpenAITextGenerationModel = exports.calculateOpenAITextGenerationCostInMillicents = exports.isOpenAITextGenerationModel = exports.getOpenAITextGenerationModelInformation = exports.OPENAI_TEXT_GENERATION_MODELS = void 0;
|
7
7
|
const secure_json_parse_1 = __importDefault(require("secure-json-parse"));
|
8
8
|
const zod_1 = __importDefault(require("zod"));
|
9
9
|
const AbstractModel_js_1 = require("../../model-function/AbstractModel.cjs");
|
@@ -23,10 +23,12 @@ exports.OPENAI_TEXT_GENERATION_MODELS = {
|
|
23
23
|
"davinci-002": {
|
24
24
|
contextWindowSize: 16384,
|
25
25
|
tokenCostInMillicents: 0.2,
|
26
|
+
fineTunedTokenCostInMillicents: 1.2,
|
26
27
|
},
|
27
28
|
"babbage-002": {
|
28
29
|
contextWindowSize: 16384,
|
29
30
|
tokenCostInMillicents: 0.04,
|
31
|
+
fineTunedTokenCostInMillicents: 0.16,
|
30
32
|
},
|
31
33
|
"text-davinci-003": {
|
32
34
|
contextWindowSize: 4096,
|
@@ -69,10 +71,38 @@ exports.OPENAI_TEXT_GENERATION_MODELS = {
|
|
69
71
|
tokenCostInMillicents: 0.04,
|
70
72
|
},
|
71
73
|
};
|
72
|
-
|
74
|
+
function getOpenAITextGenerationModelInformation(model) {
|
75
|
+
// Model is already a base model:
|
76
|
+
if (model in exports.OPENAI_TEXT_GENERATION_MODELS) {
|
77
|
+
const baseModelInformation = exports.OPENAI_TEXT_GENERATION_MODELS[model];
|
78
|
+
return {
|
79
|
+
baseModel: model,
|
80
|
+
isFineTuned: false,
|
81
|
+
contextWindowSize: baseModelInformation.contextWindowSize,
|
82
|
+
tokenCostInMillicents: baseModelInformation.tokenCostInMillicents,
|
83
|
+
};
|
84
|
+
}
|
85
|
+
// Extract the base model from the fine-tuned model:
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
87
|
+
const [_, baseModel, ___, ____, _____] = model.split(":");
|
88
|
+
if (["davinci-002", "babbage-002"].includes(baseModel)) {
|
89
|
+
const baseModelInformation = exports.OPENAI_TEXT_GENERATION_MODELS[baseModel];
|
90
|
+
return {
|
91
|
+
baseModel: baseModel,
|
92
|
+
isFineTuned: true,
|
93
|
+
contextWindowSize: baseModelInformation.contextWindowSize,
|
94
|
+
tokenCostInMillicents: baseModelInformation.fineTunedTokenCostInMillicents,
|
95
|
+
};
|
96
|
+
}
|
97
|
+
throw new Error(`Unknown OpenAI chat base model ${baseModel}.`);
|
98
|
+
}
|
99
|
+
exports.getOpenAITextGenerationModelInformation = getOpenAITextGenerationModelInformation;
|
100
|
+
const isOpenAITextGenerationModel = (model) => model in exports.OPENAI_TEXT_GENERATION_MODELS ||
|
101
|
+
model.startsWith("ft:davinci-002:") ||
|
102
|
+
model.startsWith("ft:babbage-002:");
|
73
103
|
exports.isOpenAITextGenerationModel = isOpenAITextGenerationModel;
|
74
104
|
const calculateOpenAITextGenerationCostInMillicents = ({ model, response, }) => response.usage.total_tokens *
|
75
|
-
|
105
|
+
getOpenAITextGenerationModelInformation(model).tokenCostInMillicents;
|
76
106
|
exports.calculateOpenAITextGenerationCostInMillicents = calculateOpenAITextGenerationCostInMillicents;
|
77
107
|
/**
|
78
108
|
* Create a text generation model that calls the OpenAI text completion API.
|
@@ -113,9 +143,11 @@ class OpenAITextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
113
143
|
writable: true,
|
114
144
|
value: void 0
|
115
145
|
});
|
116
|
-
|
117
|
-
this.
|
118
|
-
|
146
|
+
const modelInformation = getOpenAITextGenerationModelInformation(this.settings.model);
|
147
|
+
this.tokenizer = new TikTokenTokenizer_js_1.TikTokenTokenizer({
|
148
|
+
model: modelInformation.baseModel,
|
149
|
+
});
|
150
|
+
this.contextWindowSize = modelInformation.contextWindowSize;
|
119
151
|
}
|
120
152
|
get modelName() {
|
121
153
|
return this.settings.model;
|
@@ -155,6 +187,23 @@ class OpenAITextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
155
187
|
call: async () => callOpenAITextGenerationAPI(callSettings),
|
156
188
|
});
|
157
189
|
}
|
190
|
+
get settingsForEvent() {
|
191
|
+
const eventSettingProperties = [
|
192
|
+
"maxCompletionTokens",
|
193
|
+
"stopSequences",
|
194
|
+
"baseUrl",
|
195
|
+
"suffix",
|
196
|
+
"temperature",
|
197
|
+
"topP",
|
198
|
+
"n",
|
199
|
+
"logprobs",
|
200
|
+
"echo",
|
201
|
+
"presencePenalty",
|
202
|
+
"frequencyPenalty",
|
203
|
+
"bestOf",
|
204
|
+
];
|
205
|
+
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
206
|
+
}
|
158
207
|
generateTextResponse(prompt, options) {
|
159
208
|
return this.callAPI(prompt, {
|
160
209
|
...options,
|
@@ -181,6 +230,13 @@ class OpenAITextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
181
230
|
promptFormat,
|
182
231
|
});
|
183
232
|
}
|
233
|
+
extractUsage(response) {
|
234
|
+
return {
|
235
|
+
promptTokens: response.usage.prompt_tokens,
|
236
|
+
completionTokens: response.usage.completion_tokens,
|
237
|
+
totalTokens: response.usage.total_tokens,
|
238
|
+
};
|
239
|
+
}
|
184
240
|
withSettings(additionalSettings) {
|
185
241
|
return new OpenAITextGenerationModel(Object.assign({}, this.settings, additionalSettings));
|
186
242
|
}
|