modelfusion 0.97.0 → 0.99.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 (105) hide show
  1. package/README.md +15 -8
  2. package/composed-function/summarize/summarizeRecursivelyWithTextGenerationAndTokenSplitting.cjs +1 -1
  3. package/composed-function/summarize/summarizeRecursivelyWithTextGenerationAndTokenSplitting.js +1 -1
  4. package/model-function/Model.d.ts +2 -2
  5. package/model-function/embed/embed.cjs +14 -2
  6. package/model-function/embed/embed.d.ts +6 -6
  7. package/model-function/embed/embed.js +14 -2
  8. package/model-function/generate-image/generateImage.cjs +10 -9
  9. package/model-function/generate-image/generateImage.d.ts +4 -6
  10. package/model-function/generate-image/generateImage.js +10 -9
  11. package/model-function/generate-speech/generateSpeech.cjs +7 -1
  12. package/model-function/generate-speech/generateSpeech.d.ts +3 -3
  13. package/model-function/generate-speech/generateSpeech.js +7 -1
  14. package/model-function/generate-speech/streamSpeech.cjs +6 -1
  15. package/model-function/generate-speech/streamSpeech.d.ts +3 -3
  16. package/model-function/generate-speech/streamSpeech.js +6 -1
  17. package/model-function/generate-structure/StructureFromTextGenerationModel.cjs +5 -5
  18. package/model-function/generate-structure/StructureFromTextGenerationModel.js +5 -5
  19. package/model-function/generate-structure/StructureFromTextStreamingModel.cjs +5 -5
  20. package/model-function/generate-structure/StructureFromTextStreamingModel.js +5 -5
  21. package/model-function/generate-structure/generateStructure.cjs +7 -1
  22. package/model-function/generate-structure/generateStructure.d.ts +3 -3
  23. package/model-function/generate-structure/generateStructure.js +7 -1
  24. package/model-function/generate-structure/streamStructure.cjs +6 -1
  25. package/model-function/generate-structure/streamStructure.d.ts +3 -3
  26. package/model-function/generate-structure/streamStructure.js +6 -1
  27. package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +2 -2
  28. package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +2 -2
  29. package/model-function/generate-text/PromptTemplateTextGenerationModel.js +2 -2
  30. package/model-function/generate-text/TextGenerationModel.d.ts +31 -5
  31. package/model-function/generate-text/generateText.cjs +15 -3
  32. package/model-function/generate-text/generateText.d.ts +4 -3
  33. package/model-function/generate-text/generateText.js +15 -3
  34. package/model-function/generate-text/prompt-template/trimChatPrompt.cjs +1 -1
  35. package/model-function/generate-text/prompt-template/trimChatPrompt.js +1 -1
  36. package/model-function/generate-text/streamText.cjs +6 -1
  37. package/model-function/generate-text/streamText.d.ts +3 -3
  38. package/model-function/generate-text/streamText.js +6 -1
  39. package/model-function/generate-transcription/generateTranscription.cjs +1 -1
  40. package/model-function/generate-transcription/generateTranscription.d.ts +2 -2
  41. package/model-function/generate-transcription/generateTranscription.js +1 -1
  42. package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +27 -31
  43. package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +2 -2
  44. package/model-provider/anthropic/AnthropicTextGenerationModel.js +27 -31
  45. package/model-provider/cohere/CohereFacade.cjs +1 -1
  46. package/model-provider/cohere/CohereFacade.d.ts +1 -1
  47. package/model-provider/cohere/CohereFacade.js +1 -1
  48. package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +5 -5
  49. package/model-provider/cohere/CohereTextGenerationModel.cjs +34 -43
  50. package/model-provider/cohere/CohereTextGenerationModel.d.ts +3 -4
  51. package/model-provider/cohere/CohereTextGenerationModel.js +34 -43
  52. package/model-provider/huggingface/HuggingFaceFacade.cjs +1 -1
  53. package/model-provider/huggingface/HuggingFaceFacade.d.ts +1 -1
  54. package/model-provider/huggingface/HuggingFaceFacade.js +1 -1
  55. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +31 -41
  56. package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +3 -4
  57. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +31 -41
  58. package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +4 -4
  59. package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +2 -2
  60. package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +4 -4
  61. package/model-provider/mistral/MistralTextGenerationModel.cjs +5 -5
  62. package/model-provider/mistral/MistralTextGenerationModel.d.ts +2 -2
  63. package/model-provider/mistral/MistralTextGenerationModel.js +5 -5
  64. package/model-provider/ollama/OllamaTextGenerationModel.cjs +4 -4
  65. package/model-provider/ollama/OllamaTextGenerationModel.d.ts +2 -2
  66. package/model-provider/ollama/OllamaTextGenerationModel.js +4 -4
  67. package/model-provider/openai/OpenAICompletionModel.cjs +48 -53
  68. package/model-provider/openai/OpenAICompletionModel.d.ts +3 -6
  69. package/model-provider/openai/OpenAICompletionModel.js +48 -53
  70. package/model-provider/openai/OpenAIFacade.cjs +2 -2
  71. package/model-provider/openai/OpenAIFacade.d.ts +2 -2
  72. package/model-provider/openai/OpenAIFacade.js +2 -2
  73. package/model-provider/openai/chat/AbstractOpenAIChatModel.cjs +51 -55
  74. package/model-provider/openai/chat/AbstractOpenAIChatModel.d.ts +36 -8
  75. package/model-provider/openai/chat/AbstractOpenAIChatModel.js +51 -55
  76. package/model-provider/openai/chat/OpenAIChatModel.cjs +3 -3
  77. package/model-provider/openai/chat/OpenAIChatModel.d.ts +1 -1
  78. package/model-provider/openai/chat/OpenAIChatModel.js +3 -3
  79. package/model-provider/openai/chat/OpenAIChatModel.test.cjs +61 -0
  80. package/model-provider/openai/chat/OpenAIChatModel.test.d.ts +1 -0
  81. package/model-provider/openai/chat/OpenAIChatModel.test.js +59 -0
  82. package/model-provider/openai/chat/OpenAIChatStreamIterable.cjs +8 -3
  83. package/model-provider/openai/chat/OpenAIChatStreamIterable.d.ts +1 -1
  84. package/model-provider/openai/chat/OpenAIChatStreamIterable.js +8 -3
  85. package/model-provider/openai-compatible/OpenAICompatibleChatModel.cjs +2 -2
  86. package/model-provider/openai-compatible/OpenAICompatibleChatModel.js +2 -2
  87. package/model-provider/openai-compatible/OpenAICompatibleFacade.cjs +1 -1
  88. package/model-provider/openai-compatible/OpenAICompatibleFacade.d.ts +1 -1
  89. package/model-provider/openai-compatible/OpenAICompatibleFacade.js +1 -1
  90. package/package.json +1 -1
  91. package/tool/execute-tool/executeTool.cjs +1 -1
  92. package/tool/execute-tool/executeTool.d.ts +2 -2
  93. package/tool/execute-tool/executeTool.js +1 -1
  94. package/tool/generate-tool-call/TextGenerationToolCallModel.cjs +4 -4
  95. package/tool/generate-tool-call/TextGenerationToolCallModel.js +4 -4
  96. package/tool/generate-tool-call/generateToolCall.cjs +7 -1
  97. package/tool/generate-tool-call/generateToolCall.d.ts +3 -3
  98. package/tool/generate-tool-call/generateToolCall.js +7 -1
  99. package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.cjs +4 -4
  100. package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.js +4 -4
  101. package/tool/generate-tool-calls-or-text/generateToolCallsOrText.cjs +1 -1
  102. package/tool/generate-tool-calls-or-text/generateToolCallsOrText.d.ts +2 -2
  103. package/tool/generate-tool-calls-or-text/generateToolCallsOrText.js +1 -1
  104. package/tool/use-tools-or-generate-text/useToolsOrGenerateText.cjs +1 -1
  105. package/tool/use-tools-or-generate-text/useToolsOrGenerateText.js +1 -1
