@llumiverse/drivers 0.17.0 → 0.19.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 +1 -1
- package/lib/cjs/bedrock/converse.js +65 -15
- package/lib/cjs/bedrock/converse.js.map +1 -1
- package/lib/cjs/bedrock/index.js +207 -73
- package/lib/cjs/bedrock/index.js.map +1 -1
- package/lib/cjs/bedrock/nova-image-payload.js.map +1 -1
- package/lib/cjs/bedrock/s3.js +47 -0
- package/lib/cjs/bedrock/s3.js.map +1 -1
- package/lib/cjs/groq/index.js +4 -4
- package/lib/cjs/groq/index.js.map +1 -1
- package/lib/cjs/huggingface_ie.js +1 -1
- package/lib/cjs/huggingface_ie.js.map +1 -1
- package/lib/cjs/mistral/index.js +4 -4
- package/lib/cjs/mistral/index.js.map +1 -1
- package/lib/cjs/openai/azure.js +1 -1
- package/lib/cjs/openai/azure.js.map +1 -1
- package/lib/cjs/openai/index.js +200 -82
- package/lib/cjs/openai/index.js.map +1 -1
- package/lib/cjs/replicate.js +1 -1
- package/lib/cjs/togetherai/index.js +3 -3
- package/lib/cjs/togetherai/index.js.map +1 -1
- package/lib/cjs/vertexai/embeddings/embeddings-image.js +2 -1
- package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -1
- package/lib/cjs/vertexai/embeddings/embeddings-text.js +2 -1
- package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -1
- package/lib/cjs/vertexai/index.js +138 -45
- package/lib/cjs/vertexai/index.js.map +1 -1
- package/lib/cjs/vertexai/models/claude.js +66 -52
- package/lib/cjs/vertexai/models/claude.js.map +1 -1
- package/lib/cjs/vertexai/models/gemini.js +416 -83
- package/lib/cjs/vertexai/models/gemini.js.map +1 -1
- package/lib/cjs/vertexai/models/imagen.js.map +1 -1
- package/lib/cjs/vertexai/models/llama.js +182 -0
- package/lib/cjs/vertexai/models/llama.js.map +1 -0
- package/lib/cjs/vertexai/models.js +4 -0
- package/lib/cjs/vertexai/models.js.map +1 -1
- package/lib/cjs/watsonx/index.js +3 -3
- package/lib/cjs/watsonx/index.js.map +1 -1
- package/lib/cjs/xai/index.js +1 -1
- package/lib/cjs/xai/index.js.map +1 -1
- package/lib/esm/bedrock/converse.js +63 -14
- package/lib/esm/bedrock/converse.js.map +1 -1
- package/lib/esm/bedrock/index.js +210 -76
- package/lib/esm/bedrock/index.js.map +1 -1
- package/lib/esm/bedrock/nova-image-payload.js.map +1 -1
- package/lib/esm/bedrock/s3.js +46 -0
- package/lib/esm/bedrock/s3.js.map +1 -1
- package/lib/esm/groq/index.js +4 -4
- package/lib/esm/groq/index.js.map +1 -1
- package/lib/esm/huggingface_ie.js +1 -1
- package/lib/esm/huggingface_ie.js.map +1 -1
- package/lib/esm/mistral/index.js +4 -4
- package/lib/esm/mistral/index.js.map +1 -1
- package/lib/esm/openai/azure.js +1 -1
- package/lib/esm/openai/azure.js.map +1 -1
- package/lib/esm/openai/index.js +200 -83
- package/lib/esm/openai/index.js.map +1 -1
- package/lib/esm/replicate.js +1 -1
- package/lib/esm/togetherai/index.js +3 -3
- package/lib/esm/togetherai/index.js.map +1 -1
- package/lib/esm/vertexai/embeddings/embeddings-image.js +2 -1
- package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -1
- package/lib/esm/vertexai/embeddings/embeddings-text.js +2 -1
- package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -1
- package/lib/esm/vertexai/index.js +139 -46
- package/lib/esm/vertexai/index.js.map +1 -1
- package/lib/esm/vertexai/models/claude.js +67 -53
- package/lib/esm/vertexai/models/claude.js.map +1 -1
- package/lib/esm/vertexai/models/gemini.js +412 -79
- package/lib/esm/vertexai/models/gemini.js.map +1 -1
- package/lib/esm/vertexai/models/imagen.js.map +1 -1
- package/lib/esm/vertexai/models/llama.js +178 -0
- package/lib/esm/vertexai/models/llama.js.map +1 -0
- package/lib/esm/vertexai/models.js +4 -0
- package/lib/esm/vertexai/models.js.map +1 -1
- package/lib/esm/watsonx/index.js +3 -3
- package/lib/esm/watsonx/index.js.map +1 -1
- package/lib/esm/xai/index.js +1 -1
- package/lib/esm/xai/index.js.map +1 -1
- package/lib/types/bedrock/converse.d.ts +2 -1
- package/lib/types/bedrock/converse.d.ts.map +1 -1
- package/lib/types/bedrock/index.d.ts +4 -15
- package/lib/types/bedrock/index.d.ts.map +1 -1
- package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -1
- package/lib/types/bedrock/s3.d.ts +6 -0
- package/lib/types/bedrock/s3.d.ts.map +1 -1
- package/lib/types/groq/index.d.ts +1 -1
- package/lib/types/groq/index.d.ts.map +1 -1
- package/lib/types/huggingface_ie.d.ts +1 -1
- package/lib/types/huggingface_ie.d.ts.map +1 -1
- package/lib/types/mistral/index.d.ts +1 -1
- package/lib/types/mistral/index.d.ts.map +1 -1
- package/lib/types/openai/index.d.ts +8 -5
- package/lib/types/openai/index.d.ts.map +1 -1
- package/lib/types/togetherai/index.d.ts +1 -1
- package/lib/types/togetherai/index.d.ts.map +1 -1
- package/lib/types/togetherai/interfaces.d.ts +3 -3
- package/lib/types/togetherai/interfaces.d.ts.map +1 -1
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -1
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +1 -1
- package/lib/types/vertexai/index.d.ts +21 -10
- package/lib/types/vertexai/index.d.ts.map +1 -1
- package/lib/types/vertexai/models/claude.d.ts.map +1 -1
- package/lib/types/vertexai/models/gemini.d.ts +9 -6
- package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
- package/lib/types/vertexai/models/imagen.d.ts.map +1 -1
- package/lib/types/vertexai/models/llama.d.ts +20 -0
- package/lib/types/vertexai/models/llama.d.ts.map +1 -0
- package/lib/types/vertexai/models.d.ts +6 -2
- package/lib/types/vertexai/models.d.ts.map +1 -1
- package/lib/types/watsonx/index.d.ts +1 -1
- package/lib/types/watsonx/index.d.ts.map +1 -1
- package/lib/types/xai/index.d.ts +1 -1
- package/lib/types/xai/index.d.ts.map +1 -1
- package/package.json +17 -16
- package/src/bedrock/converse.ts +65 -16
- package/src/bedrock/index.ts +245 -86
- package/src/bedrock/nova-image-payload.ts +1 -2
- package/src/bedrock/s3.ts +48 -0
- package/src/groq/index.ts +5 -5
- package/src/huggingface_ie.ts +1 -1
- package/src/mistral/index.ts +4 -4
- package/src/openai/azure.ts +2 -2
- package/src/openai/index.ts +247 -92
- package/src/openai/openai.ts +1 -1
- package/src/replicate.ts +1 -1
- package/src/togetherai/index.ts +3 -3
- package/src/togetherai/interfaces.ts +3 -3
- package/src/vertexai/embeddings/embeddings-image.ts +5 -3
- package/src/vertexai/embeddings/embeddings-text.ts +5 -3
- package/src/vertexai/index.ts +158 -50
- package/src/vertexai/models/claude.ts +84 -60
- package/src/vertexai/models/gemini.ts +476 -96
- package/src/vertexai/models/imagen.ts +4 -3
- package/src/vertexai/models/llama.ts +261 -0
- package/src/vertexai/models.ts +6 -2
- package/src/watsonx/index.ts +3 -3
- package/src/xai/index.ts +1 -1
package/README.md
CHANGED
|
@@ -297,4 +297,4 @@ Please see [CONTRIBUTING.md](https://github.com/vertesia/llumiverse/blob/main/CO
|
|
|
297
297
|
|
|
298
298
|
## License
|
|
299
299
|
|
|
300
|
-
|
|
300
|
+
Llumiverse is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). Feel free to use it accordingly.
|
|
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.converseConcatMessages = converseConcatMessages;
|
|
4
4
|
exports.converseSystemToMessages = converseSystemToMessages;
|
|
5
5
|
exports.converseRemoveJSONprefill = converseRemoveJSONprefill;
|
|
6
|
-
exports.
|
|
6
|
+
exports.converseJSONprefill = converseJSONprefill;
|
|
7
|
+
exports.formatConversePrompt = formatConversePrompt;
|
|
7
8
|
const core_1 = require("@llumiverse/core");
|
|
8
9
|
const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
|
|
10
|
+
const s3_js_1 = require("./s3.js");
|
|
9
11
|
function getJSONSafetyNotice(schema) {
|
|
10
12
|
return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema, undefined, 2);
|
|
11
13
|
}
|
|
@@ -72,15 +74,40 @@ function converseRemoveJSONprefill(messages) {
|
|
|
72
74
|
}
|
|
73
75
|
return messages ?? [];
|
|
74
76
|
}
|
|
75
|
-
|
|
77
|
+
function converseJSONprefill(messages) {
|
|
78
|
+
if (!messages) {
|
|
79
|
+
messages = [];
|
|
80
|
+
}
|
|
81
|
+
//prefill the json
|
|
82
|
+
messages.push({
|
|
83
|
+
content: [{ text: "```json" }],
|
|
84
|
+
role: client_bedrock_runtime_1.ConversationRole.ASSISTANT,
|
|
85
|
+
});
|
|
86
|
+
return messages;
|
|
87
|
+
}
|
|
88
|
+
async function formatConversePrompt(segments, schema) {
|
|
76
89
|
//Non-const for concat
|
|
77
90
|
let system = [];
|
|
78
91
|
const safety = [];
|
|
79
92
|
let messages = [];
|
|
80
93
|
for (const segment of segments) {
|
|
81
94
|
const parts = [];
|
|
95
|
+
//Tool response
|
|
96
|
+
if (segment.role === core_1.PromptRole.tool) {
|
|
97
|
+
parts.push({
|
|
98
|
+
content: [{
|
|
99
|
+
toolResult: {
|
|
100
|
+
toolUseId: segment.tool_use_id,
|
|
101
|
+
content: [{ text: segment.content }],
|
|
102
|
+
}
|
|
103
|
+
}],
|
|
104
|
+
role: client_bedrock_runtime_1.ConversationRole.USER,
|
|
105
|
+
});
|
|
106
|
+
messages = messages.concat(parts);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
82
109
|
//File segments
|
|
83
|
-
if (segment.files)
|
|
110
|
+
if (segment.files) {
|
|
84
111
|
for (const f of segment.files) {
|
|
85
112
|
const source = await f.getStream();
|
|
86
113
|
let content;
|
|
@@ -110,14 +137,41 @@ async function fortmatConversePrompt(segments, schema) {
|
|
|
110
137
|
//Video file - "mov | mkv | mp4 | webm | flv | mpeg | mpg | wmv | three_gp"
|
|
111
138
|
}
|
|
112
139
|
else if (f.mime_type && f.mime_type.startsWith("video")) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
140
|
+
let url_string = (await f.getURL()).toLowerCase();
|
|
141
|
+
let url_format = new URL(url_string);
|
|
142
|
+
if (url_format.hostname.endsWith("amazonaws.com") &&
|
|
143
|
+
(url_format.hostname.startsWith("s3.") || url_format.hostname.includes(".s3."))) {
|
|
144
|
+
//Convert to s3:// format
|
|
145
|
+
const parsedUrl = (0, s3_js_1.parseS3UrlToUri)(new URL(url_string));
|
|
146
|
+
url_string = parsedUrl;
|
|
147
|
+
url_format = new URL(parsedUrl);
|
|
148
|
+
}
|
|
149
|
+
if (url_format.protocol === "s3:") {
|
|
150
|
+
//Use S3 bucket if available
|
|
151
|
+
content = [
|
|
152
|
+
{
|
|
153
|
+
video: {
|
|
154
|
+
format: mimeToVideoType(f.mime_type),
|
|
155
|
+
source: {
|
|
156
|
+
s3Location: {
|
|
157
|
+
uri: url_string, //S3 URL
|
|
158
|
+
//bucketOwner: We don't have this additional information.
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
},
|
|
118
162
|
},
|
|
119
|
-
|
|
120
|
-
|
|
163
|
+
];
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
content = [
|
|
167
|
+
{
|
|
168
|
+
video: {
|
|
169
|
+
format: mimeToVideoType(f.mime_type),
|
|
170
|
+
source: { bytes: await readStreamAsUint8Array(source) },
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
];
|
|
174
|
+
}
|
|
121
175
|
//Fallback, send string
|
|
122
176
|
}
|
|
123
177
|
else {
|
|
@@ -128,6 +182,7 @@ async function fortmatConversePrompt(segments, schema) {
|
|
|
128
182
|
role: roleConversion(segment.role),
|
|
129
183
|
});
|
|
130
184
|
}
|
|
185
|
+
}
|
|
131
186
|
//Text segments
|
|
132
187
|
if (segment.content) {
|
|
133
188
|
parts.push({
|
|
@@ -161,11 +216,6 @@ async function fortmatConversePrompt(segments, schema) {
|
|
|
161
216
|
if (schema) {
|
|
162
217
|
safety.push({ text: "IMPORTANT: " + getJSONSafetyNotice(schema) });
|
|
163
218
|
system = system.concat(safety);
|
|
164
|
-
//prefill the json
|
|
165
|
-
messages.push({
|
|
166
|
-
content: [{ text: "```json" }],
|
|
167
|
-
role: client_bedrock_runtime_1.ConversationRole.ASSISTANT,
|
|
168
|
-
});
|
|
169
219
|
}
|
|
170
220
|
messages = converseConcatMessages(messages);
|
|
171
221
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converse.js","sourceRoot":"","sources":["../../../src/bedrock/converse.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"converse.js","sourceRoot":"","sources":["../../../src/bedrock/converse.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/bedrock/index.js
CHANGED
|
@@ -66,9 +66,9 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
66
66
|
if (opts.model.includes("canvas")) {
|
|
67
67
|
return await (0, formatters_1.formatNovaPrompt)(segments, opts.result_schema);
|
|
68
68
|
}
|
|
69
|
-
return await (0, converse_js_1.
|
|
69
|
+
return await (0, converse_js_1.formatConversePrompt)(segments, opts.result_schema);
|
|
70
70
|
}
|
|
71
|
-
static
|
|
71
|
+
static getExtractedExecution(result, _prompt) {
|
|
72
72
|
return {
|
|
73
73
|
result: result.output?.message?.content?.map(c => c.text).join("\n") ?? "",
|
|
74
74
|
token_usage: {
|
|
@@ -105,14 +105,39 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
105
105
|
}
|
|
106
106
|
;
|
|
107
107
|
async requestTextCompletion(prompt, options) {
|
|
108
|
-
|
|
108
|
+
let conversation = updateConversation(options.conversation, prompt);
|
|
109
|
+
const payload = this.preparePayload(conversation, options);
|
|
109
110
|
const executor = this.getExecutor();
|
|
110
111
|
const res = await executor.converse({
|
|
111
112
|
...payload,
|
|
112
113
|
});
|
|
114
|
+
conversation = updateConversation(conversation, {
|
|
115
|
+
messages: [res.output?.message ?? { content: [{ text: "" }], role: "assistant" }],
|
|
116
|
+
modelId: prompt.modelId,
|
|
117
|
+
});
|
|
118
|
+
let tool_use = undefined;
|
|
119
|
+
//Get tool requests
|
|
120
|
+
if (res.stopReason == "tool_use") {
|
|
121
|
+
tool_use = res.output?.message?.content?.reduce((tools, c) => {
|
|
122
|
+
if (c.toolUse) {
|
|
123
|
+
tools.push({
|
|
124
|
+
tool_name: c.toolUse.name ?? "",
|
|
125
|
+
tool_input: c.toolUse.input,
|
|
126
|
+
id: c.toolUse.toolUseId ?? "",
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return tools;
|
|
130
|
+
}, []);
|
|
131
|
+
//If no tools were used, set to undefined
|
|
132
|
+
if (tool_use && tool_use.length == 0) {
|
|
133
|
+
tool_use = undefined;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
113
136
|
const completion = {
|
|
114
|
-
...BedrockDriver.
|
|
137
|
+
...BedrockDriver.getExtractedExecution(res, prompt),
|
|
115
138
|
original_response: options.include_original_response ? res : undefined,
|
|
139
|
+
conversation: conversation,
|
|
140
|
+
tool_use: tool_use,
|
|
116
141
|
};
|
|
117
142
|
return completion;
|
|
118
143
|
}
|
|
@@ -213,29 +238,32 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
213
238
|
});
|
|
214
239
|
}
|
|
215
240
|
preparePayload(prompt, options) {
|
|
216
|
-
const model_options = options.model_options;
|
|
241
|
+
const model_options = options.model_options ?? { _option_id: "text-fallback" };
|
|
217
242
|
let additionalField = {};
|
|
218
243
|
if (options.model.includes("amazon")) {
|
|
244
|
+
if (options.result_schema) {
|
|
245
|
+
prompt.messages = (0, converse_js_1.converseJSONprefill)(prompt.messages);
|
|
246
|
+
}
|
|
219
247
|
//Titan models also exists but does not support any additional options
|
|
220
248
|
if (options.model.includes("nova")) {
|
|
221
|
-
additionalField = { inferenceConfig: { topK: model_options
|
|
249
|
+
additionalField = { inferenceConfig: { topK: model_options.top_k } };
|
|
222
250
|
}
|
|
223
251
|
}
|
|
224
252
|
else if (options.model.includes("claude")) {
|
|
253
|
+
if (options.result_schema) {
|
|
254
|
+
prompt.messages = (0, converse_js_1.converseJSONprefill)(prompt.messages);
|
|
255
|
+
}
|
|
225
256
|
if (options.model.includes("claude-3-7")) {
|
|
226
257
|
const thinking_options = options.model_options;
|
|
227
|
-
const thinking = thinking_options
|
|
228
|
-
if (!model_options?.max_tokens) {
|
|
229
|
-
model_options.max_tokens = thinking ? 128000 : 8192;
|
|
230
|
-
}
|
|
258
|
+
const thinking = thinking_options.thinking_mode ?? false;
|
|
231
259
|
additionalField = {
|
|
232
|
-
|
|
260
|
+
...additionalField,
|
|
233
261
|
reasoning_config: {
|
|
234
262
|
type: thinking ? "enabled" : "disabled",
|
|
235
|
-
budget_tokens: thinking_options
|
|
263
|
+
budget_tokens: thinking_options.thinking_budget_tokens,
|
|
236
264
|
}
|
|
237
265
|
};
|
|
238
|
-
if (thinking && (thinking_options
|
|
266
|
+
if (thinking && (thinking_options.thinking_budget_tokens ?? 0) > 64000) {
|
|
239
267
|
additionalField = {
|
|
240
268
|
...additionalField,
|
|
241
269
|
anthorpic_beta: ["output-128k-2025-02-19"]
|
|
@@ -243,51 +271,40 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
243
271
|
}
|
|
244
272
|
}
|
|
245
273
|
//Needs max_tokens to be set
|
|
246
|
-
if (!model_options
|
|
247
|
-
|
|
248
|
-
model_options.max_tokens = 8192;
|
|
249
|
-
//Bug with AWS Converse Sonnet 3.5, does not effect Haiku.
|
|
250
|
-
//See https://github.com/boto/boto3/issues/4279
|
|
251
|
-
if (options.model.includes("claude-3-5-sonnet")) {
|
|
252
|
-
model_options.max_tokens = 4096;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
model_options.max_tokens = 4096;
|
|
257
|
-
}
|
|
274
|
+
if (!model_options.max_tokens) {
|
|
275
|
+
model_options.max_tokens = (0, core_1.getMaxTokensLimit)(options.model, model_options);
|
|
258
276
|
}
|
|
259
|
-
additionalField = { top_k: model_options
|
|
277
|
+
additionalField = { ...additionalField, top_k: model_options.top_k };
|
|
260
278
|
}
|
|
261
279
|
else if (options.model.includes("meta")) {
|
|
262
|
-
//
|
|
263
|
-
prompt.messages = (0, converse_js_1.converseRemoveJSONprefill)(prompt.messages);
|
|
280
|
+
//LLaMA models support no additional options
|
|
264
281
|
}
|
|
265
282
|
else if (options.model.includes("mistral")) {
|
|
266
283
|
//7B instruct and 8x7B instruct
|
|
267
284
|
if (options.model.includes("7b")) {
|
|
268
|
-
additionalField = { top_k: model_options
|
|
285
|
+
additionalField = { top_k: model_options.top_k };
|
|
269
286
|
//Does not support system messages
|
|
270
287
|
if (prompt.system && prompt.system?.length != 0) {
|
|
271
288
|
prompt.messages?.push((0, converse_js_1.converseSystemToMessages)(prompt.system));
|
|
272
289
|
prompt.system = undefined;
|
|
273
290
|
prompt.messages = (0, converse_js_1.converseConcatMessages)(prompt.messages);
|
|
274
291
|
}
|
|
292
|
+
if (options.result_schema) {
|
|
293
|
+
prompt.messages = (0, converse_js_1.converseJSONprefill)(prompt.messages);
|
|
294
|
+
}
|
|
275
295
|
}
|
|
276
296
|
else {
|
|
277
297
|
//Other models such as Mistral Small,Large and Large 2
|
|
278
298
|
//Support no additional fields.
|
|
279
|
-
prompt.messages = (0, converse_js_1.converseRemoveJSONprefill)(prompt.messages);
|
|
280
299
|
}
|
|
281
300
|
}
|
|
282
301
|
else if (options.model.includes("ai21")) {
|
|
283
|
-
//If last message is "```json", remove it. Model requires the final message to be a user message
|
|
284
|
-
prompt.messages = (0, converse_js_1.converseRemoveJSONprefill)(prompt.messages);
|
|
285
302
|
//Jamba models support no additional options
|
|
286
303
|
//Jurassic 2 models do.
|
|
287
304
|
if (options.model.includes("j2")) {
|
|
288
305
|
additionalField = {
|
|
289
|
-
presencePenalty: { scale: model_options
|
|
290
|
-
frequencyPenalty: { scale: model_options
|
|
306
|
+
presencePenalty: { scale: model_options.presence_penalty },
|
|
307
|
+
frequencyPenalty: { scale: model_options.frequency_penalty },
|
|
291
308
|
};
|
|
292
309
|
//Does not support system messages
|
|
293
310
|
if (prompt.system && prompt.system?.length != 0) {
|
|
@@ -299,19 +316,17 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
299
316
|
}
|
|
300
317
|
else if (options.model.includes("cohere.command")) {
|
|
301
318
|
// If last message is "```json", remove it.
|
|
302
|
-
// Model requires the final message to be a user message or does not support assistant messages
|
|
303
|
-
prompt.messages = (0, converse_js_1.converseRemoveJSONprefill)(prompt.messages);
|
|
304
319
|
//Command R and R plus
|
|
305
320
|
if (options.model.includes("cohere.command-r")) {
|
|
306
321
|
additionalField = {
|
|
307
|
-
k: model_options
|
|
308
|
-
frequency_penalty: model_options
|
|
309
|
-
presence_penalty: model_options
|
|
322
|
+
k: model_options.top_k,
|
|
323
|
+
frequency_penalty: model_options.frequency_penalty,
|
|
324
|
+
presence_penalty: model_options.presence_penalty,
|
|
310
325
|
};
|
|
311
326
|
}
|
|
312
327
|
else {
|
|
313
328
|
// Command non-R
|
|
314
|
-
additionalField = { k: model_options
|
|
329
|
+
additionalField = { k: model_options.top_k };
|
|
315
330
|
//Does not support system messages
|
|
316
331
|
if (prompt.system && prompt.system?.length != 0) {
|
|
317
332
|
prompt.messages?.push((0, converse_js_1.converseSystemToMessages)(prompt.system));
|
|
@@ -320,10 +335,22 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
320
335
|
}
|
|
321
336
|
}
|
|
322
337
|
}
|
|
338
|
+
else if (options.model.includes("palmyra")) {
|
|
339
|
+
const palmyraOptions = options.model_options;
|
|
340
|
+
additionalField = {
|
|
341
|
+
seed: palmyraOptions?.seed,
|
|
342
|
+
presence_penalty: palmyraOptions?.presence_penalty,
|
|
343
|
+
frequency_penalty: palmyraOptions?.frequency_penalty,
|
|
344
|
+
min_tokens: palmyraOptions?.min_tokens,
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
else if (options.model.includes("deepseek")) {
|
|
348
|
+
//DeepSeek models support no additional options
|
|
349
|
+
}
|
|
323
350
|
//If last message is "```json", add corresponding ``` as a stop sequence.
|
|
324
351
|
if (prompt.messages && prompt.messages.length > 0) {
|
|
325
352
|
if (prompt.messages[prompt.messages.length - 1].content?.[0].text === "```json") {
|
|
326
|
-
let stopSeq = model_options
|
|
353
|
+
let stopSeq = model_options.stop_sequence;
|
|
327
354
|
if (!stopSeq) {
|
|
328
355
|
model_options.stop_sequence = ["```"];
|
|
329
356
|
}
|
|
@@ -333,20 +360,28 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
333
360
|
}
|
|
334
361
|
}
|
|
335
362
|
}
|
|
336
|
-
|
|
363
|
+
const tool_defs = getToolDefinitions(options.tools);
|
|
364
|
+
const request = {
|
|
337
365
|
messages: prompt.messages,
|
|
338
366
|
system: prompt.system,
|
|
339
367
|
modelId: options.model,
|
|
340
368
|
inferenceConfig: {
|
|
341
|
-
maxTokens: model_options
|
|
342
|
-
temperature: model_options
|
|
343
|
-
topP: model_options
|
|
344
|
-
stopSequences: model_options
|
|
369
|
+
maxTokens: model_options.max_tokens,
|
|
370
|
+
temperature: model_options.temperature,
|
|
371
|
+
topP: model_options.top_p,
|
|
372
|
+
stopSequences: model_options.stop_sequence,
|
|
345
373
|
},
|
|
346
374
|
additionalModelRequestFields: {
|
|
347
375
|
...additionalField,
|
|
348
|
-
}
|
|
376
|
+
}
|
|
349
377
|
};
|
|
378
|
+
//Only add tools if they are defined
|
|
379
|
+
if (tool_defs) {
|
|
380
|
+
request.toolConfig = {
|
|
381
|
+
tools: tool_defs,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
return request;
|
|
350
385
|
}
|
|
351
386
|
async requestImageGeneration(prompt, options) {
|
|
352
387
|
if (options.output_modality !== core_1.Modalities.image) {
|
|
@@ -450,7 +485,7 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
450
485
|
}
|
|
451
486
|
async _listModels(foundationFilter) {
|
|
452
487
|
const service = this.getService();
|
|
453
|
-
const [
|
|
488
|
+
const [foundationModelsList, customModelsList, inferenceProfilesList] = await Promise.all([
|
|
454
489
|
service.listFoundationModels({}).catch(() => {
|
|
455
490
|
this.logger.warn("[Bedrock] Can't list foundation models. Check if the user has the right permissions.");
|
|
456
491
|
return undefined;
|
|
@@ -464,68 +499,114 @@ class BedrockDriver extends core_1.AbstractDriver {
|
|
|
464
499
|
return undefined;
|
|
465
500
|
}),
|
|
466
501
|
]);
|
|
467
|
-
if (!
|
|
502
|
+
if (!foundationModelsList?.modelSummaries) {
|
|
468
503
|
throw new Error("Foundation models not found");
|
|
469
504
|
}
|
|
470
|
-
let
|
|
505
|
+
let foundationModels = foundationModelsList.modelSummaries || [];
|
|
471
506
|
if (foundationFilter) {
|
|
472
|
-
|
|
507
|
+
foundationModels = foundationModels.filter(foundationFilter);
|
|
473
508
|
}
|
|
474
|
-
const
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
509
|
+
const supportedPublishers = ["amazon", "anthropic", "cohere", "ai21", "mistral", "meta", "deepseek", "writer"];
|
|
510
|
+
const unsupportedModelsByPublisher = {
|
|
511
|
+
amazon: ["titan-image-generator", "nova-reel", "nova-sonic", "rerank"],
|
|
512
|
+
anthropic: [],
|
|
513
|
+
cohere: ["rerank"],
|
|
514
|
+
ai21: [],
|
|
515
|
+
mistral: [],
|
|
516
|
+
meta: [],
|
|
517
|
+
deepseek: [],
|
|
518
|
+
writer: [],
|
|
519
|
+
};
|
|
520
|
+
// Helper function to check if model should be filtered out
|
|
521
|
+
const shouldIncludeModel = (modelId, providerName) => {
|
|
522
|
+
if (!modelId || !providerName)
|
|
523
|
+
return false;
|
|
524
|
+
const normalizedProvider = providerName.toLowerCase();
|
|
525
|
+
// Check if provider is supported
|
|
526
|
+
const isProviderSupported = supportedPublishers.some(provider => normalizedProvider.includes(provider));
|
|
527
|
+
if (!isProviderSupported)
|
|
528
|
+
return false;
|
|
529
|
+
// Check if model is in the unsupported list for its provider
|
|
530
|
+
for (const provider of supportedPublishers) {
|
|
531
|
+
if (normalizedProvider.includes(provider)) {
|
|
532
|
+
const unsupportedModels = unsupportedModelsByPublisher[provider] || [];
|
|
533
|
+
return !unsupportedModels.some(unsupported => modelId.toLowerCase().includes(unsupported));
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
return true;
|
|
537
|
+
};
|
|
538
|
+
foundationModels = foundationModels.filter(m => shouldIncludeModel(m.modelId, m.providerName));
|
|
539
|
+
const aiModels = foundationModels.map((m) => {
|
|
481
540
|
if (!m.modelId) {
|
|
482
541
|
throw new Error("modelId not found");
|
|
483
542
|
}
|
|
543
|
+
const modelCapability = (0, core_1.getModelCapabilities)(m.modelArn ?? m.modelId, this.provider);
|
|
484
544
|
const model = {
|
|
485
545
|
id: m.modelArn ?? m.modelId,
|
|
486
546
|
name: `${m.providerName} ${m.modelName}`,
|
|
487
547
|
provider: this.provider,
|
|
488
|
-
input_modalities: m.inputModalities ?? [],
|
|
489
548
|
//description: ``,
|
|
490
549
|
owner: m.providerName,
|
|
491
550
|
can_stream: m.responseStreamingSupported ?? false,
|
|
492
|
-
|
|
493
|
-
|
|
551
|
+
input_modalities: m.inputModalities ? formatAmazonModalities(m.inputModalities) : (0, core_1.modelModalitiesToArray)(modelCapability.input),
|
|
552
|
+
output_modalities: m.outputModalities ? formatAmazonModalities(m.outputModalities) : (0, core_1.modelModalitiesToArray)(modelCapability.input),
|
|
553
|
+
tool_support: modelCapability.tool_support,
|
|
494
554
|
};
|
|
495
555
|
return model;
|
|
496
556
|
});
|
|
497
557
|
//add custom models
|
|
498
|
-
if (
|
|
499
|
-
|
|
558
|
+
if (customModelsList?.modelSummaries) {
|
|
559
|
+
customModelsList.modelSummaries.forEach((m) => {
|
|
500
560
|
if (!m.modelArn) {
|
|
501
561
|
throw new Error("Model ID not found");
|
|
502
562
|
}
|
|
563
|
+
const modelCapability = (0, core_1.getModelCapabilities)(m.modelArn, this.provider);
|
|
503
564
|
const model = {
|
|
504
565
|
id: m.modelArn,
|
|
505
566
|
name: m.modelName ?? m.modelArn,
|
|
506
567
|
provider: this.provider,
|
|
507
568
|
description: `Custom model from ${m.baseModelName}`,
|
|
508
569
|
is_custom: true,
|
|
570
|
+
input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
|
|
571
|
+
output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
|
|
572
|
+
tool_support: modelCapability.tool_support,
|
|
509
573
|
};
|
|
510
|
-
|
|
574
|
+
aiModels.push(model);
|
|
511
575
|
this.validateConnection;
|
|
512
576
|
});
|
|
513
577
|
}
|
|
514
578
|
//add inference profiles
|
|
515
|
-
if (
|
|
516
|
-
|
|
579
|
+
if (inferenceProfilesList?.inferenceProfileSummaries) {
|
|
580
|
+
inferenceProfilesList.inferenceProfileSummaries.forEach((p) => {
|
|
517
581
|
if (!p.inferenceProfileArn) {
|
|
518
582
|
throw new Error("Profile ARN not found");
|
|
519
583
|
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
584
|
+
// Apply the same filtering logic to inference profiles based on their name
|
|
585
|
+
const profileId = p.inferenceProfileId || "";
|
|
586
|
+
const profileName = p.inferenceProfileName || "";
|
|
587
|
+
// Extract provider name from profile name or ID
|
|
588
|
+
let providerName = "";
|
|
589
|
+
for (const provider of supportedPublishers) {
|
|
590
|
+
if (profileName.toLowerCase().includes(provider) || profileId.toLowerCase().includes(provider)) {
|
|
591
|
+
providerName = provider;
|
|
592
|
+
break;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
const modelCapability = (0, core_1.getModelCapabilities)(p.inferenceProfileArn ?? p.inferenceProfileId, this.provider);
|
|
596
|
+
if (providerName && shouldIncludeModel(profileId, providerName)) {
|
|
597
|
+
const model = {
|
|
598
|
+
id: p.inferenceProfileArn ?? p.inferenceProfileId,
|
|
599
|
+
name: p.inferenceProfileName ?? p.inferenceProfileArn,
|
|
600
|
+
provider: this.provider,
|
|
601
|
+
input_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.input),
|
|
602
|
+
output_modalities: (0, core_1.modelModalitiesToArray)(modelCapability.output),
|
|
603
|
+
tool_support: modelCapability.tool_support,
|
|
604
|
+
};
|
|
605
|
+
aiModels.push(model);
|
|
606
|
+
}
|
|
526
607
|
});
|
|
527
608
|
}
|
|
528
|
-
return
|
|
609
|
+
return aiModels;
|
|
529
610
|
}
|
|
530
611
|
async generateEmbeddings({ text, image, model }) {
|
|
531
612
|
this.logger.info("[Bedrock] Generating embeddings with model " + model);
|
|
@@ -581,4 +662,57 @@ function jobInfo(job, jobId) {
|
|
|
581
662
|
details
|
|
582
663
|
};
|
|
583
664
|
}
|
|
665
|
+
function getToolDefinitions(tools) {
|
|
666
|
+
return tools ? tools.map(getToolDefinition) : undefined;
|
|
667
|
+
}
|
|
668
|
+
function getToolDefinition(tool) {
|
|
669
|
+
return {
|
|
670
|
+
toolSpec: {
|
|
671
|
+
name: tool.name,
|
|
672
|
+
description: tool.description,
|
|
673
|
+
inputSchema: {
|
|
674
|
+
json: tool.input_schema,
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Update the conversation messages
|
|
681
|
+
* @param prompt
|
|
682
|
+
* @param response
|
|
683
|
+
* @returns
|
|
684
|
+
*/
|
|
685
|
+
function updateConversation(conversation, prompt) {
|
|
686
|
+
return {
|
|
687
|
+
...conversation,
|
|
688
|
+
...prompt,
|
|
689
|
+
messages: [...(conversation?.messages || []), ...(prompt.messages || [])],
|
|
690
|
+
system: prompt.system || conversation?.system,
|
|
691
|
+
};
|
|
692
|
+
}
|
|
693
|
+
function formatAmazonModalities(modalities) {
|
|
694
|
+
const standardizedModalities = [];
|
|
695
|
+
for (const modality of modalities) {
|
|
696
|
+
if (modality === client_bedrock_1.ModelModality.TEXT) {
|
|
697
|
+
standardizedModalities.push("text");
|
|
698
|
+
}
|
|
699
|
+
else if (modality === client_bedrock_1.ModelModality.IMAGE) {
|
|
700
|
+
standardizedModalities.push("image");
|
|
701
|
+
}
|
|
702
|
+
else if (modality === client_bedrock_1.ModelModality.EMBEDDING) {
|
|
703
|
+
standardizedModalities.push("embedding");
|
|
704
|
+
}
|
|
705
|
+
else if (modality == "SPEECH") {
|
|
706
|
+
standardizedModalities.push("audio");
|
|
707
|
+
}
|
|
708
|
+
else if (modality == "VIDEO") {
|
|
709
|
+
standardizedModalities.push("video");
|
|
710
|
+
}
|
|
711
|
+
else {
|
|
712
|
+
// Handle other modalities as needed
|
|
713
|
+
standardizedModalities.push(modality.toString().toLowerCase());
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
return standardizedModalities;
|
|
717
|
+
}
|
|
584
718
|
//# sourceMappingURL=index.js.map
|