@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.
Files changed (138) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/bedrock/converse.js +65 -15
  3. package/lib/cjs/bedrock/converse.js.map +1 -1
  4. package/lib/cjs/bedrock/index.js +207 -73
  5. package/lib/cjs/bedrock/index.js.map +1 -1
  6. package/lib/cjs/bedrock/nova-image-payload.js.map +1 -1
  7. package/lib/cjs/bedrock/s3.js +47 -0
  8. package/lib/cjs/bedrock/s3.js.map +1 -1
  9. package/lib/cjs/groq/index.js +4 -4
  10. package/lib/cjs/groq/index.js.map +1 -1
  11. package/lib/cjs/huggingface_ie.js +1 -1
  12. package/lib/cjs/huggingface_ie.js.map +1 -1
  13. package/lib/cjs/mistral/index.js +4 -4
  14. package/lib/cjs/mistral/index.js.map +1 -1
  15. package/lib/cjs/openai/azure.js +1 -1
  16. package/lib/cjs/openai/azure.js.map +1 -1
  17. package/lib/cjs/openai/index.js +200 -82
  18. package/lib/cjs/openai/index.js.map +1 -1
  19. package/lib/cjs/replicate.js +1 -1
  20. package/lib/cjs/togetherai/index.js +3 -3
  21. package/lib/cjs/togetherai/index.js.map +1 -1
  22. package/lib/cjs/vertexai/embeddings/embeddings-image.js +2 -1
  23. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -1
  24. package/lib/cjs/vertexai/embeddings/embeddings-text.js +2 -1
  25. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -1
  26. package/lib/cjs/vertexai/index.js +138 -45
  27. package/lib/cjs/vertexai/index.js.map +1 -1
  28. package/lib/cjs/vertexai/models/claude.js +66 -52
  29. package/lib/cjs/vertexai/models/claude.js.map +1 -1
  30. package/lib/cjs/vertexai/models/gemini.js +416 -83
  31. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  32. package/lib/cjs/vertexai/models/imagen.js.map +1 -1
  33. package/lib/cjs/vertexai/models/llama.js +182 -0
  34. package/lib/cjs/vertexai/models/llama.js.map +1 -0
  35. package/lib/cjs/vertexai/models.js +4 -0
  36. package/lib/cjs/vertexai/models.js.map +1 -1
  37. package/lib/cjs/watsonx/index.js +3 -3
  38. package/lib/cjs/watsonx/index.js.map +1 -1
  39. package/lib/cjs/xai/index.js +1 -1
  40. package/lib/cjs/xai/index.js.map +1 -1
  41. package/lib/esm/bedrock/converse.js +63 -14
  42. package/lib/esm/bedrock/converse.js.map +1 -1
  43. package/lib/esm/bedrock/index.js +210 -76
  44. package/lib/esm/bedrock/index.js.map +1 -1
  45. package/lib/esm/bedrock/nova-image-payload.js.map +1 -1
  46. package/lib/esm/bedrock/s3.js +46 -0
  47. package/lib/esm/bedrock/s3.js.map +1 -1
  48. package/lib/esm/groq/index.js +4 -4
  49. package/lib/esm/groq/index.js.map +1 -1
  50. package/lib/esm/huggingface_ie.js +1 -1
  51. package/lib/esm/huggingface_ie.js.map +1 -1
  52. package/lib/esm/mistral/index.js +4 -4
  53. package/lib/esm/mistral/index.js.map +1 -1
  54. package/lib/esm/openai/azure.js +1 -1
  55. package/lib/esm/openai/azure.js.map +1 -1
  56. package/lib/esm/openai/index.js +200 -83
  57. package/lib/esm/openai/index.js.map +1 -1
  58. package/lib/esm/replicate.js +1 -1
  59. package/lib/esm/togetherai/index.js +3 -3
  60. package/lib/esm/togetherai/index.js.map +1 -1
  61. package/lib/esm/vertexai/embeddings/embeddings-image.js +2 -1
  62. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -1
  63. package/lib/esm/vertexai/embeddings/embeddings-text.js +2 -1
  64. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -1
  65. package/lib/esm/vertexai/index.js +139 -46
  66. package/lib/esm/vertexai/index.js.map +1 -1
  67. package/lib/esm/vertexai/models/claude.js +67 -53
  68. package/lib/esm/vertexai/models/claude.js.map +1 -1
  69. package/lib/esm/vertexai/models/gemini.js +412 -79
  70. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  71. package/lib/esm/vertexai/models/imagen.js.map +1 -1
  72. package/lib/esm/vertexai/models/llama.js +178 -0
  73. package/lib/esm/vertexai/models/llama.js.map +1 -0
  74. package/lib/esm/vertexai/models.js +4 -0
  75. package/lib/esm/vertexai/models.js.map +1 -1
  76. package/lib/esm/watsonx/index.js +3 -3
  77. package/lib/esm/watsonx/index.js.map +1 -1
  78. package/lib/esm/xai/index.js +1 -1
  79. package/lib/esm/xai/index.js.map +1 -1
  80. package/lib/types/bedrock/converse.d.ts +2 -1
  81. package/lib/types/bedrock/converse.d.ts.map +1 -1
  82. package/lib/types/bedrock/index.d.ts +4 -15
  83. package/lib/types/bedrock/index.d.ts.map +1 -1
  84. package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -1
  85. package/lib/types/bedrock/s3.d.ts +6 -0
  86. package/lib/types/bedrock/s3.d.ts.map +1 -1
  87. package/lib/types/groq/index.d.ts +1 -1
  88. package/lib/types/groq/index.d.ts.map +1 -1
  89. package/lib/types/huggingface_ie.d.ts +1 -1
  90. package/lib/types/huggingface_ie.d.ts.map +1 -1
  91. package/lib/types/mistral/index.d.ts +1 -1
  92. package/lib/types/mistral/index.d.ts.map +1 -1
  93. package/lib/types/openai/index.d.ts +8 -5
  94. package/lib/types/openai/index.d.ts.map +1 -1
  95. package/lib/types/togetherai/index.d.ts +1 -1
  96. package/lib/types/togetherai/index.d.ts.map +1 -1
  97. package/lib/types/togetherai/interfaces.d.ts +3 -3
  98. package/lib/types/togetherai/interfaces.d.ts.map +1 -1
  99. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -1
  100. package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +1 -1
  101. package/lib/types/vertexai/index.d.ts +21 -10
  102. package/lib/types/vertexai/index.d.ts.map +1 -1
  103. package/lib/types/vertexai/models/claude.d.ts.map +1 -1
  104. package/lib/types/vertexai/models/gemini.d.ts +9 -6
  105. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  106. package/lib/types/vertexai/models/imagen.d.ts.map +1 -1
  107. package/lib/types/vertexai/models/llama.d.ts +20 -0
  108. package/lib/types/vertexai/models/llama.d.ts.map +1 -0
  109. package/lib/types/vertexai/models.d.ts +6 -2
  110. package/lib/types/vertexai/models.d.ts.map +1 -1
  111. package/lib/types/watsonx/index.d.ts +1 -1
  112. package/lib/types/watsonx/index.d.ts.map +1 -1
  113. package/lib/types/xai/index.d.ts +1 -1
  114. package/lib/types/xai/index.d.ts.map +1 -1
  115. package/package.json +17 -16
  116. package/src/bedrock/converse.ts +65 -16
  117. package/src/bedrock/index.ts +245 -86
  118. package/src/bedrock/nova-image-payload.ts +1 -2
  119. package/src/bedrock/s3.ts +48 -0
  120. package/src/groq/index.ts +5 -5
  121. package/src/huggingface_ie.ts +1 -1
  122. package/src/mistral/index.ts +4 -4
  123. package/src/openai/azure.ts +2 -2
  124. package/src/openai/index.ts +247 -92
  125. package/src/openai/openai.ts +1 -1
  126. package/src/replicate.ts +1 -1
  127. package/src/togetherai/index.ts +3 -3
  128. package/src/togetherai/interfaces.ts +3 -3
  129. package/src/vertexai/embeddings/embeddings-image.ts +5 -3
  130. package/src/vertexai/embeddings/embeddings-text.ts +5 -3
  131. package/src/vertexai/index.ts +158 -50
  132. package/src/vertexai/models/claude.ts +84 -60
  133. package/src/vertexai/models/gemini.ts +476 -96
  134. package/src/vertexai/models/imagen.ts +4 -3
  135. package/src/vertexai/models/llama.ts +261 -0
  136. package/src/vertexai/models.ts +6 -2
  137. package/src/watsonx/index.ts +3 -3
  138. 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
