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.
Files changed (149) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +89 -89
  3. package/core/FunctionOptions.d.ts +14 -0
  4. package/core/api/AbstractApiConfiguration.cjs +16 -1
  5. package/core/api/AbstractApiConfiguration.d.ts +7 -3
  6. package/core/api/AbstractApiConfiguration.js +16 -1
  7. package/core/api/ApiConfiguration.d.ts +10 -1
  8. package/core/api/BaseUrlApiConfiguration.cjs +9 -5
  9. package/core/api/BaseUrlApiConfiguration.d.ts +7 -7
  10. package/core/api/BaseUrlApiConfiguration.js +9 -5
  11. package/core/api/CustomHeaderProvider.cjs +2 -0
  12. package/core/api/CustomHeaderProvider.d.ts +2 -0
  13. package/core/api/CustomHeaderProvider.js +1 -0
  14. package/core/api/index.cjs +1 -0
  15. package/core/api/index.d.ts +1 -0
  16. package/core/api/index.js +1 -0
  17. package/core/cache/Cache.cjs +2 -0
  18. package/core/cache/Cache.d.ts +12 -0
  19. package/core/cache/Cache.js +1 -0
  20. package/core/cache/MemoryCache.cjs +23 -0
  21. package/core/cache/MemoryCache.d.ts +15 -0
  22. package/core/cache/MemoryCache.js +19 -0
  23. package/core/cache/index.cjs +18 -0
  24. package/core/cache/index.d.ts +2 -0
  25. package/core/cache/index.js +2 -0
  26. package/core/index.cjs +1 -0
  27. package/core/index.d.ts +1 -0
  28. package/core/index.js +1 -0
  29. package/core/schema/TypeValidationError.cjs +36 -0
  30. package/core/schema/TypeValidationError.d.ts +15 -0
  31. package/core/schema/TypeValidationError.js +32 -0
  32. package/core/schema/index.cjs +2 -0
  33. package/core/schema/index.d.ts +2 -0
  34. package/core/schema/index.js +2 -0
  35. package/core/schema/parseJSON.cjs +6 -14
  36. package/core/schema/parseJSON.d.ts +3 -2
  37. package/core/schema/parseJSON.js +6 -14
  38. package/core/schema/validateTypes.cjs +65 -0
  39. package/core/schema/validateTypes.d.ts +34 -0
  40. package/core/schema/validateTypes.js +60 -0
  41. package/model-function/embed/EmbeddingModel.d.ts +2 -2
  42. package/model-function/executeStandardCall.cjs +3 -1
  43. package/model-function/executeStandardCall.d.ts +2 -2
  44. package/model-function/executeStandardCall.js +3 -1
  45. package/model-function/executeStreamCall.cjs +2 -1
  46. package/model-function/executeStreamCall.d.ts +2 -2
  47. package/model-function/executeStreamCall.js +2 -1
  48. package/model-function/generate-image/ImageGenerationModel.d.ts +2 -2
  49. package/model-function/generate-image/PromptTemplateImageGenerationModel.d.ts +2 -2
  50. package/model-function/generate-speech/SpeechGenerationModel.d.ts +3 -3
  51. package/model-function/generate-structure/generateStructure.cjs +4 -1
  52. package/model-function/generate-structure/generateStructure.js +4 -1
  53. package/model-function/generate-structure/streamStructure.cjs +4 -1
  54. package/model-function/generate-structure/streamStructure.js +4 -1
  55. package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +3 -0
  56. package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +11 -2
  57. package/model-function/generate-text/PromptTemplateTextGenerationModel.js +3 -0
  58. package/model-function/generate-text/PromptTemplateTextStreamingModel.d.ts +2 -2
  59. package/model-function/generate-text/TextGenerationModel.d.ts +12 -3
  60. package/model-function/generate-text/generateText.cjs +43 -1
  61. package/model-function/generate-text/generateText.js +43 -1
  62. package/model-function/generate-transcription/TranscriptionModel.d.ts +2 -2
  63. package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +20 -8
  64. package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +27 -5
  65. package/model-provider/anthropic/AnthropicTextGenerationModel.js +20 -8
  66. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +8 -3
  67. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +3 -3
  68. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +8 -3
  69. package/model-provider/cohere/CohereTextEmbeddingModel.cjs +8 -3
  70. package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +3 -3
  71. package/model-provider/cohere/CohereTextEmbeddingModel.js +8 -3
  72. package/model-provider/cohere/CohereTextGenerationModel.cjs +20 -8
  73. package/model-provider/cohere/CohereTextGenerationModel.d.ts +45 -5
  74. package/model-provider/cohere/CohereTextGenerationModel.js +20 -8
  75. package/model-provider/cohere/CohereTokenizer.cjs +16 -6
  76. package/model-provider/cohere/CohereTokenizer.d.ts +3 -3
  77. package/model-provider/cohere/CohereTokenizer.js +16 -6
  78. package/model-provider/elevenlabs/ElevenLabsApiConfiguration.cjs +1 -1
  79. package/model-provider/elevenlabs/ElevenLabsApiConfiguration.js +1 -1
  80. package/model-provider/elevenlabs/ElevenLabsSpeechModel.cjs +8 -3
  81. package/model-provider/elevenlabs/ElevenLabsSpeechModel.d.ts +2 -2
  82. package/model-provider/elevenlabs/ElevenLabsSpeechModel.js +8 -3
  83. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +8 -3
  84. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +3 -3
  85. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +8 -3
  86. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +18 -4
  87. package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +21 -3
  88. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +18 -4
  89. package/model-provider/llamacpp/LlamaCppCompletionModel.cjs +20 -8
  90. package/model-provider/llamacpp/LlamaCppCompletionModel.d.ts +125 -5
  91. package/model-provider/llamacpp/LlamaCppCompletionModel.js +20 -8
  92. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +8 -3
  93. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +3 -3
  94. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +8 -3
  95. package/model-provider/llamacpp/LlamaCppTokenizer.cjs +8 -3
  96. package/model-provider/llamacpp/LlamaCppTokenizer.d.ts +2 -2
  97. package/model-provider/llamacpp/LlamaCppTokenizer.js +8 -3
  98. package/model-provider/lmnt/LmntSpeechModel.cjs +8 -3
  99. package/model-provider/lmnt/LmntSpeechModel.d.ts +2 -2
  100. package/model-provider/lmnt/LmntSpeechModel.js +8 -3
  101. package/model-provider/mistral/MistralChatModel.cjs +20 -8
  102. package/model-provider/mistral/MistralChatModel.d.ts +55 -5
  103. package/model-provider/mistral/MistralChatModel.js +20 -8
  104. package/model-provider/mistral/MistralTextEmbeddingModel.cjs +8 -3
  105. package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +3 -3
  106. package/model-provider/mistral/MistralTextEmbeddingModel.js +8 -3
  107. package/model-provider/ollama/OllamaChatModel.cjs +20 -8
  108. package/model-provider/ollama/OllamaChatModel.d.ts +27 -5
  109. package/model-provider/ollama/OllamaChatModel.js +20 -8
  110. package/model-provider/ollama/OllamaCompletionModel.cjs +20 -7
  111. package/model-provider/ollama/OllamaCompletionModel.d.ts +43 -5
  112. package/model-provider/ollama/OllamaCompletionModel.js +20 -7
  113. package/model-provider/ollama/OllamaTextEmbeddingModel.cjs +8 -3
  114. package/model-provider/ollama/OllamaTextEmbeddingModel.d.ts +3 -3
  115. package/model-provider/ollama/OllamaTextEmbeddingModel.js +8 -3
  116. package/model-provider/openai/AbstractOpenAIChatModel.cjs +23 -13
  117. package/model-provider/openai/AbstractOpenAIChatModel.d.ts +94 -7
  118. package/model-provider/openai/AbstractOpenAIChatModel.js +23 -13
  119. package/model-provider/openai/AbstractOpenAICompletionModel.cjs +21 -9
  120. package/model-provider/openai/AbstractOpenAICompletionModel.d.ts +35 -5
  121. package/model-provider/openai/AbstractOpenAICompletionModel.js +21 -9
  122. package/model-provider/openai/AzureOpenAIApiConfiguration.cjs +5 -2
  123. package/model-provider/openai/AzureOpenAIApiConfiguration.d.ts +2 -1
  124. package/model-provider/openai/AzureOpenAIApiConfiguration.js +5 -2
  125. package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.cjs +12 -6
  126. package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.d.ts +89 -5
  127. package/model-provider/openai/OpenAIChatFunctionCallStructureGenerationModel.js +12 -6
  128. package/model-provider/openai/OpenAIImageGenerationModel.cjs +10 -6
  129. package/model-provider/openai/OpenAIImageGenerationModel.d.ts +4 -4
  130. package/model-provider/openai/OpenAIImageGenerationModel.js +10 -6
  131. package/model-provider/openai/OpenAISpeechModel.cjs +9 -4
  132. package/model-provider/openai/OpenAISpeechModel.d.ts +3 -3
  133. package/model-provider/openai/OpenAISpeechModel.js +9 -4
  134. package/model-provider/openai/OpenAITextEmbeddingModel.cjs +11 -6
  135. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +3 -3
  136. package/model-provider/openai/OpenAITextEmbeddingModel.js +11 -6
  137. package/model-provider/openai/OpenAITranscriptionModel.cjs +9 -6
  138. package/model-provider/openai/OpenAITranscriptionModel.d.ts +4 -4
  139. package/model-provider/openai/OpenAITranscriptionModel.js +9 -6
  140. package/model-provider/stability/StabilityImageGenerationModel.cjs +10 -5
  141. package/model-provider/stability/StabilityImageGenerationModel.d.ts +3 -3
  142. package/model-provider/stability/StabilityImageGenerationModel.js +10 -5
  143. package/model-provider/whispercpp/WhisperCppTranscriptionModel.cjs +9 -7
  144. package/model-provider/whispercpp/WhisperCppTranscriptionModel.d.ts +3 -3
  145. package/model-provider/whispercpp/WhisperCppTranscriptionModel.js +9 -7
  146. package/observability/helicone/HeliconeOpenAIApiConfiguration.cjs +2 -1
  147. package/observability/helicone/HeliconeOpenAIApiConfiguration.d.ts +3 -1
  148. package/observability/helicone/HeliconeOpenAIApiConfiguration.js +2 -1
  149. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { FunctionOptions } from "../../core/FunctionOptions.js";
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
- } & FunctionOptions): Promise<RESPONSE>;
143
+ }): Promise<RESPONSE>;
144
144
  get settingsForEvent(): Partial<LlamaCppCompletionModelSettings<CONTEXT_WINDOW_SIZE>>;
