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
@@ -5,18 +5,44 @@ import { BasicTokenizer, FullTokenizer } from "../tokenize-text/Tokenizer.js";
|
|
5
5
|
import { TextGenerationPromptTemplate } from "./TextGenerationPromptTemplate.js";
|
6
6
|
export interface TextGenerationModelSettings extends ModelSettings {
|
7
7
|
/**
|
8
|
-
*
|
8
|
+
* Specifies the maximum number of tokens (words, punctuation, parts of words) that the model can generate in a single response.
|
9
|
+
* It helps to control the length of the output.
|
10
|
+
*
|
9
11
|
* Does nothing if the model does not support this setting.
|
12
|
+
*
|
13
|
+
* Example: `maxGenerationTokens: 1000`
|
10
14
|
*/
|
11
|
-
|
15
|
+
maxGenerationTokens?: number | undefined;
|
12
16
|
/**
|
13
|
-
* Stop sequences to use.
|
17
|
+
* Stop sequences to use.
|
18
|
+
* Stop sequences are an array of strings or a single string that the model will recognize as end-of-text indicators.
|
19
|
+
* The model stops generating more content when it encounters any of these strings.
|
20
|
+
* This is particularly useful in scripted or formatted text generation, where a specific end point is required.
|
21
|
+
* Stop sequences not included in the generated text.
|
22
|
+
*
|
14
23
|
* Does nothing if the model does not support this setting.
|
24
|
+
*
|
25
|
+
* Example: `stopSequences: ['\n', 'END']`
|
15
26
|
*/
|
16
27
|
stopSequences?: string[] | undefined;
|
28
|
+
/**
|
29
|
+
* Number of texts to generate.
|
30
|
+
*
|
31
|
+
* Specifies the number of responses or completions the model should generate for a given prompt.
|
32
|
+
* This is useful when you need multiple different outputs or ideas for a single prompt.
|
33
|
+
* The model will generate 'n' distinct responses, each based on the same initial prompt.
|
34
|
+
* In a streaming model this will result in both responses streamed back in real time.
|
35
|
+
*
|
36
|
+
* Does nothing if the model does not support this setting.
|
37
|
+
*
|
38
|
+
* Example: `numberOfGenerations: 3` // The model will produce 3 different responses.
|
39
|
+
*/
|
40
|
+
numberOfGenerations?: number;
|
17
41
|
/**
|
18
42
|
* When true, the leading and trailing white space and line terminator characters
|
19
43
|
* are removed from the generated text.
|
44
|
+
*
|
45
|
+
* Default: true.
|
20
46
|
*/
|
21
47
|
trimWhitespace?: boolean;
|
22
48
|
}
|
@@ -34,9 +60,9 @@ export interface TextGenerationModel<PROMPT, SETTINGS extends TextGenerationMode
|
|
34
60
|
* Optional. Implement if you have a tokenizer and want to count the number of tokens in a prompt.
|
35
61
|
*/
|
36
62
|
readonly countPromptTokens: ((prompt: PROMPT) => PromiseLike<number>) | undefined;
|
37
|
-
|
63
|
+
doGenerateTexts(prompt: PROMPT, options?: FunctionOptions): PromiseLike<{
|
38
64
|
response: unknown;
|
39
|
-
|
65
|
+
texts: string[];
|
40
66
|
usage?: {
|
41
67
|
promptTokens: number;
|
42
68
|
completionTokens: number;
|
@@ -9,15 +9,27 @@ async function generateText(model, prompt, options) {
|
|
9
9
|
model,
|
10
10
|
options,
|
11
11
|
generateResponse: async (options) => {
|
12
|
-
const result = await model.
|
12
|
+
const result = await model.doGenerateTexts(prompt, options);
|
13
13
|
const shouldTrimWhitespace = model.settings.trimWhitespace ?? true;
|
14
|
+
const texts = shouldTrimWhitespace
|
15
|
+
? result.texts.map((text) => text.trim())
|
16
|
+
: result.texts;
|
14
17
|
return {
|
15
18
|
response: result.response,
|
16
|
-
extractedValue:
|
19
|
+
extractedValue: texts,
|
17
20
|
usage: result.usage,
|
18
21
|
};
|
19
22
|
},
|
20
23
|
});
|
21
|
-
|
24
|
+
const texts = fullResponse.value;
|
25
|
+
const text = texts[0];
|
26
|
+
return options?.fullResponse
|
27
|
+
? {
|
28
|
+
text,
|
29
|
+
texts,
|
30
|
+
response: fullResponse.response,
|
31
|
+
metadata: fullResponse.metadata,
|
32
|
+
}
|
33
|
+
: text;
|
22
34
|
}
|
23
35
|
exports.generateText = generateText;
|
@@ -23,12 +23,13 @@ import { TextGenerationModel, TextGenerationModelSettings } from "./TextGenerati
|
|
23
23
|
* @returns {Promise<string>} - A promise that resolves to the generated text.
|
24
24
|
*/
|
25
25
|
export declare function generateText<PROMPT>(model: TextGenerationModel<PROMPT, TextGenerationModelSettings>, prompt: PROMPT, options?: FunctionOptions & {
|
26
|
-
|
26
|
+
fullResponse?: false;
|
27
27
|
}): Promise<string>;
|
28
28
|
export declare function generateText<PROMPT>(model: TextGenerationModel<PROMPT, TextGenerationModelSettings>, prompt: PROMPT, options: FunctionOptions & {
|
29
|
-
|
29
|
+
fullResponse: true;
|
30
30
|
}): Promise<{
|
31
|
-
|
31
|
+
text: string;
|
32
|
+
texts: string[];
|
32
33
|
response: unknown;
|
33
34
|
metadata: ModelCallMetadata;
|
34
35
|
}>;
|
@@ -6,14 +6,26 @@ export async function generateText(model, prompt, options) {
|
|
6
6
|
model,
|
7
7
|
options,
|
8
8
|
generateResponse: async (options) => {
|
9
|
-
const result = await model.
|
9
|
+
const result = await model.doGenerateTexts(prompt, options);
|
10
10
|
const shouldTrimWhitespace = model.settings.trimWhitespace ?? true;
|
11
|
+
const texts = shouldTrimWhitespace
|
12
|
+
? result.texts.map((text) => text.trim())
|
13
|
+
: result.texts;
|
11
14
|
return {
|
12
15
|
response: result.response,
|
13
|
-
extractedValue:
|
16
|
+
extractedValue: texts,
|
14
17
|
usage: result.usage,
|
15
18
|
};
|
16
19
|
},
|
17
20
|
});
|
18
|
-
|
21
|
+
const texts = fullResponse.value;
|
22
|
+
const text = texts[0];
|
23
|
+
return options?.fullResponse
|
24
|
+
? {
|
25
|
+
text,
|
26
|
+
texts,
|
27
|
+
response: fullResponse.response,
|
28
|
+
metadata: fullResponse.metadata,
|
29
|
+
}
|
30
|
+
: text;
|
19
31
|
}
|
@@ -13,7 +13,7 @@ const ChatPrompt_js_1 = require("./ChatPrompt.cjs");
|
|
13
13
|
* @see https://modelfusion.dev/guide/function/generate-text#limiting-the-chat-length
|
14
14
|
*/
|
15
15
|
async function trimChatPrompt({ prompt, model, tokenLimit = model.contextWindowSize -
|
16
|
-
(model.settings.
|
16
|
+
(model.settings.maxGenerationTokens ?? model.contextWindowSize / 4), }) {
|
17
17
|
(0, ChatPrompt_js_1.validateChatPrompt)(prompt);
|
18
18
|
let minimalPrompt = {
|
19
19
|
system: prompt.system,
|
@@ -10,7 +10,7 @@ import { validateChatPrompt } from "./ChatPrompt.js";
|
|
10
10
|
* @see https://modelfusion.dev/guide/function/generate-text#limiting-the-chat-length
|
11
11
|
*/
|
12
12
|
export async function trimChatPrompt({ prompt, model, tokenLimit = model.contextWindowSize -
|
13
|
-
(model.settings.
|
13
|
+
(model.settings.maxGenerationTokens ?? model.contextWindowSize / 4), }) {
|
14
14
|
validateChatPrompt(prompt);
|
15
15
|
let minimalPrompt = {
|
16
16
|
system: prompt.system,
|
@@ -45,6 +45,11 @@ async function streamText(model, prompt, options) {
|
|
45
45
|
value: accumulatedText,
|
46
46
|
}),
|
47
47
|
});
|
48
|
-
return options?.
|
48
|
+
return options?.fullResponse
|
49
|
+
? {
|
50
|
+
textStream: fullResponse.value,
|
51
|
+
metadata: fullResponse.metadata,
|
52
|
+
}
|
53
|
+
: fullResponse.value;
|
49
54
|
}
|
50
55
|
exports.streamText = streamText;
|
@@ -27,11 +27,11 @@ import { TextStreamingModel } from "./TextGenerationModel.js";
|
|
27
27
|
* @returns {AsyncIterableResultPromise<string>} An async iterable promise that yields the generated text.
|
28
28
|
*/
|
29
29
|
export declare function streamText<PROMPT>(model: TextStreamingModel<PROMPT>, prompt: PROMPT, options?: FunctionOptions & {
|
30
|
-
|
30
|
+
fullResponse?: false;
|
31
31
|
}): Promise<AsyncIterable<string>>;
|
32
32
|
export declare function streamText<PROMPT>(model: TextStreamingModel<PROMPT>, prompt: PROMPT, options: FunctionOptions & {
|
33
|
-
|
33
|
+
fullResponse: true;
|
34
34
|
}): Promise<{
|
35
|
-
|
35
|
+
textStream: AsyncIterable<string>;
|
36
36
|
metadata: Omit<ModelCallMetadata, "durationInMs" | "finishTimestamp">;
|
37
37
|
}>;
|
@@ -42,5 +42,10 @@ export async function streamText(model, prompt, options) {
|
|
42
42
|
value: accumulatedText,
|
43
43
|
}),
|
44
44
|
});
|
45
|
-
return options?.
|
45
|
+
return options?.fullResponse
|
46
|
+
? {
|
47
|
+
textStream: fullResponse.value,
|
48
|
+
metadata: fullResponse.metadata,
|
49
|
+
}
|
50
|
+
: fullResponse.value;
|
46
51
|
}
|
@@ -16,6 +16,6 @@ async function generateTranscription(model, data, options) {
|
|
16
16
|
};
|
17
17
|
},
|
18
18
|
});
|
19
|
-
return options?.
|
19
|
+
return options?.fullResponse ? fullResponse : fullResponse.value;
|
20
20
|
}
|
21
21
|
exports.generateTranscription = generateTranscription;
|
@@ -21,10 +21,10 @@ import { TranscriptionModel, TranscriptionModelSettings } from "./TranscriptionM
|
|
21
21
|
* @returns {Promise<string>} A promise that resolves to the transcribed text.
|
22
22
|
*/
|
23
23
|
export declare function generateTranscription<DATA>(model: TranscriptionModel<DATA, TranscriptionModelSettings>, data: DATA, options?: FunctionOptions & {
|
24
|
-
|
24
|
+
fullResponse?: false;
|
25
25
|
}): Promise<string>;
|
26
26
|
export declare function generateTranscription<DATA>(model: TranscriptionModel<DATA, TranscriptionModelSettings>, data: DATA, options: FunctionOptions & {
|
27
|
-
|
27
|
+
fullResponse: true;
|
28
28
|
}): Promise<{
|
29
29
|
value: string;
|
30
30
|
response: unknown;
|
@@ -69,22 +69,38 @@ class AnthropicTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
69
69
|
return this.settings.model;
|
70
70
|
}
|
71
71
|
async callAPI(prompt, options) {
|
72
|
+
const api = this.settings.api ?? new AnthropicApiConfiguration_js_1.AnthropicApiConfiguration();
|
73
|
+
const responseFormat = options.responseFormat;
|
74
|
+
const abortSignal = options.run?.abortSignal;
|
75
|
+
const userId = this.settings.userId;
|
72
76
|
return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
|
73
77
|
retry: this.settings.api?.retry,
|
74
78
|
throttle: this.settings.api?.throttle,
|
75
|
-
call: async () =>
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
call: async () => {
|
80
|
+
return (0, postToApi_js_1.postJsonToApi)({
|
81
|
+
url: api.assembleUrl(`/complete`),
|
82
|
+
headers: api.headers,
|
83
|
+
body: {
|
84
|
+
model: this.settings.model,
|
85
|
+
prompt,
|
86
|
+
stream: responseFormat.stream,
|
87
|
+
max_tokens_to_sample: this.settings.maxGenerationTokens,
|
88
|
+
temperature: this.settings.temperature,
|
89
|
+
top_k: this.settings.topK,
|
90
|
+
top_p: this.settings.topP,
|
91
|
+
stop_sequences: this.settings.stopSequences,
|
92
|
+
metadata: userId != null ? { user_id: userId } : undefined,
|
93
|
+
},
|
94
|
+
failedResponseHandler: AnthropicError_js_1.failedAnthropicCallResponseHandler,
|
95
|
+
successfulResponseHandler: responseFormat.handler,
|
96
|
+
abortSignal,
|
97
|
+
});
|
98
|
+
},
|
83
99
|
});
|
84
100
|
}
|
85
101
|
get settingsForEvent() {
|
86
102
|
const eventSettingProperties = [
|
87
|
-
"
|
103
|
+
"maxGenerationTokens",
|
88
104
|
"stopSequences",
|
89
105
|
"temperature",
|
90
106
|
"topK",
|
@@ -93,14 +109,14 @@ class AnthropicTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
93
109
|
];
|
94
110
|
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
95
111
|
}
|
96
|
-
async
|
112
|
+
async doGenerateTexts(prompt, options) {
|
97
113
|
const response = await this.callAPI(prompt, {
|
98
114
|
...options,
|
99
115
|
responseFormat: exports.AnthropicTextGenerationResponseFormat.json,
|
100
116
|
});
|
101
117
|
return {
|
102
118
|
response,
|
103
|
-
|
119
|
+
texts: [response.completion],
|
104
120
|
};
|
105
121
|
}
|
106
122
|
doStreamText(prompt, options) {
|
@@ -148,26 +164,6 @@ const anthropicTextGenerationResponseSchema = zod_1.z.object({
|
|
148
164
|
stop_reason: zod_1.z.string(),
|
149
165
|
model: zod_1.z.string(),
|
150
166
|
});
|
151
|
-
async function callAnthropicTextGenerationAPI({ api = new AnthropicApiConfiguration_js_1.AnthropicApiConfiguration(), abortSignal, responseFormat, model, prompt, maxTokens, stopSequences, temperature, topK, topP, userId, }) {
|
152
|
-
return (0, postToApi_js_1.postJsonToApi)({
|
153
|
-
url: api.assembleUrl(`/complete`),
|
154
|
-
headers: api.headers,
|
155
|
-
body: {
|
156
|
-
model,
|
157
|
-
prompt,
|
158
|
-
stream: responseFormat.stream,
|
159
|
-
max_tokens_to_sample: maxTokens,
|
160
|
-
temperature,
|
161
|
-
top_k: topK,
|
162
|
-
top_p: topP,
|
163
|
-
stop_sequences: stopSequences,
|
164
|
-
metadata: userId != null ? { user_id: userId } : undefined,
|
165
|
-
},
|
166
|
-
failedResponseHandler: AnthropicError_js_1.failedAnthropicCallResponseHandler,
|
167
|
-
successfulResponseHandler: responseFormat.handler,
|
168
|
-
abortSignal,
|
169
|
-
});
|
170
|
-
}
|
171
167
|
const anthropicTextStreamingResponseSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.object({
|
172
168
|
completion: zod_1.z.string(),
|
173
169
|
stop_reason: zod_1.z.string().nullable(),
|
@@ -49,13 +49,13 @@ export declare class AnthropicTextGenerationModel extends AbstractModel<Anthropi
|
|
49
49
|
responseFormat: AnthropicTextGenerationResponseFormatType<RESPONSE>;
|
50
50
|
} & FunctionOptions): Promise<RESPONSE>;
|
51
51
|
get settingsForEvent(): Partial<AnthropicTextGenerationModelSettings>;
|
52
|
-
|
52
|
+
doGenerateTexts(prompt: string, options?: FunctionOptions): Promise<{
|
53
53
|
response: {
|
54
54
|
model: string;
|
55
55
|
completion: string;
|
56
56
|
stop_reason: string;
|
57
57
|
};
|
58
|
-
|
58
|
+
texts: string[];
|
59
59
|
}>;
|
60
60
|
doStreamText(prompt: string, options?: FunctionOptions): Promise<AsyncIterable<Delta<string>>>;
|
61
61
|
/**
|
@@ -66,22 +66,38 @@ export class AnthropicTextGenerationModel extends AbstractModel {
|
|
66
66
|
return this.settings.model;
|
67
67
|
}
|
68
68
|
async callAPI(prompt, options) {
|
69
|
+
const api = this.settings.api ?? new AnthropicApiConfiguration();
|
70
|
+
const responseFormat = options.responseFormat;
|
71
|
+
const abortSignal = options.run?.abortSignal;
|
72
|
+
const userId = this.settings.userId;
|
69
73
|
return callWithRetryAndThrottle({
|
70
74
|
retry: this.settings.api?.retry,
|
71
75
|
throttle: this.settings.api?.throttle,
|
72
|
-
call: async () =>
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
76
|
+
call: async () => {
|
77
|
+
return postJsonToApi({
|
78
|
+
url: api.assembleUrl(`/complete`),
|
79
|
+
headers: api.headers,
|
80
|
+
body: {
|
81
|
+
model: this.settings.model,
|
82
|
+
prompt,
|
83
|
+
stream: responseFormat.stream,
|
84
|
+
max_tokens_to_sample: this.settings.maxGenerationTokens,
|
85
|
+
temperature: this.settings.temperature,
|
86
|
+
top_k: this.settings.topK,
|
87
|
+
top_p: this.settings.topP,
|
88
|
+
stop_sequences: this.settings.stopSequences,
|
89
|
+
metadata: userId != null ? { user_id: userId } : undefined,
|
90
|
+
},
|
91
|
+
failedResponseHandler: failedAnthropicCallResponseHandler,
|
92
|
+
successfulResponseHandler: responseFormat.handler,
|
93
|
+
abortSignal,
|
94
|
+
});
|
95
|
+
},
|
80
96
|
});
|
81
97
|
}
|
82
98
|
get settingsForEvent() {
|
83
99
|
const eventSettingProperties = [
|
84
|
-
"
|
100
|
+
"maxGenerationTokens",
|
85
101
|
"stopSequences",
|
86
102
|
"temperature",
|
87
103
|
"topK",
|
@@ -90,14 +106,14 @@ export class AnthropicTextGenerationModel extends AbstractModel {
|
|
90
106
|
];
|
91
107
|
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
92
108
|
}
|
93
|
-
async
|
109
|
+
async doGenerateTexts(prompt, options) {
|
94
110
|
const response = await this.callAPI(prompt, {
|
95
111
|
...options,
|
96
112
|
responseFormat: AnthropicTextGenerationResponseFormat.json,
|
97
113
|
});
|
98
114
|
return {
|
99
115
|
response,
|
100
|
-
|
116
|
+
texts: [response.completion],
|
101
117
|
};
|
102
118
|
}
|
103
119
|
doStreamText(prompt, options) {
|
@@ -144,26 +160,6 @@ const anthropicTextGenerationResponseSchema = z.object({
|
|
144
160
|
stop_reason: z.string(),
|
145
161
|
model: z.string(),
|
146
162
|
});
|
147
|
-
async function callAnthropicTextGenerationAPI({ api = new AnthropicApiConfiguration(), abortSignal, responseFormat, model, prompt, maxTokens, stopSequences, temperature, topK, topP, userId, }) {
|
148
|
-
return postJsonToApi({
|
149
|
-
url: api.assembleUrl(`/complete`),
|
150
|
-
headers: api.headers,
|
151
|
-
body: {
|
152
|
-
model,
|
153
|
-
prompt,
|
154
|
-
stream: responseFormat.stream,
|
155
|
-
max_tokens_to_sample: maxTokens,
|
156
|
-
temperature,
|
157
|
-
top_k: topK,
|
158
|
-
top_p: topP,
|
159
|
-
stop_sequences: stopSequences,
|
160
|
-
metadata: userId != null ? { user_id: userId } : undefined,
|
161
|
-
},
|
162
|
-
failedResponseHandler: failedAnthropicCallResponseHandler,
|
163
|
-
successfulResponseHandler: responseFormat.handler,
|
164
|
-
abortSignal,
|
165
|
-
});
|
166
|
-
}
|
167
163
|
const anthropicTextStreamingResponseSchema = new ZodSchema(z.object({
|
168
164
|
completion: z.string(),
|
169
165
|
stop_reason: z.string().nullable(),
|
@@ -13,7 +13,7 @@ const CohereTokenizer_js_1 = require("./CohereTokenizer.cjs");
|
|
13
13
|
* const model = cohere.TextGenerator({
|
14
14
|
* model: "command-nightly",
|
15
15
|
* temperature: 0.7,
|
16
|
-
*
|
16
|
+
* maxGenerationTokens: 500,
|
17
17
|
* });
|
18
18
|
*
|
19
19
|
* const text = await generateText(
|
@@ -10,7 +10,7 @@ import { CohereTokenizer, CohereTokenizerSettings } from "./CohereTokenizer.js";
|
|
10
10
|
* const model = cohere.TextGenerator({
|
11
11
|
* model: "command-nightly",
|
12
12
|
* temperature: 0.7,
|
13
|
-
*
|
13
|
+
* maxGenerationTokens: 500,
|
14
14
|
* });
|
15
15
|
*
|
16
16
|
* const text = await generateText(
|
@@ -10,7 +10,7 @@ import { CohereTokenizer } from "./CohereTokenizer.js";
|
|
10
10
|
* const model = cohere.TextGenerator({
|
11
11
|
* model: "command-nightly",
|
12
12
|
* temperature: 0.7,
|
13
|
-
*
|
13
|
+
* maxGenerationTokens: 500,
|
14
14
|
* });
|
15
15
|
*
|
16
16
|
* const text = await generateText(
|
@@ -74,14 +74,14 @@ export declare class CohereTextEmbeddingModel extends AbstractModel<CohereTextEm
|
|
74
74
|
get settingsForEvent(): Partial<CohereTextEmbeddingModelSettings>;
|
75
75
|
doEmbedValues(texts: string[], options?: FunctionOptions): Promise<{
|
76
76
|
response: {
|
77
|
+
texts: string[];
|
78
|
+
embeddings: number[][];
|
77
79
|
id: string;
|
78
80
|
meta: {
|
79
81
|
api_version: {
|
80
82
|
version: string;
|
81
83
|
};
|
82
84
|
};
|
83
|
-
texts: string[];
|
84
|
-
embeddings: number[][];
|
85
85
|
};
|
86
86
|
embeddings: number[][];
|
87
87
|
}>;
|
@@ -109,23 +109,23 @@ declare const cohereTextEmbeddingResponseSchema: z.ZodObject<{
|
|
109
109
|
};
|
110
110
|
}>;
|
111
111
|
}, "strip", z.ZodTypeAny, {
|
112
|
+
texts: string[];
|
113
|
+
embeddings: number[][];
|
112
114
|
id: string;
|
113
115
|
meta: {
|
114
116
|
api_version: {
|
115
117
|
version: string;
|
116
118
|
};
|
117
119
|
};
|
120
|
+
}, {
|
118
121
|
texts: string[];
|
119
122
|
embeddings: number[][];
|
120
|
-
}, {
|
121
123
|
id: string;
|
122
124
|
meta: {
|
123
125
|
api_version: {
|
124
126
|
version: string;
|
125
127
|
};
|
126
128
|
};
|
127
|
-
texts: string[];
|
128
|
-
embeddings: number[][];
|
129
129
|
}>;
|
130
130
|
export type CohereTextEmbeddingResponse = z.infer<typeof cohereTextEmbeddingResponseSchema>;
|
131
131
|
export {};
|
@@ -37,7 +37,7 @@ exports.COHERE_TEXT_GENERATION_MODELS = {
|
|
37
37
|
* const model = new CohereTextGenerationModel({
|
38
38
|
* model: "command-nightly",
|
39
39
|
* temperature: 0.7,
|
40
|
-
*
|
40
|
+
* maxGenerationTokens: 500,
|
41
41
|
* });
|
42
42
|
*
|
43
43
|
* const text = await generateText(
|
@@ -80,28 +80,45 @@ class CohereTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
80
80
|
return (0, countTokens_js_1.countTokens)(this.tokenizer, input);
|
81
81
|
}
|
82
82
|
async callAPI(prompt, options) {
|
83
|
+
const api = this.settings.api ?? new CohereApiConfiguration_js_1.CohereApiConfiguration();
|
84
|
+
const responseFormat = options.responseFormat;
|
85
|
+
const abortSignal = options.run?.abortSignal;
|
83
86
|
return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
|
84
87
|
retry: this.settings.api?.retry,
|
85
88
|
throttle: this.settings.api?.throttle,
|
86
|
-
call: async () =>
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
89
|
+
call: async () => {
|
90
|
+
return (0, postToApi_js_1.postJsonToApi)({
|
91
|
+
url: api.assembleUrl(`/generate`),
|
92
|
+
headers: api.headers,
|
93
|
+
body: {
|
94
|
+
stream: responseFormat.stream,
|
95
|
+
model: this.settings.model,
|
96
|
+
prompt,
|
97
|
+
num_generations: this.settings.numberOfGenerations,
|
98
|
+
max_tokens: this.settings.maxGenerationTokens,
|
99
|
+
temperature: this.settings.temperature,
|
100
|
+
k: this.settings.k,
|
101
|
+
p: this.settings.p,
|
102
|
+
frequency_penalty: this.settings.frequencyPenalty,
|
103
|
+
presence_penalty: this.settings.presencePenalty,
|
104
|
+
end_sequences: this.settings.stopSequences,
|
105
|
+
stop_sequences: this.settings.cohereStopSequences,
|
106
|
+
return_likelihoods: this.settings.returnLikelihoods,
|
107
|
+
logit_bias: this.settings.logitBias,
|
108
|
+
truncate: this.settings.truncate,
|
109
|
+
},
|
110
|
+
failedResponseHandler: CohereError_js_1.failedCohereCallResponseHandler,
|
111
|
+
successfulResponseHandler: responseFormat.handler,
|
112
|
+
abortSignal,
|
113
|
+
});
|
114
|
+
},
|
98
115
|
});
|
99
116
|
}
|
100
117
|
get settingsForEvent() {
|
101
118
|
const eventSettingProperties = [
|
102
|
-
"
|
119
|
+
"maxGenerationTokens",
|
103
120
|
"stopSequences",
|
104
|
-
"
|
121
|
+
"numberOfGenerations",
|
105
122
|
"temperature",
|
106
123
|
"k",
|
107
124
|
"p",
|
@@ -114,14 +131,14 @@ class CohereTextGenerationModel extends AbstractModel_js_1.AbstractModel {
|
|
114
131
|
];
|
115
132
|
return Object.fromEntries(Object.entries(this.settings).filter(([key]) => eventSettingProperties.includes(key)));
|
116
133
|
}
|
117
|
-
async
|
134
|
+
async doGenerateTexts(prompt, options) {
|
118
135
|
const response = await this.callAPI(prompt, {
|
119
136
|
...options,
|
120
137
|
responseFormat: exports.CohereTextGenerationResponseFormat.json,
|
121
138
|
});
|
122
139
|
return {
|
123
140
|
response,
|
124
|
-
|
141
|
+
texts: response.generations.map((generation) => generation.text),
|
125
142
|
};
|
126
143
|
}
|
127
144
|
doStreamText(prompt, options) {
|
@@ -177,32 +194,6 @@ const cohereTextGenerationResponseSchema = zod_1.z.object({
|
|
177
194
|
})
|
178
195
|
.optional(),
|
179
196
|
});
|
180
|
-
async function callCohereTextGenerationAPI({ api = new CohereApiConfiguration_js_1.CohereApiConfiguration(), abortSignal, responseFormat, model, prompt, numGenerations, maxTokens, temperature, k, p, frequencyPenalty, presencePenalty, endSequences, stopSequences, returnLikelihoods, logitBias, truncate, }) {
|
181
|
-
return (0, postToApi_js_1.postJsonToApi)({
|
182
|
-
url: api.assembleUrl(`/generate`),
|
183
|
-
headers: api.headers,
|
184
|
-
body: {
|
185
|
-
stream: responseFormat.stream,
|
186
|
-
model,
|
187
|
-
prompt,
|
188
|
-
num_generations: numGenerations,
|
189
|
-
max_tokens: maxTokens,
|
190
|
-
temperature,
|
191
|
-
k,
|
192
|
-
p,
|
193
|
-
frequency_penalty: frequencyPenalty,
|
194
|
-
presence_penalty: presencePenalty,
|
195
|
-
end_sequences: endSequences,
|
196
|
-
stop_sequences: stopSequences,
|
197
|
-
return_likelihoods: returnLikelihoods,
|
198
|
-
logit_bias: logitBias,
|
199
|
-
truncate,
|
200
|
-
},
|
201
|
-
failedResponseHandler: CohereError_js_1.failedCohereCallResponseHandler,
|
202
|
-
successfulResponseHandler: responseFormat.handler,
|
203
|
-
abortSignal,
|
204
|
-
});
|
205
|
-
}
|
206
197
|
const cohereTextStreamingResponseSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.discriminatedUnion("is_finished", [
|
207
198
|
zod_1.z.object({
|
208
199
|
text: zod_1.z.string(),
|