- Llumivers is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). Feel free to use it accordingly.
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.fortmatConversePrompt = fortmatConversePrompt;
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
- async function fortmatConversePrompt(segments, schema) {
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
- content = [
114
- {
115
- video: {
116
- format: mimeToVideoType(f.mime_type),
117
- source: { bytes: await readStreamAsUint8Array(source) },
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":"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"}
1
+ {"version":3,"file":"converse.js","sourceRoot":"","sources":["../../../src/bedrock/converse.ts"],"names":[],"mappings":"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"}
@@ -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.fortmatConversePrompt)(segments, opts.result_schema);
69
+ return await (0, converse_js_1.formatConversePrompt)(segments, opts.result_schema);
70
70
  }
71
- static getExtractedExecuton(result, _prompt) {
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
- const payload = this.preparePayload(prompt, options);
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.getExtractedExecuton(res, prompt),
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?.top_k } };
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?.thinking_mode ?? false;
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
- top_k: model_options?.top_k,
260
+ ...additionalField,
233
261
  reasoning_config: {
234
262
  type: thinking ? "enabled" : "disabled",
235
- budget_tokens: thinking_options?.thinking_budget_tokens,
263
+ budget_tokens: thinking_options.thinking_budget_tokens,
236
264
  }
237
265
  };