145
145
  countPromptTokens(prompt: LlamaCppCompletionPrompt): Promise<number>;
146
- doGenerateTexts(prompt: LlamaCppCompletionPrompt, options?: FunctionOptions): Promise<{
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
- doStreamText(prompt: LlamaCppCompletionPrompt, options?: FunctionOptions): Promise<AsyncIterable<Delta<{
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 = options.run?.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
- const response = await this.callAPI(prompt, {
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, options) {
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 = options?.run?.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 { FunctionOptions } from "../../core/FunctionOptions.js";
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>, options?: FunctionOptions): Promise<LlamaCppTextEmbeddingResponse>;
21
+ callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<LlamaCppTextEmbeddingResponse>;
22
22
  get settingsForEvent(): Partial<LlamaCppTextEmbeddingModelSettings>;
23
- doEmbedValues(texts: string[], options?: FunctionOptions): Promise<{
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, options) {
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 = options?.run?.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, context) {
33
+ async callTokenizeAPI(text, callOptions) {
34
34
  const api = this.api;
35
- const abortSignal = context?.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 { Run } from "../../core/Run.js";
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, context?: Run): Promise<LlamaCppTokenizationResponse>;
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, context) {
30
+ async callTokenizeAPI(text, callOptions) {
31
31
  const api = this.api;
32
- const abortSignal = context?.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, options) {
28
+ async callAPI(text, callOptions) {
29
29
  const api = this.settings.api ?? new LmntApiConfiguration_js_1.LmntApiConfiguration();
30
- const abortSignal = options?.run?.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 { FunctionOptions } from "../../core/FunctionOptions.js";
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?: FunctionOptions): Promise<Buffer>;
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, options) {
25
+ async callAPI(text, callOptions) {
26
26
  const api = this.settings.api ?? new LmntApiConfiguration();
27
- const abortSignal = options?.run?.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 = options.run?.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
- const response = await this.callAPI(prompt, {
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 { FunctionOptions } from "../../core/FunctionOptions.js";
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
- } & FunctionOptions): Promise<RESULT>;
59
+ }): Promise<RESULT>;
60
60
  get settingsForEvent(): Partial<MistralChatModelSettings>;
61
- doGenerateTexts(prompt: MistralChatPrompt, options?: FunctionOptions): Promise<{
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?: FunctionOptions): Promise<AsyncIterable<import("../../index.js").Delta<{
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 = options.run?.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
- const response = await this.callAPI(prompt, {
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
  }