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.
- package/README.md +15 -8
- package/composed-function/summarize/summarizeRecursivelyWithTextGenerationAndTokenSplitting.cjs +1 -1
- package/composed-function/summarize/summarizeRecursivelyWithTextGenerationAndTokenSplitting.js +1 -1
- package/model-function/Model.d.ts +2 -2
- package/model-function/embed/embed.cjs +14 -2
- package/model-function/embed/embed.d.ts +6 -6
- package/model-function/embed/embed.js +14 -2
- package/model-function/generate-image/generateImage.cjs +10 -9
- package/model-function/generate-image/generateImage.d.ts +4 -6
- package/model-function/generate-image/generateImage.js +10 -9
- package/model-function/generate-speech/generateSpeech.cjs +7 -1
- package/model-function/generate-speech/generateSpeech.d.ts +3 -3
- package/model-function/generate-speech/generateSpeech.js +7 -1
- package/model-function/generate-speech/streamSpeech.cjs +6 -1
- package/model-function/generate-speech/streamSpeech.d.ts +3 -3
- package/model-function/generate-speech/streamSpeech.js +6 -1
- package/model-function/generate-structure/StructureFromTextGenerationModel.cjs +5 -5
- package/model-function/generate-structure/StructureFromTextGenerationModel.js +5 -5
- package/model-function/generate-structure/StructureFromTextStreamingModel.cjs +5 -5
- package/model-function/generate-structure/StructureFromTextStreamingModel.js +5 -5
- package/model-function/generate-structure/generateStructure.cjs +7 -1
- package/model-function/generate-structure/generateStructure.d.ts +3 -3
- package/model-function/generate-structure/generateStructure.js +7 -1
- package/model-function/generate-structure/streamStructure.cjs +6 -1
- package/model-function/generate-structure/streamStructure.d.ts +3 -3
- package/model-function/generate-structure/streamStructure.js +6 -1
- package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +2 -2
- package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +2 -2
- package/model-function/generate-text/PromptTemplateTextGenerationModel.js +2 -2
- package/model-function/generate-text/TextGenerationModel.d.ts +31 -5
- package/model-function/generate-text/generateText.cjs +15 -3
- package/model-function/generate-text/generateText.d.ts +4 -3
- package/model-function/generate-text/generateText.js +15 -3
- package/model-function/generate-text/prompt-template/trimChatPrompt.cjs +1 -1
- package/model-function/generate-text/prompt-template/trimChatPrompt.js +1 -1
- package/model-function/generate-text/streamText.cjs +6 -1
- package/model-function/generate-text/streamText.d.ts +3 -3
- package/model-function/generate-text/streamText.js +6 -1
- package/model-function/generate-transcription/generateTranscription.cjs +1 -1
- package/model-function/generate-transcription/generateTranscription.d.ts +2 -2
- package/model-function/generate-transcription/generateTranscription.js +1 -1
- package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +27 -31
- package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +2 -2
- package/model-provider/anthropic/AnthropicTextGenerationModel.js +27 -31
- package/model-provider/cohere/CohereFacade.cjs +1 -1
- package/model-provider/cohere/CohereFacade.d.ts +1 -1
- package/model-provider/cohere/CohereFacade.js +1 -1
- package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +5 -5
- package/model-provider/cohere/CohereTextGenerationModel.cjs +34 -43
- package/model-provider/cohere/CohereTextGenerationModel.d.ts +3 -4
- package/model-provider/cohere/CohereTextGenerationModel.js +34 -43
- package/model-provider/huggingface/HuggingFaceFacade.cjs +1 -1
- package/model-provider/huggingface/HuggingFaceFacade.d.ts +1 -1
- package/model-provider/huggingface/HuggingFaceFacade.js +1 -1
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +31 -41
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +3 -4
- package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +31 -41
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +4 -4
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +2 -2
- package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +4 -4
- package/model-provider/mistral/MistralTextGenerationModel.cjs +5 -5
- package/model-provider/mistral/MistralTextGenerationModel.d.ts +2 -2
- package/model-provider/mistral/MistralTextGenerationModel.js +5 -5
- package/model-provider/ollama/OllamaTextGenerationModel.cjs +4 -4
- package/model-provider/ollama/OllamaTextGenerationModel.d.ts +2 -2
- package/model-provider/ollama/OllamaTextGenerationModel.js +4 -4
- package/model-provider/openai/OpenAICompletionModel.cjs +48 -53
- package/model-provider/openai/OpenAICompletionModel.d.ts +3 -6
- package/model-provider/openai/OpenAICompletionModel.js +48 -53
- package/model-provider/openai/OpenAIFacade.cjs +2 -2
- package/model-provider/openai/OpenAIFacade.d.ts +2 -2
- package/model-provider/openai/OpenAIFacade.js +2 -2
- package/model-provider/openai/chat/AbstractOpenAIChatModel.cjs +51 -55
- package/model-provider/openai/chat/AbstractOpenAIChatModel.d.ts +36 -8
- package/model-provider/openai/chat/AbstractOpenAIChatModel.js +51 -55
- package/model-provider/openai/chat/OpenAIChatModel.cjs +3 -3
- package/model-provider/openai/chat/OpenAIChatModel.d.ts +1 -1
- package/model-provider/openai/chat/OpenAIChatModel.js +3 -3
- package/model-provider/openai/chat/OpenAIChatModel.test.cjs +61 -0
- package/model-provider/openai/chat/OpenAIChatModel.test.d.ts +1 -0
- package/model-provider/openai/chat/OpenAIChatModel.test.js +59 -0
- package/model-provider/openai/chat/OpenAIChatStreamIterable.cjs +8 -3
- package/model-provider/openai/chat/OpenAIChatStreamIterable.d.ts +1 -1
- package/model-provider/openai/chat/OpenAIChatStreamIterable.js +8 -3
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.cjs +2 -2
- package/model-provider/openai-compatible/OpenAICompatibleChatModel.js +2 -2
- package/model-provider/openai-compatible/OpenAICompatibleFacade.cjs +1 -1
- package/model-provider/openai-compatible/OpenAICompatibleFacade.d.ts +1 -1
- package/model-provider/openai-compatible/OpenAICompatibleFacade.js +1 -1
- package/package.json +1 -1
- package/tool/execute-tool/executeTool.cjs +1 -1
- package/tool/execute-tool/executeTool.d.ts +2 -2
- package/tool/execute-tool/executeTool.js +1 -1
- package/tool/generate-tool-call/TextGenerationToolCallModel.cjs +4 -4
- package/tool/generate-tool-call/TextGenerationToolCallModel.js +4 -4
- package/tool/generate-tool-call/generateToolCall.cjs +7 -1
- package/tool/generate-tool-call/generateToolCall.d.ts +3 -3
- package/tool/generate-tool-call/generateToolCall.js +7 -1
- package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.cjs +4 -4
- package/tool/generate-tool-calls-or-text/TextGenerationToolCallsOrGenerateTextModel.js +4 -4
- package/tool/generate-tool-calls-or-text/generateToolCallsOrText.cjs +1 -1
- package/tool/generate-tool-calls-or-text/generateToolCallsOrText.d.ts +2 -2
- package/tool/generate-tool-calls-or-text/generateToolCallsOrText.js +1 -1
- package/tool/use-tools-or-generate-text/useToolsOrGenerateText.cjs +1 -1
- 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
|
-
*
|
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
|
-
|
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
|
-
|
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
|
-
*
|
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 () =>
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
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
|
-
"
|
116
|
+
"maxGenerationTokens",
|
100
117
|
"stopSequences",
|
101
|
-
"
|
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
|
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
|
-
|
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
|
-
*
|
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
|
-
*
|
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
|
-
*
|
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
|
-
*
|
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 () =>
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
"
|
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
|
107
|
+
async doGenerateTexts(prompt, options) {
|
92
108
|
const response = await this.callAPI(prompt, options);
|
93
109
|
return {
|
94
110
|
response,
|
95
|
-
|
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
|
-
*
|
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
|
-
|
49
|
+
doGenerateTexts(prompt: string, options?: FunctionOptions): Promise<{
|
51
50
|
response: {
|
52
51
|
generated_text: string;
|
53
52
|
}[];
|
54
|
-
|
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
|
-
*
|
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 () =>
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
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
|
-
"
|
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
|
104
|
+
async doGenerateTexts(prompt, options) {
|
89
105
|
const response = await this.callAPI(prompt, options);
|
90
106
|
return {
|
91
107
|
response,
|
92
|
-
|
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.
|
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
|
-
"
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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
|
-
"
|
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
|
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
|
-
|
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,
|
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:
|
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
|
-
"
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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,
|
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:
|
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
|
-
"
|
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
|
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
|
-
|
89
|
+
texts: response.choices.map((choice) => choice.message.content),
|
90
90
|
};
|
91
91
|
}
|
92
92
|
doStreamText(prompt, options) {
|