238
- if (thinking && (thinking_options?.thinking_budget_tokens ?? 0) > 64000) {
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?.max_tokens) {
247
- if (options.model.includes("claude-3-5")) {
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?.top_k };
277
+ additionalField = { ...additionalField, top_k: model_options.top_k };
260
278
  }
261
279
  else if (options.model.includes("meta")) {
262
- //If last message is "```json", remove it. Model requires the final message to be a user message
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?.top_k };
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?.presence_penalty },
290
- frequencyPenalty: { scale: model_options?.frequency_penalty },
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?.top_k,
308
- frequency_penalty: model_options?.frequency_penalty,
309
- presence_penalty: model_options?.presence_penalty,
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?.top_k };
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?.stop_sequence;
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
- return {
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?.max_tokens,
342
- temperature: model_options?.temperature,
343
- topP: model_options?.top_p,
344
- stopSequences: model_options?.stop_sequence,
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 [foundationals, customs, inferenceProfiles] = await Promise.all([
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 (!foundationals?.modelSummaries) {
502
+ if (!foundationModelsList?.modelSummaries) {
468
503
  throw new Error("Foundation models not found");
469
504
  }
470
- let fmodels = foundationals.modelSummaries || [];
505
+ let foundationModels = foundationModelsList.modelSummaries || [];
471
506
  if (foundationFilter) {
472
- fmodels = fmodels.filter(foundationFilter);
507
+ foundationModels = foundationModels.filter(foundationFilter);
473
508
  }
474
- const supportedProviders = ["amazon", "anthropic", "cohere", "ai21", "mistral", "meta", "deepseek"];
475
- fmodels = fmodels.filter((m) => {
476
- supportedProviders.some((provider) => {
477
- m.providerName?.includes(provider) ?? false;
478
- });
479
- });
480
- const aimodels = fmodels.map((m) => {
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
- is_multimodal: m.inputModalities?.includes("IMAGE") ?? false,
493
- tags: m.outputModalities ?? [],
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 (customs?.modelSummaries) {
499
- customs.modelSummaries.forEach((m) => {
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
- aimodels.push(model);
574
+ aiModels.push(model);
511
575
  this.validateConnection;
512
576
  });
513
577
  }
514
578
  //add inference profiles
515
- if (inferenceProfiles?.inferenceProfileSummaries) {
516
- inferenceProfiles.inferenceProfileSummaries.forEach((p) => {
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
- const model = {
521
- id: p.inferenceProfileArn ?? p.inferenceProfileId,
522
- name: p.inferenceProfileName ?? p.inferenceProfileArn,
523
- provider: this.provider,
524
- };
525
- aimodels.push(model);
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 aimodels;
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