modelfusion 0.113.0 → 0.114.1

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 +65 -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 +25 -15
  117. package/model-provider/openai/AbstractOpenAIChatModel.d.ts +108 -21
  118. package/model-provider/openai/AbstractOpenAIChatModel.js +25 -15
  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 +91 -7
  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";
@@ -54,11 +54,11 @@ export declare class CohereTextGenerationModel extends AbstractModel<CohereTextG
54
54
  readonly contextWindowSize: number;
55
55
  readonly tokenizer: CohereTokenizer;
56
56
  countPromptTokens(input: string): Promise<number>;
57
- callAPI<RESPONSE>(prompt: string, options: {
57
+ callAPI<RESPONSE>(prompt: string, callOptions: FunctionCallOptions, options: {
58
58
  responseFormat: CohereTextGenerationResponseFormatType<RESPONSE>;
59
- } & FunctionOptions): Promise<RESPONSE>;
59
+ }): Promise<RESPONSE>;
60
60
  get settingsForEvent(): Partial<CohereTextGenerationModelSettings>;
61
- doGenerateTexts(prompt: string, options?: FunctionOptions): Promise<{
61
+ doGenerateTexts(prompt: string, options: FunctionCallOptions): Promise<{
62
62
  response: {
63
63
  id: string;
64
64
  prompt: string;
@@ -78,8 +78,48 @@ export declare class CohereTextGenerationModel extends AbstractModel<CohereTextG
78
78
  finishReason: TextGenerationFinishReason;
79
79
  }[];
80
80
  }>;
81
+ restoreGeneratedTexts(rawResponse: unknown): {
82
+ response: {
83
+ id: string;
84
+ prompt: string;
85
+ generations: {
86
+ text: string;
87
+ id: string;
88
+ finish_reason?: string | undefined;
89
+ }[];
90
+ meta?: {
91
+ api_version: {
92
+ version: string;
93
+ };
94
+ } | undefined;
95
+ };
96
+ textGenerationResults: {
97
+ text: string;
98
+ finishReason: TextGenerationFinishReason;
99
+ }[];
100
+ };
101
+ processTextGenerationResponse(response: CohereTextGenerationResponse): {
102
+ response: {
103
+ id: string;
104
+ prompt: string;
105
+ generations: {
106
+ text: string;
107
+ id: string;
108
+ finish_reason?: string | undefined;
109
+ }[];
110
+ meta?: {
111
+ api_version: {
112
+ version: string;
113
+ };
114
+ } | undefined;
115
+ };
116
+ textGenerationResults: {
117
+ text: string;
118
+ finishReason: TextGenerationFinishReason;
119
+ }[];
120
+ };
81
121
  private translateFinishReason;
82
- doStreamText(prompt: string, options?: FunctionOptions): Promise<AsyncIterable<import("../../index.js").Delta<{
122
+ doStreamText(prompt: string, options: FunctionCallOptions): Promise<AsyncIterable<import("../../index.js").Delta<{
83
123
  text: string;
84
124
  is_finished: false;
85
125
  } | {
@@ -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";
@@ -70,16 +71,21 @@ export class CohereTextGenerationModel extends AbstractModel {
70
71
  async countPromptTokens(input) {
71
72
  return countTokens(this.tokenizer, input);
72
73
  }
73
- async callAPI(prompt, options) {
74
+ async callAPI(prompt, callOptions, options) {
74
75
  const api = this.settings.api ?? new CohereApiConfiguration();
75
76
  const responseFormat = options.responseFormat;
76
- const abortSignal = options.run?.abortSignal;
77
+ const abortSignal = callOptions.run?.abortSignal;
77
78
  return callWithRetryAndThrottle({
78
79
  retry: api.retry,
79
80
  throttle: api.throttle,
80
81
  call: async () => postJsonToApi({
81
82
  url: api.assembleUrl(`/generate`),
82
- headers: api.headers,
83
+ headers: api.headers({
84
+ functionType: callOptions.functionType,
85
+ functionId: callOptions.functionId,
86
+ run: callOptions.run,
87
+ callId: callOptions.callId,
88
+ }),
83
89
  body: {
84
90
  stream: responseFormat.stream,
85
91
  model: this.settings.model,
@@ -119,10 +125,17 @@ export class CohereTextGenerationModel extends AbstractModel {
119
125
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
120
126
  }
121
127
  async doGenerateTexts(prompt, options) {
122
- const response = await this.callAPI(prompt, {
123
- ...options,
128
+ return this.processTextGenerationResponse(await this.callAPI(prompt, options, {
124
129
  responseFormat: CohereTextGenerationResponseFormat.json,
125
- });
130
+ }));
131
+ }
132
+ restoreGeneratedTexts(rawResponse) {
133
+ return this.processTextGenerationResponse(validateTypes({
134
+ structure: rawResponse,
135
+ schema: zodSchema(cohereTextGenerationResponseSchema),
136
+ }));
137
+ }
138
+ processTextGenerationResponse(response) {
126
139
  return {
127
140
  response,
128
141
  textGenerationResults: response.generations.map((generation) => ({
@@ -146,8 +159,7 @@ export class CohereTextGenerationModel extends AbstractModel {
146
159
  }
147
160
  }
148
161
  doStreamText(prompt, options) {
149
- return this.callAPI(prompt, {
150
- ...options,
162
+ return this.callAPI(prompt, options, {
151
163
  responseFormat: CohereTextGenerationResponseFormat.deltaIterable,
152
164
  });
153
165
  }
@@ -33,15 +33,20 @@ class CohereTokenizer {
33
33
  });
34
34
  this.settings = settings;
35
35
  }
36
- async callTokenizeAPI(text, context) {
36
+ async callTokenizeAPI(text, callOptions) {
37
37
  const api = this.settings.api ?? new CohereApiConfiguration_js_1.CohereApiConfiguration();
38
- const abortSignal = context?.abortSignal;
38
+ const abortSignal = callOptions?.run?.abortSignal;
39
39
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
40
40
  retry: api.retry,
41
41
  throttle: api.throttle,
42
42
  call: async () => (0, postToApi_js_1.postJsonToApi)({
43
43
  url: api.assembleUrl(`/tokenize`),
44
- headers: api.headers,
44
+ headers: api.headers({
45
+ functionType: "tokenize",
46
+ functionId: callOptions?.functionId,
47
+ run: callOptions?.run,
48
+ callId: "",
49
+ }),
45
50
  body: {
46
51
  model: this.settings.model,
47
52
  text,
@@ -52,15 +57,20 @@ class CohereTokenizer {
52
57
  }),
53
58
  });
54
59
  }
55
- async callDeTokenizeAPI(tokens, context) {
60
+ async callDeTokenizeAPI(tokens, callOptions) {
56
61
  const api = this.settings.api ?? new CohereApiConfiguration_js_1.CohereApiConfiguration();
57
- const abortSignal = context?.abortSignal;
62
+ const abortSignal = callOptions?.run?.abortSignal;
58
63
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
59
64
  retry: api.retry,
60
65
  throttle: api.throttle,
61
66
  call: async () => (0, postToApi_js_1.postJsonToApi)({
62
67
  url: api.assembleUrl(`/detokenize`),
63
- headers: api.headers,
68
+ headers: api.headers({
69
+ functionType: "detokenize",
70
+ functionId: callOptions?.functionId,
71
+ run: callOptions?.run,
72
+ callId: "",
73
+ }),
64
74
  body: {
65
75
  model: this.settings.model,
66
76
  tokens,
@@ -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 { FullTokenizer } from "../../model-function/tokenize-text/Tokenizer.js";
5
5
  import { CohereTextEmbeddingModelType } from "./CohereTextEmbeddingModel.js";
@@ -28,8 +28,8 @@ export interface CohereTokenizerSettings {
28
28
  export declare class CohereTokenizer implements FullTokenizer {
29
29
  readonly settings: CohereTokenizerSettings;
30
30
  constructor(settings: CohereTokenizerSettings);
31
- callTokenizeAPI(text: string, context?: Run): Promise<CohereTokenizationResponse>;
32
- callDeTokenizeAPI(tokens: number[], context?: Run): Promise<CohereDetokenizationResponse>;
31
+ callTokenizeAPI(text: string, callOptions?: FunctionCallOptions): Promise<CohereTokenizationResponse>;
32
+ callDeTokenizeAPI(tokens: number[], callOptions?: FunctionCallOptions): Promise<CohereDetokenizationResponse>;
33
33
  tokenize(text: string): Promise<number[]>;
34
34
  tokenizeWithTexts(text: string): Promise<{
35
35
  tokens: number[];
@@ -30,15 +30,20 @@ export class CohereTokenizer {
30
30
  });
31
31
  this.settings = settings;
32
32
  }
33
- async callTokenizeAPI(text, context) {
33
+ async callTokenizeAPI(text, callOptions) {
34
34
  const api = this.settings.api ?? new CohereApiConfiguration();
35
- const abortSignal = context?.abortSignal;
35
+ const abortSignal = callOptions?.run?.abortSignal;
36
36
  return callWithRetryAndThrottle({
37
37
  retry: api.retry,
38
38
  throttle: api.throttle,
39
39
  call: async () => 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
  model: this.settings.model,
44
49
  text,
@@ -49,15 +54,20 @@ export class CohereTokenizer {
49
54
  }),
50
55
  });
51
56
  }
52
- async callDeTokenizeAPI(tokens, context) {
57
+ async callDeTokenizeAPI(tokens, callOptions) {
53
58
  const api = this.settings.api ?? new CohereApiConfiguration();
54
- const abortSignal = context?.abortSignal;
59
+ const abortSignal = callOptions?.run?.abortSignal;
55
60
  return callWithRetryAndThrottle({
56
61
  retry: api.retry,
57
62
  throttle: api.throttle,
58
63
  call: async () => postJsonToApi({
59
64
  url: api.assembleUrl(`/detokenize`),
60
- headers: api.headers,
65
+ headers: api.headers({
66
+ functionType: "detokenize",
67
+ functionId: callOptions?.functionId,
68
+ run: callOptions?.run,
69
+ callId: "",
70
+ }),
61
71
  body: {
62
72
  model: this.settings.model,
63
73
  tokens,
@@ -27,7 +27,7 @@ class ElevenLabsApiConfiguration extends BaseUrlApiConfiguration_js_1.BaseUrlApi
27
27
  });
28
28
  }
29
29
  get apiKey() {
30
- return this.headers["xi-api-key"];
30
+ return this.fixedHeadersValue["xi-api-key"];
31
31
  }
32
32
  }
33
33
  exports.ElevenLabsApiConfiguration = ElevenLabsApiConfiguration;
@@ -24,6 +24,6 @@ export class ElevenLabsApiConfiguration extends BaseUrlApiConfigurationWithDefau
24
24
  });
25
25
  }
26
26
  get apiKey() {
27
- return this.headers["xi-api-key"];
27
+ return this.fixedHeadersValue["xi-api-key"];
28
28
  }
29
29
  }
@@ -38,9 +38,9 @@ class ElevenLabsSpeechModel extends AbstractModel_js_1.AbstractModel {
38
38
  get modelName() {
39
39
  return this.settings.voice;
40
40
  }
41
- async callAPI(text, options) {
41
+ async callAPI(text, callOptions) {
42
42
  const api = this.settings.api ?? new ElevenLabsApiConfiguration_js_1.ElevenLabsApiConfiguration();
43
- const abortSignal = options?.run?.abortSignal;
43
+ const abortSignal = callOptions?.run?.abortSignal;
44
44
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
45
45
  retry: api.retry,
46
46
  throttle: api.throttle,
@@ -49,7 +49,12 @@ class ElevenLabsSpeechModel extends AbstractModel_js_1.AbstractModel {
49
49
  optimize_streaming_latency: this.settings.optimizeStreamingLatency,
50
50
  output_format: this.settings.outputFormat,
51
51
  })}`),
52
- headers: api.headers,
52
+ headers: api.headers({
53
+ functionType: callOptions.functionType,
54
+ functionId: callOptions.functionId,
55
+ run: callOptions.run,
56
+ callId: callOptions.callId,
57
+ }),
53
58
  body: {
54
59
  text,
55
60
  model_id: this.settings.model ?? defaultModel,
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
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 { Delta } from "../../model-function/Delta.js";
@@ -37,7 +37,7 @@ export declare class ElevenLabsSpeechModel extends AbstractModel<ElevenLabsSpeec
37
37
  get modelName(): string;
38
38
  private callAPI;
39
39
  get settingsForEvent(): Partial<ElevenLabsSpeechModelSettings>;
40
- doGenerateSpeechStandard(text: string, options?: FunctionOptions): Promise<Buffer>;
40
+ doGenerateSpeechStandard(text: string, options: FunctionCallOptions): Promise<Buffer>;
41
41
  doGenerateSpeechStreamDuplex(textStream: AsyncIterable<string>): Promise<AsyncIterable<Delta<Buffer>>>;
42
42
  withSettings(additionalSettings: Partial<ElevenLabsSpeechModelSettings>): this;
43
43
  }
@@ -35,9 +35,9 @@ export class ElevenLabsSpeechModel extends AbstractModel {
35
35
  get modelName() {
36
36
  return this.settings.voice;
37
37
  }
38
- async callAPI(text, options) {
38
+ async callAPI(text, callOptions) {
39
39
  const api = this.settings.api ?? new ElevenLabsApiConfiguration();
40
- const abortSignal = options?.run?.abortSignal;
40
+ const abortSignal = callOptions?.run?.abortSignal;
41
41
  return callWithRetryAndThrottle({
42
42
  retry: api.retry,
43
43
  throttle: api.throttle,
@@ -46,7 +46,12 @@ export class ElevenLabsSpeechModel extends AbstractModel {
46
46
  optimize_streaming_latency: this.settings.optimizeStreamingLatency,
47
47
  output_format: this.settings.outputFormat,
48
48
  })}`),
49
- headers: api.headers,
49
+ headers: api.headers({
50
+ functionType: callOptions.functionType,
51
+ functionId: callOptions.functionId,
52
+ run: callOptions.run,
53
+ callId: callOptions.callId,
54
+ }),
50
55
  body: {
51
56
  text,
52
57
  model_id: this.settings.model ?? defaultModel,
@@ -80,18 +80,23 @@ class HuggingFaceTextEmbeddingModel extends AbstractModel_js_1.AbstractModel {
80
80
  get modelName() {
81
81
  return this.settings.model;
82
82
  }
83
- async callAPI(texts, options) {
83
+ async callAPI(texts, callOptions) {
84
84
  if (texts.length > this.maxValuesPerCall) {
85
85
  throw new Error(`The HuggingFace feature extraction API is configured to only support ${this.maxValuesPerCall} texts per API call.`);
86
86
  }
87
87
  const api = this.settings.api ?? new HuggingFaceApiConfiguration_js_1.HuggingFaceApiConfiguration();
88
- const abortSignal = options?.run?.abortSignal;
88
+ const abortSignal = callOptions?.run?.abortSignal;
89
89
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
90
90
  retry: api.retry,
91
91
  throttle: api.throttle,
92
92
  call: async () => (0, postToApi_js_1.postJsonToApi)({
93
93
  url: api.assembleUrl(`/${this.settings.model}`),
94
- headers: api.headers,
94
+ headers: api.headers({
95
+ functionType: callOptions.functionType,
96
+ functionId: callOptions.functionId,
97
+ run: callOptions.run,
98
+ callId: callOptions.callId,
99
+ }),
95
100
  body: {
96
101
  inputs: texts,
97
102
  options: {
@@ -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";
@@ -42,10 +42,10 @@ export declare class HuggingFaceTextEmbeddingModel extends AbstractModel<Hugging
42
42
  readonly contextWindowSize: undefined;
43
43
  readonly embeddingDimensions: number | undefined;
44
44
  readonly tokenizer: undefined;
45
- callAPI(texts: Array<string>, options?: FunctionOptions): Promise<HuggingFaceTextEmbeddingResponse>;
45
+ callAPI(texts: Array<string>, callOptions: FunctionCallOptions): Promise<HuggingFaceTextEmbeddingResponse>;
46
46
  get settingsForEvent(): Partial<HuggingFaceTextEmbeddingModelSettings>;
47
47
  readonly countPromptTokens: undefined;
48
- doEmbedValues(texts: string[], options?: FunctionOptions): Promise<{
48
+ doEmbedValues(texts: string[], options: FunctionCallOptions): Promise<{
49
49
  response: number[][];
50
50
  embeddings: number[][];
51
51
  }>;
@@ -77,18 +77,23 @@ export class HuggingFaceTextEmbeddingModel extends AbstractModel {
77
77
  get modelName() {
78
78
  return this.settings.model;
79
79
  }
80
- async callAPI(texts, options) {
80
+ async callAPI(texts, callOptions) {
81
81
  if (texts.length > this.maxValuesPerCall) {
82
82
  throw new Error(`The HuggingFace feature extraction API is configured to only support ${this.maxValuesPerCall} texts per API call.`);
83
83
  }
84
84
  const api = this.settings.api ?? new HuggingFaceApiConfiguration();
85
- const abortSignal = options?.run?.abortSignal;
85
+ const abortSignal = callOptions?.run?.abortSignal;
86
86
  return callWithRetryAndThrottle({
87
87
  retry: api.retry,
88
88
  throttle: api.throttle,
89
89
  call: async () => postJsonToApi({
90
90
  url: api.assembleUrl(`/${this.settings.model}`),
91
- headers: api.headers,
91
+ headers: api.headers({
92
+ functionType: callOptions.functionType,
93
+ functionId: callOptions.functionId,
94
+ run: callOptions.run,
95
+ callId: callOptions.callId,
96
+ }),
92
97
  body: {
93
98
  inputs: texts,
94
99
  options: {
@@ -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 PromptTemplateTextGenerationModel_js_1 = require("../../model-function/generate-text/PromptTemplateTextGenerationModel.cjs");
10
11
  const TextGenerationModel_js_1 = require("../../model-function/generate-text/TextGenerationModel.cjs");
@@ -59,15 +60,20 @@ class HuggingFaceTextGenerationModel extends AbstractModel_js_1.AbstractModel {
59
60
  get modelName() {
60
61
  return this.settings.model;
61
62
  }
62
- async callAPI(prompt, options) {
63
+ async callAPI(prompt, callOptions) {
63
64
  const api = this.settings.api ?? new HuggingFaceApiConfiguration_js_1.HuggingFaceApiConfiguration();
64
- const abortSignal = options?.run?.abortSignal;
65
+ const abortSignal = callOptions?.run?.abortSignal;
65
66
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
66
67
  retry: api.retry,
67
68
  throttle: api.throttle,
68
69
  call: async () => (0, postToApi_js_1.postJsonToApi)({
69
70
  url: api.assembleUrl(`/${this.settings.model}`),
70
- headers: api.headers,
71
+ headers: api.headers({
72
+ functionType: callOptions.functionType,
73
+ functionId: callOptions.functionId,
74
+ run: callOptions.run,
75
+ callId: callOptions.callId,
76
+ }),
71
77
  body: {
72
78
  inputs: prompt,
73
79
  top_k: this.settings.topK,
@@ -102,7 +108,15 @@ class HuggingFaceTextGenerationModel extends AbstractModel_js_1.AbstractModel {
102
108
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
103
109
  }
104
110
  async doGenerateTexts(prompt, options) {
105
- const response = await this.callAPI(prompt, options);
111
+ return this.processTextGenerationResponse(await this.callAPI(prompt, options));
112
+ }
113
+ restoreGeneratedTexts(rawResponse) {
114
+ return this.processTextGenerationResponse((0, validateTypes_js_1.validateTypes)({
115
+ structure: rawResponse,
116
+ schema: (0, ZodSchema_js_1.zodSchema)(huggingFaceTextGenerationResponseSchema),
117
+ }));
118
+ }
119
+ processTextGenerationResponse(response) {
106
120
  return {
107
121
  response,
108
122
  textGenerationResults: response.map((response) => ({
@@ -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 { PromptTemplateTextGenerationModel } from "../../model-function/generate-text/PromptTemplateTextGenerationModel.js";
@@ -40,9 +40,9 @@ export declare class HuggingFaceTextGenerationModel extends AbstractModel<Huggin
40
40
  readonly contextWindowSize: undefined;
41
41
  readonly tokenizer: undefined;
42
42
  readonly countPromptTokens: undefined;
43
- callAPI(prompt: string, options?: FunctionOptions): Promise<HuggingFaceTextGenerationResponse>;
43
+ callAPI(prompt: string, callOptions: FunctionCallOptions): Promise<HuggingFaceTextGenerationResponse>;
44
44
  get settingsForEvent(): Partial<HuggingFaceTextGenerationModelSettings>;
45
- doGenerateTexts(prompt: string, options?: FunctionOptions): Promise<{
45
+ doGenerateTexts(prompt: string, options: FunctionCallOptions): Promise<{
46
46
  response: {
47
47
  generated_text: string;
48
48
  }[];
@@ -51,6 +51,24 @@ export declare class HuggingFaceTextGenerationModel extends AbstractModel<Huggin
51
51
  finishReason: "unknown";
52
52
  }[];
53
53
  }>;
54
+ restoreGeneratedTexts(rawResponse: unknown): {
55
+ response: {
56
+ generated_text: string;
57
+ }[];
58
+ textGenerationResults: {
59
+ text: string;
60
+ finishReason: "unknown";
61
+ }[];
62
+ };
63
+ processTextGenerationResponse(response: HuggingFaceTextGenerationResponse): {
64
+ response: {
65
+ generated_text: string;
66
+ }[];
67
+ textGenerationResults: {
68
+ text: string;
69
+ finishReason: "unknown";
70
+ }[];
71
+ };
54
72
  withPromptTemplate<INPUT_PROMPT>(promptTemplate: TextGenerationPromptTemplate<INPUT_PROMPT, string>): PromptTemplateTextGenerationModel<INPUT_PROMPT, string, HuggingFaceTextGenerationModelSettings, this>;
55
73
  withSettings(additionalSettings: Partial<HuggingFaceTextGenerationModelSettings>): this;
56
74
  }
@@ -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 { PromptTemplateTextGenerationModel } from "../../model-function/generate-text/PromptTemplateTextGenerationModel.js";
7
8
  import { textGenerationModelProperties, } from "../../model-function/generate-text/TextGenerationModel.js";
@@ -56,15 +57,20 @@ export class HuggingFaceTextGenerationModel extends AbstractModel {
56
57
  get modelName() {
57
58
  return this.settings.model;
58
59
  }
59
- async callAPI(prompt, options) {
60
+ async callAPI(prompt, callOptions) {
60
61
  const api = this.settings.api ?? new HuggingFaceApiConfiguration();
61
- const abortSignal = options?.run?.abortSignal;
62
+ const abortSignal = callOptions?.run?.abortSignal;
62
63
  return callWithRetryAndThrottle({
63
64
  retry: api.retry,
64
65
  throttle: api.throttle,
65
66
  call: async () => postJsonToApi({
66
67
  url: api.assembleUrl(`/${this.settings.model}`),
67
- headers: api.headers,
68
+ headers: api.headers({
69
+ functionType: callOptions.functionType,
70
+ functionId: callOptions.functionId,
71
+ run: callOptions.run,
72
+ callId: callOptions.callId,
73
+ }),
68
74
  body: {
69
75
  inputs: prompt,
70
76
  top_k: this.settings.topK,
@@ -99,7 +105,15 @@ export class HuggingFaceTextGenerationModel extends AbstractModel {
99
105
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
100
106
  }
101
107
  async doGenerateTexts(prompt, options) {
102
- const response = await this.callAPI(prompt, options);
108
+ return this.processTextGenerationResponse(await this.callAPI(prompt, options));
109
+ }
110
+ restoreGeneratedTexts(rawResponse) {
111
+ return this.processTextGenerationResponse(validateTypes({
112
+ structure: rawResponse,
113
+ schema: zodSchema(huggingFaceTextGenerationResponseSchema),
114
+ }));
115
+ }
116
+ processTextGenerationResponse(response) {
103
117
  return {
104
118
  response,
105
119
  textGenerationResults: response.map((response) => ({
@@ -6,6 +6,7 @@ const callWithRetryAndThrottle_js_1 = require("../../core/api/callWithRetryAndTh
6
6
  const postToApi_js_1 = require("../../core/api/postToApi.cjs");
7
7
  const ZodSchema_js_1 = require("../../core/schema/ZodSchema.cjs");
8
8
  const parseJSON_js_1 = require("../../core/schema/parseJSON.cjs");
9
+ const validateTypes_js_1 = require("../../core/schema/validateTypes.cjs");
9
10
  const AbstractModel_js_1 = require("../../model-function/AbstractModel.cjs");
10
11
  const PromptTemplateTextStreamingModel_js_1 = require("../../model-function/generate-text/PromptTemplateTextStreamingModel.cjs");
11
12
  const TextGenerationModel_js_1 = require("../../model-function/generate-text/TextGenerationModel.cjs");
@@ -37,16 +38,21 @@ class LlamaCppCompletionModel extends AbstractModel_js_1.AbstractModel {
37
38
  get contextWindowSize() {
38
39
  return this.settings.contextWindowSize;
39
40
  }
40
- async callAPI(prompt, options) {
41
+ async callAPI(prompt, callOptions, options) {
41
42
  const api = this.settings.api ?? new LlamaCppApiConfiguration_js_1.LlamaCppApiConfiguration();
42
43
  const responseFormat = options.responseFormat;
43
- const abortSignal = options.run?.abortSignal;
44
+ const abortSignal = callOptions.run?.abortSignal;
44
45
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
45
46
  retry: api.retry,
46
47
  throttle: api.throttle,
47
48
  call: async () => (0, postToApi_js_1.postJsonToApi)({
48
49
  url: api.assembleUrl(`/completion`),
49
- headers: api.headers,
50
+ headers: api.headers({
51
+ functionType: callOptions.functionType,
52
+ functionId: callOptions.functionId,
53
+ run: callOptions.run,
54
+ callId: callOptions.callId,
55
+ }),
50
56
  body: {
51
57
  stream: responseFormat.stream,
52
58
  prompt: prompt.text,
@@ -123,10 +129,17 @@ class LlamaCppCompletionModel extends AbstractModel_js_1.AbstractModel {
123
129
  return tokens.length;
124
130
  }
125
131
  async doGenerateTexts(prompt, options) {
126
- const response = await this.callAPI(prompt, {
127
- ...options,
132
+ return this.processTextGenerationResponse(await this.callAPI(prompt, options, {
128
133
  responseFormat: exports.LlamaCppCompletionResponseFormat.json,
129
- });
134
+ }));
135
+ }
136
+ restoreGeneratedTexts(rawResponse) {
137
+ return this.processTextGenerationResponse((0, validateTypes_js_1.validateTypes)({
138
+ structure: rawResponse,
139
+ schema: (0, ZodSchema_js_1.zodSchema)(llamaCppTextGenerationResponseSchema),
140
+ }));
141
+ }
142
+ processTextGenerationResponse(response) {
130
143
  return {
131
144
  response,
132
145
  textGenerationResults: [
@@ -147,8 +160,7 @@ class LlamaCppCompletionModel extends AbstractModel_js_1.AbstractModel {
147
160
  };
148
161
  }
149
162
  doStreamText(prompt, options) {
150
- return this.callAPI(prompt, {
151
- ...options,
163
+ return this.callAPI(prompt, options, {
152
164
  responseFormat: exports.LlamaCppCompletionResponseFormat.deltaIterable,
153
165
  });
154
166
  }