@@ -26,7 +26,6 @@ export type CohereTextGenerationModelType = keyof typeof COHERE_TEXT_GENERATION_
26
26
  export interface CohereTextGenerationModelSettings extends TextGenerationModelSettings {
27
27
  api?: ApiConfiguration;
28
28
  model: CohereTextGenerationModelType;
29
- numGenerations?: number;
30
29
  temperature?: number;
31
30
  k?: number;
32
31
  p?: number;
@@ -46,7 +45,7 @@ export interface CohereTextGenerationModelSettings extends TextGenerationModelSe
46
45
  * const model = new CohereTextGenerationModel({
47
46
  * model: "command-nightly",
48
47
  * temperature: 0.7,
49
- * maxCompletionTokens: 500,
48
+ * maxGenerationTokens: 500,
50
49
  * });
51
50
  *
52
51
  * const text = await generateText(
@@ -65,7 +64,7 @@ export declare class CohereTextGenerationModel extends AbstractModel<CohereTextG
65
64
  responseFormat: CohereTextGenerationResponseFormatType<RESPONSE>;
66
65
  } & FunctionOptions): Promise<RESPONSE>;
67
66
  get settingsForEvent(): Partial<CohereTextGenerationModelSettings>;
68
- doGenerateText(prompt: string, options?: FunctionOptions): Promise<{
67
+ doGenerateTexts(prompt: string, options?: FunctionOptions): Promise<{
69
68
  response: {
70
69
  prompt: string;
71
70
  id: string;
@@ -80,7 +79,7 @@ export declare class CohereTextGenerationModel extends AbstractModel<CohereTextG
80
79
  };
81
80
  } | undefined;
82
81
  };
