modelfusion 0.113.0 → 0.114.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/CHANGELOG.md +59 -0
- package/README.md +89 -89
- package/core/FunctionOptions.d.ts +14 -0
- package/core/api/AbstractApiConfiguration.cjs +16 -1
- package/core/api/AbstractApiConfiguration.d.ts +7 -3
- package/core/api/AbstractApiConfiguration.js +16 -1
- package/core/api/ApiConfiguration.d.ts +10 -1
- package/core/api/BaseUrlApiConfiguration.cjs +9 -5
- package/core/api/BaseUrlApiConfiguration.d.ts +7 -7
- package/core/api/BaseUrlApiConfiguration.js +9 -5
- package/core/api/CustomHeaderProvider.cjs +2 -0
- package/core/api/CustomHeaderProvider.d.ts +2 -0
- package/core/api/CustomHeaderProvider.js +1 -0
- package/core/api/index.cjs +1 -0
- package/core/api/index.d.ts +1 -0
- package/core/api/index.js +1 -0
- package/core/cache/Cache.cjs +2 -0
- package/core/cache/Cache.d.ts +12 -0
- package/core/cache/Cache.js +1 -0
- package/core/cache/MemoryCache.cjs +23 -0
- package/core/cache/MemoryCache.d.ts +15 -0
- package/core/cache/MemoryCache.js +19 -0
- package/core/cache/index.cjs +18 -0
- package/core/cache/index.d.ts +2 -0
- package/core/cache/index.js +2 -0
- package/core/index.cjs +1 -0
- package/core/index.d.ts +1 -0
- package/core/index.js +1 -0
- package/core/schema/TypeValidationError.cjs +36 -0
- package/core/schema/TypeValidationError.d.ts +15 -0
- package/core/schema/TypeValidationError.js +32 -0
- package/core/schema/index.cjs +2 -0
- package/core/schema/index.d.ts +2 -0
- package/core/schema/index.js +2 -0
- package/core/schema/parseJSON.cjs +6 -14
- package/core/schema/parseJSON.d.ts +3 -2
- package/core/schema/parseJSON.js +6 -14
- package/core/schema/validateTypes.cjs +65 -0
- package/core/schema/validateTypes.d.ts +34 -0
- package/core/schema/validateTypes.js +60 -0
- package/model-function/embed/EmbeddingModel.d.ts +2 -2
- package/model-function/executeStandardCall.cjs +3 -1
- package/model-function/executeStandardCall.d.ts +2 -2
- package/model-function/executeStandardCall.js +3 -1
- package/model-function/executeStreamCall.cjs +2 -1
- package/model-function/executeStreamCall.d.ts +2 -2
- package/model-function/executeStreamCall.js +2 -1
- package/model-function/generate-image/ImageGenerationModel.d.ts +2 -2
- package/model-function/generate-image/PromptTemplateImageGenerationModel.d.ts +2 -2
- package/model-function/generate-speech/SpeechGenerationModel.d.ts +3 -3
- package/model-function/generate-structure/generateStructure.cjs +4 -1
- package/model-function/generate-structure/generateStructure.js +4 -1
- package/model-function/generate-structure/streamStructure.cjs +4 -1
- package/model-function/generate-structure/streamStructure.js +4 -1
- package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +3 -0
- package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +11 -2
- package/model-function/generate-text/PromptTemplateTextGenerationModel.js +3 -0
- package/model-function/generate-text/PromptTemplateTextStreamingModel.d.ts +2 -2
- package/model-function/generate-text/TextGenerationModel.d.ts +12 -3
- package/model-function/generate-text/generateText.cjs +43 -1
- package/model-function/generate-text/generateText.js +43 -1
- package/model-function/generate-transcription/TranscriptionModel.d.ts +2 -2
- package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +20 -8
- package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +27 -5
- package/model-provider/anthropic/AnthropicTextGenerationModel.js +20 -8
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +8 -3
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +3 -3
- package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +8 -3
- package/model-provider/cohere/CohereTextEmbeddingModel.cjs +8 -3
- package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +3 -3
- package/model-provider/cohere/CohereTextEmbeddingModel.js +8 -3
- package/model-provider/cohere/CohereTextGenerationModel.cjs +20 -8
- package/model-provider/cohere/CohereTextGenerationModel.d.ts +45 -5
- package/model-provider/cohere/CohereTextGenerationModel.js +20 -8
- package/model-provider/cohere/CohereTokenizer.cjs +16 -6
- package/model-provider/cohere/CohereTokenizer.d.ts +3 -3
- package/model-provider/cohere/CohereTokenizer.js +16 -6
- package/model-provider/elevenlabs/ElevenLabsApiConfiguration.cjs +1 -1
- package/model-provider/elevenlabs/ElevenLabsApiConfiguration.js +1 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.cjs +8 -3
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.d.ts +2 -2
- package/model-provider/elevenlabs/ElevenLabsSpeechModel.js +8 -3
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +8 -3
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +3 -3
- package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +8 -3
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +18 -4
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +21 -3
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +18 -4
- package/model-provider/llamacpp/LlamaCppCompletionModel.cjs +20 -8
- package/model-provider/llamacpp/LlamaCppCompletionModel.d.ts +125 -5
- package/model-provider/llamacpp/LlamaCppCompletionModel.js +20 -8
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +8 -3
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +3 -3
- package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +8 -3
- package/model-provider/llamacpp/LlamaCppTokenizer.cjs +8 -3
- package/model-provider/llamacpp/LlamaCppTokenizer.d.ts +2 -2
- package/model-provider/llamacpp/LlamaCppTokenizer.js +8 -3
- package/model-provider/lmnt/LmntSpeechModel.cjs +8 -3
- package/model-provider/lmnt/LmntSpeechModel.d.ts +2 -2
- package/model-provider/lmnt/LmntSpeechModel.js +8 -3
- package/model-provider/mistral/MistralChatModel.cjs +20 -8
- package/model-provider/mistral/MistralChatModel.d.ts +55 -5
- package/model-provider/mistral/MistralChatModel.js +20 -8
- package/model-provider/mistral/MistralTextEmbeddingModel.cjs +8 -3
- package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +3 -3
- package/model-provider/mistral/MistralTextEmbeddingModel.js +8 -3
- package/model-provider/ollama/OllamaChatModel.cjs +20 -8
- package/model-provider/ollama/OllamaChatModel.d.ts +27 -5
- package/model-provider/ollama/OllamaChatModel.js +20 -8
- package/model-provider/ollama/OllamaCompletionModel.cjs +20 -7
- package/model-provider/ollama/OllamaCompletionModel.d.ts +43 -5
- package/model-provider/ollama/OllamaCompletionModel.js +20 -7
- package/model-provider/ollama/OllamaTextEmbeddingModel.cjs +8 -3
- package/model-provider/ollama/OllamaTextEmbeddingModel.d.ts +3 -3
- package/model-provider/ollama/OllamaTextEmbeddingModel.js +8 -3
- package/model-provider/openai/AbstractOpenAIChatModel.cjs +23 -13
- package/model-provider/openai/AbstractOpenAIChatModel.d.ts +94 -7
- package/model-provider/openai/AbstractOpenAIChatModel.js +23 -13
- package/model-provider/openai/AbstractOpenAICompletionModel.cjs +21 -9
- package/model-provider/openai/AbstractOpenAICompletionModel.d.ts +35 -5
- package/model-provider/openai/AbstractOpenAICompletionModel.js +21 -9
- package/model-provider/openai/AzureOpenAIApiConfiguration.cjs +5 -2
- package/model-provider/openai/AzureOpenAIApiConfiguration.d.ts +2 -1
- package/model-provider/openai/AzureOpenAIApiConfiguration.js +5 -2
- package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.cjs +12 -6
- package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.d.ts +89 -5
- package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.js +12 -6
- package/model-provider/openai/OpenAIImageGenerationModel.cjs +10 -6
- package/model-provider/openai/OpenAIImageGenerationModel.d.ts +4 -4
- package/model-provider/openai/OpenAIImageGenerationModel.js +10 -6
- package/model-provider/openai/OpenAISpeechModel.cjs +9 -4
- package/model-provider/openai/OpenAISpeechModel.d.ts +3 -3
- package/model-provider/openai/OpenAISpeechModel.js +9 -4
- package/model-provider/openai/OpenAITextEmbeddingModel.cjs +11 -6
- package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
- package/model-provider/openai/OpenAITextEmbeddingModel.js +11 -6
- package/model-provider/openai/OpenAITranscriptionModel.cjs +9 -6
- package/model-provider/openai/OpenAITranscriptionModel.d.ts +4 -4
- package/model-provider/openai/OpenAITranscriptionModel.js +9 -6
- package/model-provider/stability/StabilityImageGenerationModel.cjs +10 -5
- package/model-provider/stability/StabilityImageGenerationModel.d.ts +3 -3
- package/model-provider/stability/StabilityImageGenerationModel.js +10 -5
- package/model-provider/whispercpp/WhisperCppTranscriptionModel.cjs +9 -7
- package/model-provider/whispercpp/WhisperCppTranscriptionModel.d.ts +3 -3
- package/model-provider/whispercpp/WhisperCppTranscriptionModel.js +9 -7
- package/observability/helicone/HeliconeOpenAIApiConfiguration.cjs +2 -1
- package/observability/helicone/HeliconeOpenAIApiConfiguration.d.ts +3 -1
- package/observability/helicone/HeliconeOpenAIApiConfiguration.js +2 -1
- package/package.json +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
import { z } from "zod";
|
2
|
-
import {
|
2
|
+
import { FunctionCallOptions } from "../../core/FunctionOptions.js";
|
3
3
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
4
4
|
import { ResponseHandler } from "../../core/api/postToApi.js";
|
5
5
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
@@ -138,12 +138,12 @@ export declare class LlamaCppCompletionModel<CONTEXT_WINDOW_SIZE extends number
|
|
138
138
|
get modelName(): null;
|
139
139
|
get contextWindowSize(): CONTEXT_WINDOW_SIZE;
|
140
140
|
readonly tokenizer: LlamaCppTokenizer;
|
141
|
-
callAPI<RESPONSE>(prompt: LlamaCppCompletionPrompt, options: {
|
141
|
+
callAPI<RESPONSE>(prompt: LlamaCppCompletionPrompt, callOptions: FunctionCallOptions, options: {
|
142
142
|
responseFormat: LlamaCppCompletionResponseFormatType<RESPONSE>;
|
143
|
-
}
|
143
|
+
}): Promise<RESPONSE>;
|
144
144
|
get settingsForEvent(): Partial<LlamaCppCompletionModelSettings<CONTEXT_WINDOW_SIZE>>;
|
145
145
|
countPromptTokens(prompt: LlamaCppCompletionPrompt): Promise<number>;
|
146
|
-
doGenerateTexts(prompt: LlamaCppCompletionPrompt, options
|
146
|
+
doGenerateTexts(prompt: LlamaCppCompletionPrompt, options: FunctionCallOptions): Promise<{
|
147
147
|
response: {
|
148
148
|
model: string;
|
149
149
|
stop: true;
|
@@ -203,7 +203,127 @@ export declare class LlamaCppCompletionModel<CONTEXT_WINDOW_SIZE extends number
|
|
203
203
|
totalTokens: number;
|
204
204
|
};
|
205
205
|
}>;
|
206
|
-
|
206
|
+
restoreGeneratedTexts(rawResponse: unknown): {
|
207
|
+
response: {
|
208
|
+
model: string;
|
209
|
+
stop: true;
|
210
|
+
content: string;
|
211
|
+
prompt: string;
|
212
|
+
generation_settings: {
|
213
|
+
model: string;
|
214
|
+
stream: boolean;
|
215
|
+
stop: string[];
|
216
|
+
seed: number;
|
217
|
+
mirostat: number;
|
218
|
+
frequency_penalty: number;
|
219
|
+
ignore_eos: boolean;
|
220
|
+
logit_bias: number[];
|
221
|
+
mirostat_eta: number;
|
222
|
+
mirostat_tau: number;
|
223
|
+
n_ctx: number;
|
224
|
+
n_keep: number;
|
225
|
+
n_predict: number;
|
226
|
+
n_probs: number;
|
227
|
+
penalize_nl: boolean;
|
228
|
+
presence_penalty: number;
|
229
|
+
repeat_last_n: number;
|
230
|
+
repeat_penalty: number;
|
231
|
+
tfs_z: number;
|
232
|
+
top_k: number;
|
233
|
+
top_p: number;
|
234
|
+
typical_p: number;
|
235
|
+
temperature?: number | undefined;
|
236
|
+
};
|
237
|
+
stopped_eos: boolean;
|
238
|
+
stopped_limit: boolean;
|
239
|
+
stopped_word: boolean;
|
240
|
+
stopping_word: string;
|
241
|
+
timings: {
|
242
|
+
predicted_ms: number;
|
243
|
+
predicted_n: number;
|
244
|
+
predicted_per_second: number | null;
|
245
|
+
predicted_per_token_ms: number | null;
|
246
|
+
prompt_n: number;
|
247
|
+
prompt_per_second: number | null;
|
248
|
+
prompt_per_token_ms: number | null;
|
249
|
+
prompt_ms?: number | null | undefined;
|
250
|
+
};
|
251
|
+
tokens_cached: number;
|
252
|
+
tokens_evaluated: number;
|
253
|
+
tokens_predicted: number;
|
254
|
+
truncated: boolean;
|
255
|
+
};
|
256
|
+
textGenerationResults: {
|
257
|
+
text: string;
|
258
|
+
finishReason: "length" | "stop" | "unknown";
|
259
|
+
}[];
|
260
|
+
usage: {
|
261
|
+
promptTokens: number;
|
262
|
+
completionTokens: number;
|
263
|
+
totalTokens: number;
|
264
|
+
};
|
265
|
+
};
|
266
|
+
processTextGenerationResponse(response: LlamaCppTextGenerationResponse): {
|
267
|
+
response: {
|
268
|
+
model: string;
|
269
|
+
stop: true;
|
270
|
+
content: string;
|
271
|
+
prompt: string;
|
272
|
+
generation_settings: {
|
273
|
+
model: string;
|
274
|
+
stream: boolean;
|
275
|
+
stop: string[];
|
276
|
+
seed: number;
|
277
|
+
mirostat: number;
|
278
|
+
frequency_penalty: number;
|
279
|
+
ignore_eos: boolean;
|
280
|
+
logit_bias: number[];
|
281
|
+
mirostat_eta: number;
|
282
|
+
mirostat_tau: number;
|
283
|
+
n_ctx: number;
|
284
|
+
n_keep: number;
|
285
|
+
n_predict: number;
|
286
|
+
n_probs: number;
|
287
|
+
penalize_nl: boolean;
|
288
|
+
presence_penalty: number;
|
289
|
+
repeat_last_n: number;
|
290
|
+
repeat_penalty: number;
|
291
|
+
tfs_z: number;
|
292
|
+
top_k: number;
|
293
|
+
top_p: number;
|
294
|
+
typical_p: number;
|
295
|
+
temperature?: number | undefined;
|
296
|
+
};
|
297
|
+
stopped_eos: boolean;
|
298
|
+
stopped_limit: boolean;
|
299
|
+
stopped_word: boolean;
|
300
|
+
stopping_word: string;
|
301
|
+
timings: {
|
302
|
+
predicted_ms: number;
|
303
|
+
predicted_n: number;
|
304
|
+
predicted_per_second: number | null;
|
305
|
+
predicted_per_token_ms: number | null;
|
306
|
+
prompt_n: number;
|
307
|
+
prompt_per_second: number | null;
|
308
|
+
prompt_per_token_ms: number | null;
|
309
|
+
prompt_ms?: number | null | undefined;
|
310
|
+
};
|
311
|
+
tokens_cached: number;
|
312
|
+
tokens_evaluated: number;
|
313
|
+
tokens_predicted: number;
|
314
|
+
truncated: boolean;
|
315
|
+
};
|
316
|
+
textGenerationResults: {
|
317
|
+
text: string;
|
318
|
+
finishReason: "length" | "stop" | "unknown";
|
319
|
+
}[];
|
320
|
+
usage: {
|
321
|
+
promptTokens: number;
|
322
|
+
completionTokens: number;
|
323
|
+
totalTokens: number;
|
324
|
+
};
|
325
|
+
};
|
326
|
+
doStreamText(prompt: LlamaCppCompletionPrompt, options: FunctionCallOptions): Promise<AsyncIterable<Delta<{
|
207
327
|
model: string;
|
208
328
|
stop: true;
|
209
329
|
content: string;
|
@@ -3,6 +3,7 @@ import { callWithRetryAndThrottle } from "../../core/api/callWithRetryAndThrottl
|
|
3
3
|
import { createJsonResponseHandler, postJsonToApi, } from "../../core/api/postToApi.js";
|
4
4
|
import { zodSchema } from "../../core/schema/ZodSchema.js";
|
5
5
|
import { parseJSON } from "../../core/schema/parseJSON.js";
|
6
|
+
import { validateTypes } from "../../core/schema/validateTypes.js";
|
6
7
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
7
8
|
import { PromptTemplateTextStreamingModel } from "../../model-function/generate-text/PromptTemplateTextStreamingModel.js";
|
8
9
|
import { textGenerationModelProperties, } from "../../model-function/generate-text/TextGenerationModel.js";
|
@@ -34,16 +35,21 @@ export class LlamaCppCompletionModel extends AbstractModel {
|
|
34
35
|
get contextWindowSize() {
|
35
36
|
return this.settings.contextWindowSize;
|
36
37
|
}
|
37
|
-
async callAPI(prompt, options) {
|
38
|
+
async callAPI(prompt, callOptions, options) {
|
38
39
|
const api = this.settings.api ?? new LlamaCppApiConfiguration();
|
39
40
|
const responseFormat = options.responseFormat;
|
40
|
-
const abortSignal =
|
41
|
+
const abortSignal = callOptions.run?.abortSignal;
|
41
42
|
return callWithRetryAndThrottle({
|
42
43
|
retry: api.retry,
|
43
44
|
throttle: api.throttle,
|
44
45
|
call: async () => postJsonToApi({
|
45
46
|
url: api.assembleUrl(`/completion`),
|
46
|
-
headers: api.headers
|
47
|
+
headers: api.headers({
|
48
|
+
functionType: callOptions.functionType,
|
49
|
+
functionId: callOptions.functionId,
|
50
|
+
run: callOptions.run,
|
51
|
+
callId: callOptions.callId,
|
52
|
+
}),
|
47
53
|
body: {
|
48
54
|
stream: responseFormat.stream,
|
49
55
|
prompt: prompt.text,
|
@@ -120,10 +126,17 @@ export class LlamaCppCompletionModel extends AbstractModel {
|
|
120
126
|
return tokens.length;
|
121
127
|
}
|
122
128
|
async doGenerateTexts(prompt, options) {
|
123
|
-
|
124
|
-
...options,
|
129
|
+
return this.processTextGenerationResponse(await this.callAPI(prompt, options, {
|
125
130
|
responseFormat: LlamaCppCompletionResponseFormat.json,
|
126
|
-
});
|
131
|
+
}));
|
132
|
+
}
|
133
|
+
restoreGeneratedTexts(rawResponse) {
|
134
|
+
return this.processTextGenerationResponse(validateTypes({
|
135
|
+
structure: rawResponse,
|
136
|
+
schema: zodSchema(llamaCppTextGenerationResponseSchema),
|
137
|
+
}));
|
138
|
+
}
|
139
|
+
processTextGenerationResponse(response) {
|
127
140
|
return {
|
128
141
|
response,
|
129
142
|
textGenerationResults: [
|
@@ -144,8 +157,7 @@ export class LlamaCppCompletionModel extends AbstractModel {
|
|
144
157
|
};
|
145
158
|
}
|
146
159
|
doStreamText(prompt, options) {
|
147
|
-
return this.callAPI(prompt, {
|
148
|
-
...options,
|
160
|
+
return this.callAPI(prompt, options, {
|
149
161
|
responseFormat: LlamaCppCompletionResponseFormat.deltaIterable,
|
150
162
|
});
|
151
163
|
}
|
@@ -50,18 +50,23 @@ class LlamaCppTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
|
|
50
50
|
async tokenize(text) {
|
51
51
|
return this.tokenizer.tokenize(text);
|
52
52
|
}
|
53
|
-
async callAPI(texts,
|
53
|
+
async callAPI(texts, callOptions) {
|
54
54
|
if (texts.length > this.maxValuesPerCall) {
|
55
55
|
throw new Error(`The Llama.cpp embedding API only supports ${this.maxValuesPerCall} texts per API call.`);
|
56
56
|
}
|
57
57
|
const api = this.settings.api ?? new LlamaCppApiConfiguration_js_1.LlamaCppApiConfiguration();
|
58
|
-
const abortSignal =
|
58
|
+
const abortSignal = callOptions.run?.abortSignal;
|
59
59
|
return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
|
60
60
|
retry: this.settings.api?.retry,
|
61
61
|
throttle: this.settings.api?.throttle,
|
62
62
|
call: async () => (0, postToApi_js_1.postJsonToApi)({
|
63
63
|
url: api.assembleUrl(`/embedding`),
|
64
|
-
headers: api.headers
|
64
|
+
headers: api.headers({
|
65
|
+
functionType: callOptions.functionType,
|
66
|
+
functionId: callOptions.functionId,
|
67
|
+
run: callOptions.run,
|
68
|
+
callId: callOptions.callId,
|
69
|
+
}),
|
65
70
|
body: { content: texts[0] },
|
66
71
|
failedResponseHandler: LlamaCppError_js_1.failedLlamaCppCallResponseHandler,
|
67
72
|
successfulResponseHandler: (0, postToApi_js_1.createJsonResponseHandler)((0, ZodSchema_js_1.zodSchema)(llamaCppTextEmbeddingResponseSchema)),
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { z } from "zod";
|
2
|
-
import {
|
2
|
+
import { FunctionCallOptions } from "../../core/FunctionOptions.js";
|
3
3
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
4
4
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
5
5
|
import { EmbeddingModel, EmbeddingModelSettings } from "../../model-function/embed/EmbeddingModel.js";
|
@@ -18,9 +18,9 @@ export declare class LlamaCppTextEmbeddingModel extends AbstractModel<LlamaCppTe
|
|
18
18
|
get embeddingDimensions(): number | undefined;
|
19
19
|
private readonly tokenizer;
|
20
20
|
tokenize(text: string): Promise<number[]>;
|
21
|
-
callAPI(texts: Array<string>,
|
21
|
+
callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<LlamaCppTextEmbeddingResponse>;
|
22
22
|
get settingsForEvent(): Partial<LlamaCppTextEmbeddingModelSettings>;
|
23
|
-
doEmbedValues(texts: string[], options
|
23
|
+
doEmbedValues(texts: string[], options: FunctionCallOptions): Promise<{
|
24
24
|
response: {
|
25
25
|
embedding: number[];
|
26
26
|
};
|
@@ -47,18 +47,23 @@ export class LlamaCppTextEmbeddingModel extends AbstractModel {
|
|
47
47
|
async tokenize(text) {
|
48
48
|
return this.tokenizer.tokenize(text);
|
49
49
|
}
|
50
|
-
async callAPI(texts,
|
50
|
+
async callAPI(texts, callOptions) {
|
51
51
|
if (texts.length > this.maxValuesPerCall) {
|
52
52
|
throw new Error(`The Llama.cpp embedding API only supports ${this.maxValuesPerCall} texts per API call.`);
|
53
53
|
}
|
54
54
|
const api = this.settings.api ?? new LlamaCppApiConfiguration();
|
55
|
-
const abortSignal =
|
55
|
+
const abortSignal = callOptions.run?.abortSignal;
|
56
56
|
return callWithRetryAndThrottle({
|
57
57
|
retry: this.settings.api?.retry,
|
58
58
|
throttle: this.settings.api?.throttle,
|
59
59
|
call: async () => postJsonToApi({
|
60
60
|
url: api.assembleUrl(`/embedding`),
|
61
|
-
headers: api.headers
|
61
|
+
headers: api.headers({
|
62
|
+
functionType: callOptions.functionType,
|
63
|
+
functionId: callOptions.functionId,
|
64
|
+
run: callOptions.run,
|
65
|
+
callId: callOptions.callId,
|
66
|
+
}),
|
62
67
|
body: { content: texts[0] },
|
63
68
|
failedResponseHandler: failedLlamaCppCallResponseHandler,
|
64
69
|
successfulResponseHandler: createJsonResponseHandler(zodSchema(llamaCppTextEmbeddingResponseSchema)),
|
@@ -30,15 +30,20 @@ class LlamaCppTokenizer {
|
|
30
30
|
});
|
31
31
|
this.api = api;
|
32
32
|
}
|
33
|
-
async callTokenizeAPI(text,
|
33
|
+
async callTokenizeAPI(text, callOptions) {
|
34
34
|
const api = this.api;
|
35
|
-
const abortSignal =
|
35
|
+
const abortSignal = callOptions?.run?.abortSignal;
|
36
36
|
return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
|
37
37
|
retry: api.retry,
|
38
38
|
throttle: api.throttle,
|
39
39
|
call: async () => (0, postToApi_js_1.postJsonToApi)({
|
40
40
|
url: api.assembleUrl(`/tokenize`),
|
41
|
-
headers: api.headers
|
41
|
+
headers: api.headers({
|
42
|
+
functionType: "tokenize",
|
43
|
+
functionId: callOptions?.functionId,
|
44
|
+
run: callOptions?.run,
|
45
|
+
callId: "",
|
46
|
+
}),
|
42
47
|
body: {
|
43
48
|
content: text,
|
44
49
|
},
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { z } from "zod";
|
2
|
-
import {
|
2
|
+
import { FunctionCallOptions } from "../../core/FunctionOptions.js";
|
3
3
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
4
4
|
import { BasicTokenizer } from "../../model-function/tokenize-text/Tokenizer.js";
|
5
5
|
/**
|
@@ -18,7 +18,7 @@ import { BasicTokenizer } from "../../model-function/tokenize-text/Tokenizer.js"
|
|
18
18
|
export declare class LlamaCppTokenizer implements BasicTokenizer {
|
19
19
|
readonly api: ApiConfiguration;
|
20
20
|
constructor(api?: ApiConfiguration);
|
21
|
-
callTokenizeAPI(text: string,
|
21
|
+
callTokenizeAPI(text: string, callOptions?: FunctionCallOptions): Promise<LlamaCppTokenizationResponse>;
|
22
22
|
tokenize(text: string): Promise<number[]>;
|
23
23
|
}
|
24
24
|
declare const llamaCppTokenizationResponseSchema: z.ZodObject<{
|
@@ -27,15 +27,20 @@ export class LlamaCppTokenizer {
|
|
27
27
|
});
|
28
28
|
this.api = api;
|
29
29
|
}
|
30
|
-
async callTokenizeAPI(text,
|
30
|
+
async callTokenizeAPI(text, callOptions) {
|
31
31
|
const api = this.api;
|
32
|
-
const abortSignal =
|
32
|
+
const abortSignal = callOptions?.run?.abortSignal;
|
33
33
|
return callWithRetryAndThrottle({
|
34
34
|
retry: api.retry,
|
35
35
|
throttle: api.throttle,
|
36
36
|
call: async () => postJsonToApi({
|
37
37
|
url: api.assembleUrl(`/tokenize`),
|
38
|
-
headers: api.headers
|
38
|
+
headers: api.headers({
|
39
|
+
functionType: "tokenize",
|
40
|
+
functionId: callOptions?.functionId,
|
41
|
+
run: callOptions?.run,
|
42
|
+
callId: "",
|
43
|
+
}),
|
39
44
|
body: {
|
40
45
|
content: text,
|
41
46
|
},
|
@@ -25,9 +25,9 @@ class LmntSpeechModel extends AbstractModel_js_1.AbstractModel {
|
|
25
25
|
get modelName() {
|
26
26
|
return this.settings.voice;
|
27
27
|
}
|
28
|
-
async callAPI(text,
|
28
|
+
async callAPI(text, callOptions) {
|
29
29
|
const api = this.settings.api ?? new LmntApiConfiguration_js_1.LmntApiConfiguration();
|
30
|
-
const abortSignal =
|
30
|
+
const abortSignal = callOptions.run?.abortSignal;
|
31
31
|
return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
|
32
32
|
retry: api.retry,
|
33
33
|
throttle: api.throttle,
|
@@ -48,7 +48,12 @@ class LmntSpeechModel extends AbstractModel_js_1.AbstractModel {
|
|
48
48
|
}
|
49
49
|
return (0, postToApi_js_1.postToApi)({
|
50
50
|
url: api.assembleUrl(`/ai/speech`),
|
51
|
-
headers: api.headers
|
51
|
+
headers: api.headers({
|
52
|
+
functionType: callOptions.functionType,
|
53
|
+
functionId: callOptions.functionId,
|
54
|
+
run: callOptions.run,
|
55
|
+
callId: callOptions.callId,
|
56
|
+
}),
|
52
57
|
body: {
|
53
58
|
content: formData,
|
54
59
|
values: {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { z } from "zod";
|
3
|
-
import {
|
3
|
+
import { FunctionCallOptions } from "../../core/FunctionOptions.js";
|
4
4
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
5
5
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
6
6
|
import { SpeechGenerationModel, SpeechGenerationModelSettings } from "../../model-function/generate-speech/SpeechGenerationModel.js";
|
@@ -34,7 +34,7 @@ export declare class LmntSpeechModel extends AbstractModel<LmntSpeechModelSettin
|
|
34
34
|
get modelName(): string;
|
35
35
|
private callAPI;
|
36
36
|
get settingsForEvent(): Partial<LmntSpeechModelSettings>;
|
37
|
-
doGenerateSpeechStandard(text: string, options
|
37
|
+
doGenerateSpeechStandard(text: string, options: FunctionCallOptions): Promise<Buffer>;
|
38
38
|
withSettings(additionalSettings: Partial<LmntSpeechModelSettings>): this;
|
39
39
|
}
|
40
40
|
declare const lmntSpeechResponseSchema: z.ZodObject<{
|
@@ -22,9 +22,9 @@ export class LmntSpeechModel extends AbstractModel {
|
|
22
22
|
get modelName() {
|
23
23
|
return this.settings.voice;
|
24
24
|
}
|
25
|
-
async callAPI(text,
|
25
|
+
async callAPI(text, callOptions) {
|
26
26
|
const api = this.settings.api ?? new LmntApiConfiguration();
|
27
|
-
const abortSignal =
|
27
|
+
const abortSignal = callOptions.run?.abortSignal;
|
28
28
|
return callWithRetryAndThrottle({
|
29
29
|
retry: api.retry,
|
30
30
|
throttle: api.throttle,
|
@@ -45,7 +45,12 @@ export class LmntSpeechModel extends AbstractModel {
|
|
45
45
|
}
|
46
46
|
return postToApi({
|
47
47
|
url: api.assembleUrl(`/ai/speech`),
|
48
|
-
headers: api.headers
|
48
|
+
headers: api.headers({
|
49
|
+
functionType: callOptions.functionType,
|
50
|
+
functionId: callOptions.functionId,
|
51
|
+
run: callOptions.run,
|
52
|
+
callId: callOptions.callId,
|
53
|
+
}),
|
49
54
|
body: {
|
50
55
|
content: formData,
|
51
56
|
values: {
|
@@ -5,6 +5,7 @@ const zod_1 = require("zod");
|
|
5
5
|
const callWithRetryAndThrottle_js_1 = require("../../core/api/callWithRetryAndThrottle.cjs");
|
6
6
|
const postToApi_js_1 = require("../../core/api/postToApi.cjs");
|
7
7
|
const ZodSchema_js_1 = require("../../core/schema/ZodSchema.cjs");
|
8
|
+
const validateTypes_js_1 = require("../../core/schema/validateTypes.cjs");
|
8
9
|
const AbstractModel_js_1 = require("../../model-function/AbstractModel.cjs");
|
9
10
|
const PromptTemplateTextStreamingModel_js_1 = require("../../model-function/generate-text/PromptTemplateTextStreamingModel.cjs");
|
10
11
|
const TextGenerationModel_js_1 = require("../../model-function/generate-text/TextGenerationModel.cjs");
|
@@ -43,9 +44,9 @@ class MistralChatModel extends AbstractModel_js_1.AbstractModel {
|
|
43
44
|
get modelName() {
|
44
45
|
return this.settings.model;
|
45
46
|
}
|
46
|
-
async callAPI(prompt, options) {
|
47
|
+
async callAPI(prompt, callOptions, options) {
|
47
48
|
const api = this.settings.api ?? new MistralApiConfiguration_js_1.MistralApiConfiguration();
|
48
|
-
const abortSignal =
|
49
|
+
const abortSignal = callOptions.run?.abortSignal;
|
49
50
|
const stream = options.responseFormat.stream;
|
50
51
|
const successfulResponseHandler = options.responseFormat.handler;
|
51
52
|
return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
|
@@ -53,7 +54,12 @@ class MistralChatModel extends AbstractModel_js_1.AbstractModel {
|
|
53
54
|
throttle: api.throttle,
|
54
55
|
call: async () => (0, postToApi_js_1.postJsonToApi)({
|
55
56
|
url: api.assembleUrl(`/chat/completions`),
|
56
|
-
headers: api.headers
|
57
|
+
headers: api.headers({
|
58
|
+
functionType: callOptions.functionType,
|
59
|
+
functionId: callOptions.functionId,
|
60
|
+
run: callOptions.run,
|
61
|
+
callId: callOptions.callId,
|
62
|
+
}),
|
57
63
|
body: {
|
58
64
|
stream,
|
59
65
|
messages: prompt,
|
@@ -81,10 +87,17 @@ class MistralChatModel extends AbstractModel_js_1.AbstractModel {
|
|
81
87
|
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
82
88
|
}
|
83
89
|
async doGenerateTexts(prompt, options) {
|
84
|
-
|
85
|
-
...options,
|
90
|
+
return this.processTextGenerationResponse(await this.callAPI(prompt, options, {
|
86
91
|
responseFormat: exports.MistralChatResponseFormat.json,
|
87
|
-
});
|
92
|
+
}));
|
93
|
+
}
|
94
|
+
restoreGeneratedTexts(rawResponse) {
|
95
|
+
return this.processTextGenerationResponse((0, validateTypes_js_1.validateTypes)({
|
96
|
+
structure: rawResponse,
|
97
|
+
schema: (0, ZodSchema_js_1.zodSchema)(mistralChatResponseSchema),
|
98
|
+
}));
|
99
|
+
}
|
100
|
+
processTextGenerationResponse(response) {
|
88
101
|
return {
|
89
102
|
response,
|
90
103
|
textGenerationResults: response.choices.map((choice) => ({
|
@@ -105,8 +118,7 @@ class MistralChatModel extends AbstractModel_js_1.AbstractModel {
|
|
105
118
|
}
|
106
119
|
}
|
107
120
|
doStreamText(prompt, options) {
|
108
|
-
return this.callAPI(prompt, {
|
109
|
-
...options,
|
121
|
+
return this.callAPI(prompt, options, {
|
110
122
|
responseFormat: exports.MistralChatResponseFormat.textDeltaIterable,
|
111
123
|
});
|
112
124
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { z } from "zod";
|
2
|
-
import {
|
2
|
+
import { FunctionCallOptions } from "../../core/FunctionOptions.js";
|
3
3
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
4
4
|
import { ResponseHandler } from "../../core/api/postToApi.js";
|
5
5
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
@@ -54,11 +54,11 @@ export declare class MistralChatModel extends AbstractModel<MistralChatModelSett
|
|
54
54
|
readonly contextWindowSize: undefined;
|
55
55
|
readonly tokenizer: undefined;
|
56
56
|
readonly countPromptTokens: undefined;
|
57
|
-
callAPI<RESULT>(prompt: MistralChatPrompt, options: {
|
57
|
+
callAPI<RESULT>(prompt: MistralChatPrompt, callOptions: FunctionCallOptions, options: {
|
58
58
|
responseFormat: MistralChatResponseFormatType<RESULT>;
|
59
|
-
}
|
59
|
+
}): Promise<RESULT>;
|
60
60
|
get settingsForEvent(): Partial<MistralChatModelSettings>;
|
61
|
-
doGenerateTexts(prompt: MistralChatPrompt, options
|
61
|
+
doGenerateTexts(prompt: MistralChatPrompt, options: FunctionCallOptions): Promise<{
|
62
62
|
response: {
|
63
63
|
object: string;
|
64
64
|
model: string;
|
@@ -83,8 +83,58 @@ export declare class MistralChatModel extends AbstractModel<MistralChatModelSett
|
|
83
83
|
finishReason: TextGenerationFinishReason;
|
84
84
|
}[];
|
85
85
|
}>;
|
86
|
+
restoreGeneratedTexts(rawResponse: unknown): {
|
87
|
+
response: {
|
88
|
+
object: string;
|
89
|
+
model: string;
|
90
|
+
usage: {
|
91
|
+
prompt_tokens: number;
|
92
|
+
completion_tokens: number;
|
93
|
+
total_tokens: number;
|
94
|
+
};
|
95
|
+
id: string;
|
96
|
+
created: number;
|
97
|
+
choices: {
|
98
|
+
message: {
|
99
|
+
role: "user" | "assistant";
|
100
|
+
content: string;
|
101
|
+
};
|
102
|
+
finish_reason: "length" | "stop" | "model_length";
|
103
|
+
index: number;
|
104
|
+
}[];
|
105
|
+
};
|
106
|
+
textGenerationResults: {
|
107
|
+
text: string;
|
108
|
+
finishReason: TextGenerationFinishReason;
|
109
|
+
}[];
|
110
|
+
};
|
111
|
+
processTextGenerationResponse(response: MistralChatResponse): {
|
112
|
+
response: {
|
113
|
+
object: string;
|
114
|
+
model: string;
|
115
|
+
usage: {
|
116
|
+
prompt_tokens: number;
|
117
|
+
completion_tokens: number;
|
118
|
+
total_tokens: number;
|
119
|
+
};
|
120
|
+
id: string;
|
121
|
+
created: number;
|
122
|
+
choices: {
|
123
|
+
message: {
|
124
|
+
role: "user" | "assistant";
|
125
|
+
content: string;
|
126
|
+
};
|
127
|
+
finish_reason: "length" | "stop" | "model_length";
|
128
|
+
index: number;
|
129
|
+
}[];
|
130
|
+
};
|
131
|
+
textGenerationResults: {
|
132
|
+
text: string;
|
133
|
+
finishReason: TextGenerationFinishReason;
|
134
|
+
}[];
|
135
|
+
};
|
86
136
|
private translateFinishReason;
|
87
|
-
doStreamText(prompt: MistralChatPrompt, options
|
137
|
+
doStreamText(prompt: MistralChatPrompt, options: FunctionCallOptions): Promise<AsyncIterable<import("../../index.js").Delta<{
|
88
138
|
model: string;
|
89
139
|
id: string;
|
90
140
|
choices: {
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
2
2
|
import { callWithRetryAndThrottle } from "../../core/api/callWithRetryAndThrottle.js";
|
3
3
|
import { createJsonResponseHandler, postJsonToApi, } from "../../core/api/postToApi.js";
|
4
4
|
import { zodSchema } from "../../core/schema/ZodSchema.js";
|
5
|
+
import { validateTypes } from "../../core/schema/validateTypes.js";
|
5
6
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
6
7
|
import { PromptTemplateTextStreamingModel } from "../../model-function/generate-text/PromptTemplateTextStreamingModel.js";
|
7
8
|
import { textGenerationModelProperties, } from "../../model-function/generate-text/TextGenerationModel.js";
|
@@ -40,9 +41,9 @@ export class MistralChatModel extends AbstractModel {
|
|
40
41
|
get modelName() {
|
41
42
|
return this.settings.model;
|
42
43
|
}
|
43
|
-
async callAPI(prompt, options) {
|
44
|
+
async callAPI(prompt, callOptions, options) {
|
44
45
|
const api = this.settings.api ?? new MistralApiConfiguration();
|
45
|
-
const abortSignal =
|
46
|
+
const abortSignal = callOptions.run?.abortSignal;
|
46
47
|
const stream = options.responseFormat.stream;
|
47
48
|
const successfulResponseHandler = options.responseFormat.handler;
|
48
49
|
return callWithRetryAndThrottle({
|
@@ -50,7 +51,12 @@ export class MistralChatModel extends AbstractModel {
|
|
50
51
|
throttle: api.throttle,
|
51
52
|
call: async () => postJsonToApi({
|
52
53
|
url: api.assembleUrl(`/chat/completions`),
|
53
|
-
headers: api.headers
|
54
|
+
headers: api.headers({
|
55
|
+
functionType: callOptions.functionType,
|
56
|
+
functionId: callOptions.functionId,
|
57
|
+
run: callOptions.run,
|
58
|
+
callId: callOptions.callId,
|
59
|
+
}),
|
54
60
|
body: {
|
55
61
|
stream,
|
56
62
|
messages: prompt,
|
@@ -78,10 +84,17 @@ export class MistralChatModel extends AbstractModel {
|
|
78
84
|
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
79
85
|
}
|
80
86
|
async doGenerateTexts(prompt, options) {
|
81
|
-
|
82
|
-
...options,
|
87
|
+
return this.processTextGenerationResponse(await this.callAPI(prompt, options, {
|
83
88
|
responseFormat: MistralChatResponseFormat.json,
|
84
|
-
});
|
89
|
+
}));
|
90
|
+
}
|
91
|
+
restoreGeneratedTexts(rawResponse) {
|
92
|
+
return this.processTextGenerationResponse(validateTypes({
|
93
|
+
structure: rawResponse,
|
94
|
+
schema: zodSchema(mistralChatResponseSchema),
|
95
|
+
}));
|
96
|
+
}
|
97
|
+
processTextGenerationResponse(response) {
|
85
98
|
return {
|
86
99
|
response,
|
87
100
|
textGenerationResults: response.choices.map((choice) => ({
|
@@ -102,8 +115,7 @@ export class MistralChatModel extends AbstractModel {
|
|
102
115
|
}
|
103
116
|
}
|
104
117
|
doStreamText(prompt, options) {
|
105
|
-
return this.callAPI(prompt, {
|
106
|
-
...options,
|
118
|
+
return this.callAPI(prompt, options, {
|
107
119
|
responseFormat: MistralChatResponseFormat.textDeltaIterable,
|
108
120
|
});
|
109
121
|
}
|