83
- text: string;
82
+ texts: string[];
84
83
  }>;
85
84
  doStreamText(prompt: string, options?: FunctionOptions): Promise<AsyncIterable<Delta<string>>>;
86
85
  extractTextDelta(fullDelta: CohereTextGenerationDelta): string | undefined;
@@ -34,7 +34,7 @@ export const COHERE_TEXT_GENERATION_MODELS = {
34
34
  * const model = new CohereTextGenerationModel({
35
35
  * model: "command-nightly",
36
36
  * temperature: 0.7,
37
- * maxCompletionTokens: 500,
37
+ * maxGenerationTokens: 500,
38
38
  * });
39
39
  *
40
40
  * const text = await generateText(
@@ -77,28 +77,45 @@ export class CohereTextGenerationModel extends AbstractModel {
77
77
  return countTokens(this.tokenizer, input);
78
78
  }
79
79
  async callAPI(prompt, options) {
80
+ const api = this.settings.api ?? new CohereApiConfiguration();
81
+ const responseFormat = options.responseFormat;
82
+ const abortSignal = options.run?.abortSignal;
80
83
  return callWithRetryAndThrottle({
81
84
  retry: this.settings.api?.retry,
82
85
  throttle: this.settings.api?.throttle,
83
- call: async () => callCohereTextGenerationAPI({
84
- ...this.settings,
85
- // use endSequences instead of stopSequences
86
- // to exclude stop tokens from the generated text
87
- endSequences: this.settings.stopSequences,
88
- maxTokens: this.settings.maxCompletionTokens,
89
- // mapped name because of conflict with stopSequences:
90
- stopSequences: this.settings.cohereStopSequences,
91
- abortSignal: options.run?.abortSignal,
92
- responseFormat: options.responseFormat,
93
- prompt,
94
- }),
86
+ call: async () => {
87
+ return postJsonToApi({
88
+ url: api.assembleUrl(`/generate`),
89
+ headers: api.headers,
90
+ body: {
91
+ stream: responseFormat.stream,
92
+ model: this.settings.model,
93
+ prompt,
94
+ num_generations: this.settings.numberOfGenerations,
95
+ max_tokens: this.settings.maxGenerationTokens,
96
+ temperature: this.settings.temperature,
97
+ k: this.settings.k,
98
+ p: this.settings.p,
99
+ frequency_penalty: this.settings.frequencyPenalty,
100
+ presence_penalty: this.settings.presencePenalty,
101
+ end_sequences: this.settings.stopSequences,
102
+ stop_sequences: this.settings.cohereStopSequences,
103
+ return_likelihoods: this.settings.returnLikelihoods,
104
+ logit_bias: this.settings.logitBias,
105
+ truncate: this.settings.truncate,
106
+ },
107
+ failedResponseHandler: failedCohereCallResponseHandler,
108
+ successfulResponseHandler: responseFormat.handler,
109
+ abortSignal,
110
+ });
111
+ },
95
112
  });
96
113
  }
97
114
  get settingsForEvent() {
98
115
  const eventSettingProperties = [
99
- "maxCompletionTokens",
116
+ "maxGenerationTokens",
100
117
  "stopSequences",
101
- "numGenerations",
118
+ "numberOfGenerations",
102
119
  "temperature",
103
120
  "k",
104
121
  "p",
@@ -111,14 +128,14 @@ export class CohereTextGenerationModel extends AbstractModel {
111
128
  ];
112
129
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
113
130
  }
114
- async doGenerateText(prompt, options) {
131
+ async doGenerateTexts(prompt, options) {
115
132
  const response = await this.callAPI(prompt, {
116
133
  ...options,
117
134
  responseFormat: CohereTextGenerationResponseFormat.json,
118
135
  });
119
136
  return {
120
137
  response,
121
- text: response.generations[0].text,
138
+ texts: response.generations.map((generation) => generation.text),
122
139
  };
123
140
  }
124
141
  doStreamText(prompt, options) {
@@ -173,32 +190,6 @@ const cohereTextGenerationResponseSchema = z.object({
173
190
  })
174
191
  .optional(),
175
192
  });
176
- async function callCohereTextGenerationAPI({ api = new CohereApiConfiguration(), abortSignal, responseFormat, model, prompt, numGenerations, maxTokens, temperature, k, p, frequencyPenalty, presencePenalty, endSequences, stopSequences, returnLikelihoods, logitBias, truncate, }) {
177
- return postJsonToApi({
178
- url: api.assembleUrl(`/generate`),
179
- headers: api.headers,
180
- body: {
181
- stream: responseFormat.stream,
182
- model,
183
- prompt,
184
- num_generations: numGenerations,
185
- max_tokens: maxTokens,
186
- temperature,
187
- k,
188
- p,
189
- frequency_penalty: frequencyPenalty,
190
- presence_penalty: presencePenalty,
191
- end_sequences: endSequences,
192
- stop_sequences: stopSequences,
193
- return_likelihoods: returnLikelihoods,
194
- logit_bias: logitBias,
195
- truncate,
196
- },
197
- failedResponseHandler: failedCohereCallResponseHandler,
198
- successfulResponseHandler: responseFormat.handler,
199
- abortSignal,
200
- });
201
- }
202
193
  const cohereTextStreamingResponseSchema = new ZodSchema(z.discriminatedUnion("is_finished", [
203
194
  z.object({
204
195
  text: z.string(),
@@ -12,7 +12,7 @@ const HuggingFaceTextGenerationModel_js_1 = require("./HuggingFaceTextGeneration
12
12
  * const model = huggingface.TextGenerator({
13
13
  * model: "tiiuae/falcon-7b",
14
14
  * temperature: 0.7,
15
- * maxCompletionTokens: 500,
15
+ * maxGenerationTokens: 500,
16
16
  * retry: retryWithExponentialBackoff({ maxTries: 5 }),
17
17
  * });
18
18
  *
@@ -9,7 +9,7 @@ import { HuggingFaceTextGenerationModel, HuggingFaceTextGenerationModelSettings
9
9
  * const model = huggingface.TextGenerator({
10
10
  * model: "tiiuae/falcon-7b",
11
11
  * temperature: 0.7,
12
- * maxCompletionTokens: 500,
12
+ * maxGenerationTokens: 500,
13
13
  * retry: retryWithExponentialBackoff({ maxTries: 5 }),
14
14
  * });
15
15
  *
@@ -9,7 +9,7 @@ import { HuggingFaceTextGenerationModel, } from "./HuggingFaceTextGenerationMode
9
9
  * const model = huggingface.TextGenerator({
10
10
  * model: "tiiuae/falcon-7b",
11
11
  * temperature: 0.7,
12
- * maxCompletionTokens: 500,
12
+ * maxGenerationTokens: 500,
13
13
  * retry: retryWithExponentialBackoff({ maxTries: 5 }),
14
14
  * });
15
15
  *
@@ -17,7 +17,7 @@ const HuggingFaceError_js_1 = require("./HuggingFaceError.cjs");
17
17
  * const model = new HuggingFaceTextGenerationModel({
18
18
  * model: "tiiuae/falcon-7b",
19
19
  * temperature: 0.7,
20
- * maxCompletionTokens: 500,
20
+ * maxGenerationTokens: 500,
21
21
  * retry: retryWithExponentialBackoff({ maxTries: 5 }),
22
22
  * });
23
23
  *
@@ -58,41 +58,57 @@ class HuggingFaceTextGenerationModel extends AbstractModel_js_1.AbstractModel {
58
58
  return this.settings.model;
59
59
  }
60
60
  async callAPI(prompt, options) {
61
+ const api = this.settings.api ?? new HuggingFaceApiConfiguration_js_1.HuggingFaceApiConfiguration();
62
+ const abortSignal = options?.run?.abortSignal;
61
63
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
62
64
  retry: this.settings.api?.retry,
63
65
  throttle: this.settings.api?.throttle,
64
- call: async () => callHuggingFaceTextGenerationAPI({
65
- options: {
66
- useCache: true,
67
- waitForModel: true,
68
- },
69
- ...this.settings,
70
- maxNewTokens: this.settings.maxCompletionTokens,
71
- abortSignal: options?.run?.abortSignal,
72
- inputs: prompt,
73
- }),
66
+ call: async () => {
67
+ return (0, postToApi_js_1.postJsonToApi)({
68
+ url: api.assembleUrl(`/${this.settings.model}`),
69
+ headers: api.headers,
70
+ body: {
71
+ inputs: prompt,
72
+ top_k: this.settings.topK,
73
+ top_p: this.settings.topP,
74
+ temperature: this.settings.temperature,
75
+ repetition_penalty: this.settings.repetitionPenalty,
76
+ max_new_tokens: this.settings.maxGenerationTokens,
77
+ max_time: this.settings.maxTime,
78
+ num_return_sequences: this.settings.numberOfGenerations,
79
+ do_sample: this.settings.doSample,
80
+ options: {
81
+ use_cache: true,
82
+ wait_for_model: true,
83
+ },
84
+ },
85
+ failedResponseHandler: HuggingFaceError_js_1.failedHuggingFaceCallResponseHandler,
86
+ successfulResponseHandler: (0, postToApi_js_1.createJsonResponseHandler)(huggingFaceTextGenerationResponseSchema),
87
+ abortSignal,
88
+ });
89
+ },
74
90
  });
75
91
  }
76
92
  get settingsForEvent() {
77
93
  const eventSettingProperties = [
78
94
  "stopSequences",
79
- "maxCompletionTokens",
95
+ "maxGenerationTokens",
96
+ "numberOfGenerations",
80
97
  "topK",
81
98
  "topP",
82
99
  "temperature",
83
100
  "repetitionPenalty",
84
101
  "maxTime",
85
- "numReturnSequences",
86
102
  "doSample",
87
103
  "options",
88
104
  ];
89
105
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
90
106
  }
91
- async doGenerateText(prompt, options) {
107
+ async doGenerateTexts(prompt, options) {
92
108
  const response = await this.callAPI(prompt, options);
93
109
  return {
94
110
  response,
95
- text: response[0].generated_text,
111
+ texts: response.map((response) => response.generated_text),
96
112
  };
97
113
  }
98
114
  withPromptTemplate(promptTemplate) {
@@ -109,29 +125,3 @@ exports.HuggingFaceTextGenerationModel = HuggingFaceTextGenerationModel;
109
125
  const huggingFaceTextGenerationResponseSchema = zod_1.z.array(zod_1.z.object({
110
126
  generated_text: zod_1.z.string(),
111
127
  }));
112
- async function callHuggingFaceTextGenerationAPI({ api = new HuggingFaceApiConfiguration_js_1.HuggingFaceApiConfiguration(), abortSignal, model, inputs, topK, topP, temperature, repetitionPenalty, maxNewTokens, maxTime, numReturnSequences, doSample, options, }) {
113
- return (0, postToApi_js_1.postJsonToApi)({
114
- url: api.assembleUrl(`/${model}`),
115
- headers: api.headers,
116
- body: {
117
- inputs,
118
- top_k: topK,
119
- top_p: topP,
120
- temperature,
121
- repetition_penalty: repetitionPenalty,
122
- max_new_tokens: maxNewTokens,
123
- max_time: maxTime,
124
- num_return_sequences: numReturnSequences,
125
- do_sample: doSample,
126
- options: options
127
- ? {
128
- use_cache: options?.useCache,
129
- wait_for_model: options?.waitForModel,
130
- }
131
- : undefined,
132
- },
133
- failedResponseHandler: HuggingFaceError_js_1.failedHuggingFaceCallResponseHandler,
134
- successfulResponseHandler: (0, postToApi_js_1.createJsonResponseHandler)(huggingFaceTextGenerationResponseSchema),
135
- abortSignal,
136
- });
137
- }
@@ -13,7 +13,6 @@ export interface HuggingFaceTextGenerationModelSettings extends TextGenerationMo
13
13
  temperature?: number;
14
14
  repetitionPenalty?: number;
15
15
  maxTime?: number;
16
- numReturnSequences?: number;
17
16
  doSample?: boolean;
18
17
  options?: {
19
18
  useCache?: boolean;
@@ -29,7 +28,7 @@ export interface HuggingFaceTextGenerationModelSettings extends TextGenerationMo
29
28
  * const model = new HuggingFaceTextGenerationModel({
30
29
  * model: "tiiuae/falcon-7b",
31
30
  * temperature: 0.7,
32
- * maxCompletionTokens: 500,
31
+ * maxGenerationTokens: 500,
33
32
  * retry: retryWithExponentialBackoff({ maxTries: 5 }),
34
33
  * });
35
34
  *
@@ -47,11 +46,11 @@ export declare class HuggingFaceTextGenerationModel extends AbstractModel<Huggin
47
46
  readonly countPromptTokens: undefined;
48
47
  callAPI(prompt: string, options?: FunctionOptions): Promise<HuggingFaceTextGenerationResponse>;
49
48
  get settingsForEvent(): Partial<HuggingFaceTextGenerationModelSettings>;
50
- doGenerateText(prompt: string, options?: FunctionOptions): Promise<{
49
+ doGenerateTexts(prompt: string, options?: FunctionOptions): Promise<{
51
50
  response: {
52
51
  generated_text: string;
53
52
  }[];
54
- text: string;
53
+ texts: string[];
55
54
  }>;
56
55
  withPromptTemplate<INPUT_PROMPT>(promptTemplate: TextGenerationPromptTemplate<INPUT_PROMPT, string>): PromptTemplateTextGenerationModel<INPUT_PROMPT, string, HuggingFaceTextGenerationModelSettings, this>;
57
56
  withSettings(additionalSettings: Partial<HuggingFaceTextGenerationModelSettings>): this;
@@ -14,7 +14,7 @@ import { failedHuggingFaceCallResponseHandler } from "./HuggingFaceError.js";
14
14
  * const model = new HuggingFaceTextGenerationModel({
15
15
  * model: "tiiuae/falcon-7b",
16
16
  * temperature: 0.7,
17
- * maxCompletionTokens: 500,
17
+ * maxGenerationTokens: 500,
18
18
  * retry: retryWithExponentialBackoff({ maxTries: 5 }),
19
19
  * });
20
20
  *
@@ -55,41 +55,57 @@ export class HuggingFaceTextGenerationModel extends AbstractModel {
55
55
  return this.settings.model;
56
56
  }
57
57
  async callAPI(prompt, options) {
58
+ const api = this.settings.api ?? new HuggingFaceApiConfiguration();
59
+ const abortSignal = options?.run?.abortSignal;
58
60
  return callWithRetryAndThrottle({
59
61
  retry: this.settings.api?.retry,
60
62
  throttle: this.settings.api?.throttle,
61
- call: async () => callHuggingFaceTextGenerationAPI({
62
- options: {
63
- useCache: true,
64
- waitForModel: true,
65
- },
66
- ...this.settings,
67
- maxNewTokens: this.settings.maxCompletionTokens,
68
- abortSignal: options?.run?.abortSignal,
69
- inputs: prompt,
70
- }),
63
+ call: async () => {
64
+ return postJsonToApi({
65
+ url: api.assembleUrl(`/${this.settings.model}`),
66
+ headers: api.headers,
67
+ body: {
68
+ inputs: prompt,
69
+ top_k: this.settings.topK,
70
+ top_p: this.settings.topP,
71
+ temperature: this.settings.temperature,
72
+ repetition_penalty: this.settings.repetitionPenalty,
73
+ max_new_tokens: this.settings.maxGenerationTokens,
74
+ max_time: this.settings.maxTime,
75
+ num_return_sequences: this.settings.numberOfGenerations,
76
+ do_sample: this.settings.doSample,
77
+ options: {
78
+ use_cache: true,
79
+ wait_for_model: true,
80
+ },
81
+ },
82
+ failedResponseHandler: failedHuggingFaceCallResponseHandler,
83
+ successfulResponseHandler: createJsonResponseHandler(huggingFaceTextGenerationResponseSchema),
84
+ abortSignal,
85
+ });
86
+ },
71
87
  });
72
88
  }
73
89
  get settingsForEvent() {
74
90
  const eventSettingProperties = [
75
91
  "stopSequences",
76
- "maxCompletionTokens",
92
+ "maxGenerationTokens",
93
+ "numberOfGenerations",
77
94
  "topK",
78
95
  "topP",
79
96
  "temperature",
80
97
  "repetitionPenalty",
81
98
  "maxTime",
82
- "numReturnSequences",
83
99
  "doSample",
84
100
  "options",
85
101
  ];
86
102
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
87
103
  }
88
- async doGenerateText(prompt, options) {
104
+ async doGenerateTexts(prompt, options) {
89
105
  const response = await this.callAPI(prompt, options);
90
106
  return {
91
107
  response,
92
- text: response[0].generated_text,
108
+ texts: response.map((response) => response.generated_text),
93
109
  };
94
110
  }
95
111
  withPromptTemplate(promptTemplate) {
@@ -105,29 +121,3 @@ export class HuggingFaceTextGenerationModel extends AbstractModel {
105
121
  const huggingFaceTextGenerationResponseSchema = z.array(z.object({
106
122
  generated_text: z.string(),
107
123
  }));
108
- async function callHuggingFaceTextGenerationAPI({ api = new HuggingFaceApiConfiguration(), abortSignal, model, inputs, topK, topP, temperature, repetitionPenalty, maxNewTokens, maxTime, numReturnSequences, doSample, options, }) {
109
- return postJsonToApi({
110
- url: api.assembleUrl(`/${model}`),
111
- headers: api.headers,
112
- body: {
113
- inputs,
114
- top_k: topK,
115
- top_p: topP,
116
- temperature,
117
- repetition_penalty: repetitionPenalty,
118
- max_new_tokens: maxNewTokens,
119
- max_time: maxTime,
120
- num_return_sequences: numReturnSequences,
121
- do_sample: doSample,
122
- options: options
123
- ? {
124
- use_cache: options?.useCache,
125
- wait_for_model: options?.waitForModel,
126
- }
127
- : undefined,
128
- },
129
- failedResponseHandler: failedHuggingFaceCallResponseHandler,
130
- successfulResponseHandler: createJsonResponseHandler(huggingFaceTextGenerationResponseSchema),
131
- abortSignal,
132
- });
133
- }
@@ -43,7 +43,7 @@ class LlamaCppTextGenerationModel extends AbstractModel_js_1.AbstractModel {
43
43
  call: async () => callLlamaCppTextGenerationAPI({
44
44
  ...this.settings,
45
45
  // mapping
46
- nPredict: this.settings.maxCompletionTokens,
46
+ nPredict: this.settings.maxGenerationTokens,
47
47
  stop: this.settings.stopSequences,
48
48
  // other
49
49
  abortSignal: options.run?.abortSignal,
@@ -54,7 +54,7 @@ class LlamaCppTextGenerationModel extends AbstractModel_js_1.AbstractModel {
54
54
  }
55
55
  get settingsForEvent() {
56
56
  const eventSettingProperties = [
57
- "maxCompletionTokens",
57
+ "maxGenerationTokens",
58
58
  "stopSequences",
59
59
  "contextWindowSize",
60
60
  "cachePrompt",
@@ -80,14 +80,14 @@ class LlamaCppTextGenerationModel extends AbstractModel_js_1.AbstractModel {
80
80
  const tokens = await this.tokenizer.tokenize(prompt.text);
81
81
  return tokens.length;
82
82
  }
83
- async doGenerateText(prompt, options) {
83
+ async doGenerateTexts(prompt, options) {
84
84
  const response = await this.callAPI(prompt, {
85
85
  ...options,
86
86
  responseFormat: exports.LlamaCppTextGenerationResponseFormat.json,
87
87
  });
88
88
  return {
89
89
  response,
90
- text: response.content,
90
+ texts: [response.content],
91
91
  usage: {
92
92
  promptTokens: response.tokens_evaluated,
93
93
  completionTokens: response.tokens_predicted,
@@ -56,7 +56,7 @@ export declare class LlamaCppTextGenerationModel<CONTEXT_WINDOW_SIZE extends num
56
56
  } & FunctionOptions): Promise<RESPONSE>;
57
57
  get settingsForEvent(): Partial<LlamaCppTextGenerationModelSettings<CONTEXT_WINDOW_SIZE>>;
58
58
  countPromptTokens(prompt: LlamaCppTextGenerationPrompt): Promise<number>;
59
- doGenerateText(prompt: LlamaCppTextGenerationPrompt, options?: FunctionOptions): Promise<{
59
+ doGenerateTexts(prompt: LlamaCppTextGenerationPrompt, options?: FunctionOptions): Promise<{
60
60
  response: {
61
61
  model: string;
62
62
  prompt: string;
@@ -106,7 +106,7 @@ export declare class LlamaCppTextGenerationModel<CONTEXT_WINDOW_SIZE extends num
106
106
  tokens_predicted: number;
107
107
  truncated: boolean;
108
108
  };
109
- text: string;
109
+ texts: string[];
110
110
  usage: {
111
111
  promptTokens: number;
112
112
  completionTokens: number;
@@ -40,7 +40,7 @@ export class LlamaCppTextGenerationModel extends AbstractModel {
40
40
  call: async () => callLlamaCppTextGenerationAPI({
41
41
  ...this.settings,
42
42
  // mapping
43
- nPredict: this.settings.maxCompletionTokens,
43
+ nPredict: this.settings.maxGenerationTokens,
44
44
  stop: this.settings.stopSequences,
45
45
  // other
46
46
  abortSignal: options.run?.abortSignal,
@@ -51,7 +51,7 @@ export class LlamaCppTextGenerationModel extends AbstractModel {
51
51
  }
52
52
  get settingsForEvent() {
53
53
  const eventSettingProperties = [
54
- "maxCompletionTokens",
54
+ "maxGenerationTokens",
55
55
  "stopSequences",
56
56
  "contextWindowSize",
57
57
  "cachePrompt",
@@ -77,14 +77,14 @@ export class LlamaCppTextGenerationModel extends AbstractModel {
77
77
  const tokens = await this.tokenizer.tokenize(prompt.text);
78
78
  return tokens.length;
79
79
  }
80
- async doGenerateText(prompt, options) {
80
+ async doGenerateTexts(prompt, options) {
81
81
  const response = await this.callAPI(prompt, {
82
82
  ...options,
83
83
  responseFormat: LlamaCppTextGenerationResponseFormat.json,
84
84
  });
85
85
  return {
86
86
  response,
87
- text: response.content,
87
+ texts: [response.content],
88
88
  usage: {
89
89
  promptTokens: response.tokens_evaluated,
90
90
  completionTokens: response.tokens_predicted,
@@ -45,7 +45,7 @@ class MistralTextGenerationModel extends AbstractModel_js_1.AbstractModel {
45
45
  return this.settings.model;
46
46
  }
47
47
  async callAPI(prompt, options) {
48
- const { model, temperature, topP, safeMode, randomSeed, maxCompletionTokens, } = this.settings;
48
+ const { model, temperature, topP, safeMode, randomSeed, maxGenerationTokens, } = this.settings;
49
49
  const api = this.settings.api ?? new MistralApiConfiguration_js_1.MistralApiConfiguration();
50
50
  const abortSignal = options.run?.abortSignal;
51
51
  const stream = options.responseFormat.stream;
@@ -62,7 +62,7 @@ class MistralTextGenerationModel extends AbstractModel_js_1.AbstractModel {
62
62
  model,
63
63
  temperature,
64
64
  top_p: topP,
65
- max_tokens: maxCompletionTokens,
65
+ max_tokens: maxGenerationTokens,
66
66
  safe_mode: safeMode,
67
67
  random_seed: randomSeed,
68
68
  },
@@ -74,7 +74,7 @@ class MistralTextGenerationModel extends AbstractModel_js_1.AbstractModel {
74
74
  }
75
75
  get settingsForEvent() {
76
76
  const eventSettingProperties = [
77
- "maxCompletionTokens",
77
+ "maxGenerationTokens",
78
78
  "temperature",
79
79
  "topP",
80
80
  "safeMode",
@@ -82,14 +82,14 @@ class MistralTextGenerationModel extends AbstractModel_js_1.AbstractModel {
82
82
  ];
83
83
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
84
84
  }
85
- async doGenerateText(prompt, options) {
85
+ async doGenerateTexts(prompt, options) {
86
86
  const response = await this.callAPI(prompt, {
87
87
  ...options,
88
88
  responseFormat: exports.MistralTextGenerationResponseFormat.json,
89
89
  });
90
90
  return {
91
91
  response,
92
- text: response.choices[0].message.content,
92
+ texts: response.choices.map((choice) => choice.message.content),
93
93
  };
94
94
  }
95
95
  doStreamText(prompt, options) {
@@ -57,7 +57,7 @@ export declare class MistralTextGenerationModel extends AbstractModel<MistralTex
57
57
  responseFormat: MistralTextGenerationResponseFormatType<RESULT>;
58
58
  } & FunctionOptions): Promise<RESULT>;
59
59
  get settingsForEvent(): Partial<MistralTextGenerationModelSettings>;
60
- doGenerateText(prompt: MistralTextGenerationPrompt, options?: FunctionOptions): Promise<{
60
+ doGenerateTexts(prompt: MistralTextGenerationPrompt, options?: FunctionOptions): Promise<{
61
61
  response: {
62
62
  object: string;
63
63
  usage: {
@@ -77,7 +77,7 @@ export declare class MistralTextGenerationModel extends AbstractModel<MistralTex
77
77
  index: number;
78
78
  }[];
79
79
  };
80
- text: string;
80
+ texts: string[];
81
81
  }>;
82
82
  doStreamText(prompt: MistralTextGenerationPrompt, options?: FunctionOptions): Promise<AsyncIterable<Delta<string>>>;
83
83
  /**
@@ -42,7 +42,7 @@ export class MistralTextGenerationModel extends AbstractModel {
42
42
  return this.settings.model;
43
43
  }
44
44
  async callAPI(prompt, options) {
45
- const { model, temperature, topP, safeMode, randomSeed, maxCompletionTokens, } = this.settings;
45
+ const { model, temperature, topP, safeMode, randomSeed, maxGenerationTokens, } = this.settings;
46
46
  const api = this.settings.api ?? new MistralApiConfiguration();
47
47
  const abortSignal = options.run?.abortSignal;
48
48
  const stream = options.responseFormat.stream;
@@ -59,7 +59,7 @@ export class MistralTextGenerationModel extends AbstractModel {
59
59
  model,
60
60
  temperature,
61
61
  top_p: topP,
62
- max_tokens: maxCompletionTokens,
62
+ max_tokens: maxGenerationTokens,
63
63
  safe_mode: safeMode,
64
64
  random_seed: randomSeed,
65
65
  },
@@ -71,7 +71,7 @@ export class MistralTextGenerationModel extends AbstractModel {
71
71
  }
72
72
  get settingsForEvent() {
73
73
  const eventSettingProperties = [
74
- "maxCompletionTokens",
74
+ "maxGenerationTokens",
75
75
  "temperature",
76
76
  "topP",
77
77
  "safeMode",
@@ -79,14 +79,14 @@ export class MistralTextGenerationModel extends AbstractModel {
79
79
  ];
80
80
  return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
81
81
  }
82
- async doGenerateText(prompt, options) {
82
+ async doGenerateTexts(prompt, options) {
83
83
  const response = await this.callAPI(prompt, {
84
84
  ...options,
85
85
  responseFormat: MistralTextGenerationResponseFormat.json,
86
86
  });
87
87
  return {
88
88
  response,
89
- text: response.choices[0].message.content,
89
+ texts: response.choices.map((choice) => choice.message.content),
90
90
  };
91
91
  }
92
92
  doStreamText(prompt, options) {