@llumiverse/drivers 0.18.0 → 0.20.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 (99) hide show
  1. package/lib/cjs/bedrock/converse.js +181 -123
  2. package/lib/cjs/bedrock/converse.js.map +1 -1
  3. package/lib/cjs/bedrock/index.js +168 -89
  4. package/lib/cjs/bedrock/index.js.map +1 -1
  5. package/lib/cjs/huggingface_ie.js +1 -1
  6. package/lib/cjs/huggingface_ie.js.map +1 -1
  7. package/lib/cjs/mistral/index.js +1 -1
  8. package/lib/cjs/mistral/index.js.map +1 -1
  9. package/lib/cjs/openai/index.js +10 -14
  10. package/lib/cjs/openai/index.js.map +1 -1
  11. package/lib/cjs/togetherai/index.js +1 -1
  12. package/lib/cjs/togetherai/index.js.map +1 -1
  13. package/lib/cjs/vertexai/index.js +82 -18
  14. package/lib/cjs/vertexai/index.js.map +1 -1
  15. package/lib/cjs/vertexai/models/claude.js +248 -159
  16. package/lib/cjs/vertexai/models/claude.js.map +1 -1
  17. package/lib/cjs/vertexai/models/gemini.js +496 -123
  18. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  19. package/lib/cjs/vertexai/models/imagen.js +2 -2
  20. package/lib/cjs/vertexai/models/imagen.js.map +1 -1
  21. package/lib/cjs/vertexai/models/llama.js +182 -0
  22. package/lib/cjs/vertexai/models/llama.js.map +1 -0
  23. package/lib/cjs/vertexai/models.js +4 -0
  24. package/lib/cjs/vertexai/models.js.map +1 -1
  25. package/lib/cjs/watsonx/index.js +11 -11
  26. package/lib/cjs/watsonx/index.js.map +1 -1
  27. package/lib/cjs/xai/index.js +1 -1
  28. package/lib/cjs/xai/index.js.map +1 -1
  29. package/lib/esm/bedrock/converse.js +180 -122
  30. package/lib/esm/bedrock/converse.js.map +1 -1
  31. package/lib/esm/bedrock/index.js +169 -90
  32. package/lib/esm/bedrock/index.js.map +1 -1
  33. package/lib/esm/huggingface_ie.js +1 -1
  34. package/lib/esm/huggingface_ie.js.map +1 -1
  35. package/lib/esm/mistral/index.js +1 -1
  36. package/lib/esm/mistral/index.js.map +1 -1
  37. package/lib/esm/openai/index.js +12 -16
  38. package/lib/esm/openai/index.js.map +1 -1
  39. package/lib/esm/togetherai/index.js +1 -1
  40. package/lib/esm/togetherai/index.js.map +1 -1
  41. package/lib/esm/vertexai/index.js +82 -18
  42. package/lib/esm/vertexai/index.js.map +1 -1
  43. package/lib/esm/vertexai/models/claude.js +249 -160
  44. package/lib/esm/vertexai/models/claude.js.map +1 -1
  45. package/lib/esm/vertexai/models/gemini.js +491 -119
  46. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  47. package/lib/esm/vertexai/models/imagen.js +2 -2
  48. package/lib/esm/vertexai/models/imagen.js.map +1 -1
  49. package/lib/esm/vertexai/models/llama.js +178 -0
  50. package/lib/esm/vertexai/models/llama.js.map +1 -0
  51. package/lib/esm/vertexai/models.js +4 -0
  52. package/lib/esm/vertexai/models.js.map +1 -1
  53. package/lib/esm/watsonx/index.js +11 -11
  54. package/lib/esm/watsonx/index.js.map +1 -1
  55. package/lib/esm/xai/index.js +1 -1
  56. package/lib/esm/xai/index.js.map +1 -1
  57. package/lib/types/bedrock/converse.d.ts +2 -2
  58. package/lib/types/bedrock/converse.d.ts.map +1 -1
  59. package/lib/types/bedrock/index.d.ts +5 -5
  60. package/lib/types/bedrock/index.d.ts.map +1 -1
  61. package/lib/types/groq/index.d.ts +1 -1
  62. package/lib/types/groq/index.d.ts.map +1 -1
  63. package/lib/types/huggingface_ie.d.ts +1 -1
  64. package/lib/types/huggingface_ie.d.ts.map +1 -1
  65. package/lib/types/mistral/index.d.ts +1 -1
  66. package/lib/types/mistral/index.d.ts.map +1 -1
  67. package/lib/types/openai/index.d.ts.map +1 -1
  68. package/lib/types/togetherai/index.d.ts +1 -1
  69. package/lib/types/togetherai/index.d.ts.map +1 -1
  70. package/lib/types/vertexai/index.d.ts +16 -7
  71. package/lib/types/vertexai/index.d.ts.map +1 -1
  72. package/lib/types/vertexai/models/claude.d.ts +5 -7
  73. package/lib/types/vertexai/models/claude.d.ts.map +1 -1
  74. package/lib/types/vertexai/models/gemini.d.ts +12 -7
  75. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  76. package/lib/types/vertexai/models/llama.d.ts +20 -0
  77. package/lib/types/vertexai/models/llama.d.ts.map +1 -0
  78. package/lib/types/vertexai/models.d.ts +7 -3
  79. package/lib/types/vertexai/models.d.ts.map +1 -1
  80. package/lib/types/watsonx/index.d.ts +1 -1
  81. package/lib/types/watsonx/index.d.ts.map +1 -1
  82. package/lib/types/xai/index.d.ts +1 -1
  83. package/lib/types/xai/index.d.ts.map +1 -1
  84. package/package.json +16 -16
  85. package/src/bedrock/converse.ts +194 -129
  86. package/src/bedrock/index.ts +193 -101
  87. package/src/groq/index.ts +1 -1
  88. package/src/huggingface_ie.ts +1 -1
  89. package/src/mistral/index.ts +1 -1
  90. package/src/openai/index.ts +12 -16
  91. package/src/togetherai/index.ts +1 -1
  92. package/src/vertexai/index.ts +95 -22
  93. package/src/vertexai/models/claude.ts +291 -176
  94. package/src/vertexai/models/gemini.ts +561 -138
  95. package/src/vertexai/models/imagen.ts +3 -3
  96. package/src/vertexai/models/llama.ts +261 -0
  97. package/src/vertexai/models.ts +7 -3
  98. package/src/watsonx/index.ts +13 -13
  99. package/src/xai/index.ts +1 -1
@@ -4,27 +4,6 @@ exports.ClaudeModelDefinition = void 0;
4
4
  exports.collectTools = collectTools;
5
5
  const core_1 = require("@llumiverse/core");
6
6
  const async_1 = require("@llumiverse/core/async");
7
- function getFullModelName(model) {
8
- if (model.includes("claude-3-5-sonnet-v2")) {
9
- return "claude-3-5-sonnet-v2@20241022";
10
- }
11
- else if (model.includes("claude-3-5-sonnet")) {
12
- return "claude-3-5-sonnet@20240620";
13
- }
14
- else if (model.includes("claude-3-5-haiku")) {
15
- return "claude-3-5-haiku@20241022";
16
- }
17
- else if (model.includes("claude-3-opus")) {
18
- return "claude-3-opus@20240229";
19
- }
20
- else if (model.includes("claude-3-sonnet")) {
21
- return "claude-3-sonnet@20240229";
22
- }
23
- else if (model.includes("claude-3-haiku")) {
24
- return "claude-3-haiku@20240307";
25
- }
26
- return model;
27
- }
28
7
  function claudeFinishReason(reason) {
29
8
  if (!reason)
30
9
  return undefined;
@@ -34,26 +13,101 @@ function claudeFinishReason(reason) {
34
13
  default: return reason; //stop_sequence
35
14
  }
36
15
  }
37
- function collectTextParts(content) {
16
+ function collectTools(content) {
38
17
  const out = [];
39
18
  for (const block of content) {
40
- if (block?.text) {
41
- out.push(block.text);
19
+ if (block.type === "tool_use") {
20
+ out.push({
21
+ id: block.id,
22
+ tool_name: block.name,
23
+ tool_input: block.input,
24
+ });
42
25
  }
43
26
  }
44
- return out.join('\n');
27
+ return out.length > 0 ? out : undefined;
45
28
  }
46
- function maxToken(max_tokens, model) {
47
- const contains = (str, substr) => str.indexOf(substr) !== -1;
48
- if (max_tokens) {
49
- return max_tokens;
29
+ function collectAllTextContent(content, includeThoughts = false) {
30
+ const textParts = [];
31
+ // First pass: collect thinking blocks
32
+ if (includeThoughts) {
33
+ for (const block of content) {
34
+ if (block.type === 'thinking' && block.thinking) {
35
+ textParts.push(block.thinking);
36
+ }
37
+ else if (block.type === 'redacted_thinking' && block.data) {
38
+ textParts.push(`[Redacted thinking: ${block.data}]`);
39
+ }
40
+ }
41
+ if (textParts.length > 0) {
42
+ textParts.push(''); // Create a new line after thinking blocks
43
+ }
50
44
  }
51
- else if (contains(model, "claude-3-5")) {
52
- return 8192;
45
+ // Second pass: collect text blocks
46
+ for (const block of content) {
47
+ if (block.type === 'text' && block.text) {
48
+ textParts.push(block.text);
49
+ }
50
+ }
51
+ return textParts.join('\n');
52
+ }
53
+ //Used to get a max_token value when not specified in the model options. Claude requires it to be set.
54
+ function maxToken(option) {
55
+ const modelOptions = option.model_options;
56
+ if (modelOptions && typeof modelOptions.max_tokens === "number") {
57
+ return modelOptions.max_tokens;
53
58
  }
54
59
  else {
55
- return 4096;
60
+ // Fallback to the default max tokens limit for the model
61
+ if (option.model.includes('claude-3-7-sonnet') && (modelOptions?.thinking_budget_tokens ?? 0) < 64000) {
62
+ return 64000; // Claude 3.7 can go up to 128k with a beta header, but when no max tokens is specified, we default to 64k.
63
+ }
64
+ return (0, core_1.getMaxTokensLimitVertexAi)(option.model);
65
+ }
66
+ }
67
+ async function collectFileBlocks(segment, restrictedTypes = false) {
68
+ const contentBlocks = [];
69
+ for (const file of segment.files || []) {
70
+ if (file.mime_type?.startsWith("image/")) {
71
+ const allowedTypes = ["image/png", "image/jpeg", "image/gif", "image/webp"];
72
+ if (!allowedTypes.includes(file.mime_type)) {
73
+ throw new Error(`Unsupported image type: ${file.mime_type}`);
74
+ }
75
+ const mimeType = String(file.mime_type);
76
+ contentBlocks.push({
77
+ type: 'image',
78
+ source: {
79
+ type: 'base64',
80
+ data: await (0, core_1.readStreamAsBase64)(await file.getStream()),
81
+ media_type: mimeType
82
+ }
83
+ });
84
+ }
85
+ else if (!restrictedTypes) {
86
+ if (file.mime_type === "application/pdf") {
87
+ contentBlocks.push({
88
+ title: file.name,
89
+ type: 'document',
90
+ source: {
91
+ type: 'base64',
92
+ data: await (0, core_1.readStreamAsBase64)(await file.getStream()),
93
+ media_type: 'application/pdf'
94
+ }
95
+ });
96
+ }
97
+ else if (file.mime_type?.startsWith("text/")) {
98
+ contentBlocks.push({
99
+ title: file.name,
100
+ type: 'document',
101
+ source: {
102
+ type: 'text',
103
+ data: await (0, core_1.readStreamAsString)(await file.getStream()),
104
+ media_type: 'text/plain'
105
+ }
106
+ });
107
+ }
108
+ }
56
109
  }
110
+ return contentBlocks;
57
111
  }
58
112
  class ClaudeModelDefinition {
59
113
  model;
@@ -68,86 +122,87 @@ class ClaudeModelDefinition {
68
122
  }
69
123
  async createPrompt(_driver, segments, options) {
70
124
  // Convert the prompt to the format expected by the Claude API
71
- const systemSegments = segments
125
+ let system = segments
72
126
  .filter(segment => segment.role === core_1.PromptRole.system)
73
127
  .map(segment => ({
74
128
  text: segment.content,
75
129
  type: 'text'
76
130
  }));
77
- const safetySegments = segments
78
- .filter(segment => segment.role === core_1.PromptRole.safety)
79
- .map(segment => ({
80
- text: segment.content,
81
- type: 'text'
82
- }));
83
131
  if (options.result_schema) {
132
+ let schemaText = '';
133
+ if (options.tools && options.tools.length > 0) {
134
+ schemaText = "When not calling tools, the answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema);
135
+ }
136
+ else {
137
+ schemaText = "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema);
138
+ }
84
139
  const schemaSegments = {
85
- text: "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema),
140
+ text: schemaText,
86
141
  type: 'text'
87
142
  };
88
- safetySegments.push(schemaSegments);
143
+ system.push(schemaSegments);
89
144
  }
90
- const messages = [];
145
+ let messages = [];
146
+ const safetyMessages = [];
91
147
  for (const segment of segments) {
92
- if (segment.role === core_1.PromptRole.system || segment.role === core_1.PromptRole.safety) {
148
+ if (segment.role === core_1.PromptRole.system) {
93
149
  continue;
94
150
  }
95
151
  if (segment.role === core_1.PromptRole.tool) {
96
152
  if (!segment.tool_use_id) {
97
- throw new Error("Tool prompt segment must have a tool_use_id");
153
+ throw new Error("Tool prompt segment must have a tool use ID");
98
154
  }
155
+ // Build content blocks for tool results (restricted types)
156
+ const contentBlocks = [];
157
+ if (segment.content) {
158
+ contentBlocks.push({
159
+ type: 'text',
160
+ text: segment.content
161
+ });
162
+ }
163
+ // Collect file blocks with type safety
164
+ const fileBlocks = await collectFileBlocks(segment, true);
165
+ contentBlocks.push(...fileBlocks);
99
166
  messages.push({
100
167
  role: 'user',
101
- content: [
102
- {
168
+ content: [{
103
169
  type: 'tool_result',
104
170
  tool_use_id: segment.tool_use_id,
105
- content: segment.content || undefined
106
- }
107
- ]
171
+ content: contentBlocks,
172
+ }]
108
173
  });
109
174
  }
110
175
  else {
176
+ // Build content blocks for regular messages (all types allowed)
111
177
  const contentBlocks = [];
112
- for (const file of segment.files || []) {
113
- if (file.mime_type?.startsWith("image/")) {
114
- const allowedTypes = ["image/png", "image/jpeg", "image/gif", "image/webp"];
115
- if (!allowedTypes.includes(file.mime_type)) {
116
- throw new Error(`Unsupported image type: ${file.mime_type}`);
117
- }
118
- contentBlocks.push({
119
- type: 'image',
120
- source: {
121
- type: 'base64',
122
- data: await (0, core_1.readStreamAsBase64)(await file.getStream()),
123
- media_type: file.mime_type
124
- }
125
- });
126
- }
127
- else if (file.mime_type?.startsWith("text/")) {
128
- contentBlocks.push({
129
- source: {
130
- type: 'text',
131
- data: await (0, core_1.readStreamAsBase64)(await file.getStream()),
132
- media_type: 'text/plain'
133
- },
134
- type: 'document'
135
- });
136
- }
137
- }
138
178
  if (segment.content) {
139
179
  contentBlocks.push({
140
180
  type: 'text',
141
181
  text: segment.content
142
182
  });
143
183
  }
144
- messages.push({
184
+ // Collect file blocks without restrictions
185
+ const fileBlocks = await collectFileBlocks(segment, false);
186
+ contentBlocks.push(...fileBlocks);
187
+ if (contentBlocks.length === 0) {
188
+ continue; // skip empty segments
189
+ }
190
+ const messageParam = {
145
191
  role: segment.role === core_1.PromptRole.assistant ? 'assistant' : 'user',
146
192
  content: contentBlocks
147
- });
193
+ };
194
+ if (segment.role === core_1.PromptRole.safety) {
195
+ safetyMessages.push(messageParam);
196
+ }
197
+ else {
198
+ messages.push(messageParam);
199
+ }
148
200
  }
149
201
  }
150
- const system = systemSegments.concat(safetySegments);
202
+ messages = messages.concat(safetyMessages);
203
+ if (system && system.length === 0) {
204
+ system = undefined; // If system is empty, set to undefined
205
+ }
151
206
  return {
152
207
  messages: messages,
153
208
  system: system
@@ -155,42 +210,27 @@ class ClaudeModelDefinition {
155
210
  }
156
211
  async requestTextCompletion(driver, prompt, options) {
157
212
  const client = driver.getAnthropicClient();
158
- const splits = options.model.split("/");
159
- const modelName = splits[splits.length - 1];
160
- options = { ...options, model: modelName };
161
213
  options.model_options = options.model_options;
162
214
  if (options.model_options?._option_id !== "vertexai-claude") {
163
215
  driver.logger.warn("Invalid model options", { options: options.model_options });
164
216
  }
165
217
  let conversation = updateConversation(options.conversation, prompt);
166
- const result = await client.messages.create({
167
- ...conversation, // messages, system,
168
- tools: options.tools, // we are using the same shape as claude for tools
169
- temperature: options.model_options?.temperature,
170
- model: modelName,
171
- max_tokens: maxToken(options.model_options?.max_tokens, modelName),
172
- top_p: options.model_options?.top_p,
173
- top_k: options.model_options?.top_k,
174
- stop_sequences: options.model_options?.stop_sequence,
175
- thinking: options.model_options?.thinking_mode ?
176
- {
177
- budget_tokens: options.model_options?.thinking_budget_tokens ?? 1024,
178
- type: "enabled"
179
- } : {
180
- type: "disabled"
181
- }
182
- });
183
- const text = collectTextParts(result.content);
218
+ const { payload, requestOptions } = getClaudePayload(options, conversation);
219
+ // disable streaming, the create function is overloaded so payload type matters.
220
+ const nonStreamingPayload = { ...payload, stream: false };
221
+ const result = await client.messages.create(nonStreamingPayload, requestOptions);
222
+ // Use the new function to collect text content, including thinking if enabled
223
+ const includeThoughts = options.model_options?.include_thoughts ?? false;
224
+ const text = collectAllTextContent(result.content, includeThoughts);
184
225
  const tool_use = collectTools(result.content);
185
226
  conversation = updateConversation(conversation, createPromptFromResponse(result));
186
227
  return {
187
- chat: [prompt, { role: result.role, content: result.content }],
188
228
  result: text ?? '',
189
229
  tool_use,
190
230
  token_usage: {
191
- prompt: result?.usage.input_tokens,
192
- result: result?.usage.output_tokens,
193
- total: result?.usage.input_tokens + result?.usage.output_tokens
231
+ prompt: result.usage.input_tokens,
232
+ result: result.usage.output_tokens,
233
+ total: result.usage.input_tokens + result.usage.output_tokens
194
234
  },
195
235
  // make sure we set finish_reason to the correct value (claude is normally setting this by itself)
196
236
  finish_reason: tool_use ? "tool_use" : claudeFinishReason(result?.stop_reason ?? ''),
@@ -199,74 +239,88 @@ class ClaudeModelDefinition {
199
239
  }
200
240
  async requestTextCompletionStream(driver, prompt, options) {
201
241
  const client = driver.getAnthropicClient();
202
- const splits = options.model.split("/");
203
- const modelName = splits[splits.length - 1];
204
- options = { ...options, model: modelName };
205
- options.model_options = options.model_options;
206
- if (options.model_options?._option_id !== "vertexai-claude") {
242
+ const model_options = options.model_options;
243
+ if (model_options?._option_id !== "vertexai-claude") {
207
244
  driver.logger.warn("Invalid model options", { options: options.model_options });
208
245
  }
209
- const response_stream = await client.messages.stream({
210
- ...prompt, // messages, system,
211
- tools: options.tools, // we are using the same shape as claude for tools
212
- temperature: options.model_options?.temperature,
213
- model: modelName,
214
- max_tokens: maxToken(options.model_options?.max_tokens, modelName),
215
- top_p: options.model_options?.top_p,
216
- top_k: options.model_options?.top_k,
217
- stop_sequences: options.model_options?.stop_sequence,
218
- thinking: options.model_options?.thinking_mode ?
219
- {
220
- budget_tokens: options.model_options?.thinking_budget_tokens ?? 1024,
221
- type: "enabled"
222
- } : {
223
- type: "disabled"
246
+ const { payload, requestOptions } = getClaudePayload(options, prompt);
247
+ const streamingPayload = { ...payload, stream: true };
248
+ const response_stream = await client.messages.stream(streamingPayload, requestOptions);
249
+ const stream = (0, async_1.asyncMap)(response_stream, async (streamEvent) => {
250
+ switch (streamEvent.type) {
251
+ case "message_start":
252
+ return {
253
+ result: '',
254
+ token_usage: {
255
+ prompt: streamEvent.message.usage.input_tokens,
256
+ result: streamEvent.message.usage.output_tokens
257
+ }
258
+ };
259
+ case "message_delta":
260
+ return {
261
+ result: '',
262
+ token_usage: {
263
+ result: streamEvent.usage.output_tokens
264
+ },
265
+ finish_reason: claudeFinishReason(streamEvent.delta.stop_reason ?? undefined),
266
+ };
267
+ case "content_block_start":
268
+ // Handle redacted thinking blocks
269
+ if (streamEvent.content_block.type === "redacted_thinking" && model_options?.include_thoughts) {
270
+ return {
271
+ result: `[Redacted thinking: ${streamEvent.content_block.data}]`
272
+ };
273
+ }
274
+ break;
275
+ case "content_block_delta":
276
+ // Handle different delta types
277
+ switch (streamEvent.delta.type) {
278
+ case "text_delta":
279
+ return {
280
+ result: streamEvent.delta.text ?? ''
281
+ };
282
+ case "thinking_delta":
283
+ if (model_options?.include_thoughts) {
284
+ return {
285
+ result: streamEvent.delta.thinking ?? '',
286
+ };
287
+ }
288
+ break;
289
+ case "signature_delta":
290
+ // Signature deltas, signify the end of the thoughts.
291
+ if (model_options?.include_thoughts) {
292
+ return {
293
+ result: '\n\n', // Double newline for more spacing
294
+ };
295
+ }
296
+ break;
297
+ }
298
+ break;
299
+ case "content_block_stop":
300
+ // Handle the end of content blocks, for redacted thinking blocks
301
+ if (model_options?.include_thoughts) {
302
+ return {
303
+ result: '\n\n' // Add double newline for spacing
304
+ };
305
+ }
306
+ break;
224
307
  }
225
- });
226
- //Streaming does not give information on the input tokens,
227
- //So we use a separate call to get the input tokens.
228
- //Non-critical and model name sensitive so we put it in a try catch block
229
- let count_tokens = { input_tokens: 0 };
230
- try {
231
- count_tokens = await client.messages.countTokens({
232
- ...prompt, // messages, system
233
- model: getFullModelName(modelName),
234
- });
235
- }
236
- catch (e) {
237
- driver.logger.warn("Failed to get token count for model " + modelName);
238
- }
239
- const stream = (0, async_1.asyncMap)(response_stream, async (item) => {
308
+ // Default case for all other event types
240
309
  return {
241
- result: item?.delta?.text ?? '',
242
- token_usage: { prompt: count_tokens.input_tokens, result: item?.usage?.output_tokens },
243
- finish_reason: claudeFinishReason(item?.delta?.stop_reason ?? ''),
310
+ result: ''
244
311
  };
245
312
  });
246
313
  return stream;
247
314
  }
248
315
  }
249
316
  exports.ClaudeModelDefinition = ClaudeModelDefinition;
250
- function collectTools(content) {
251
- const out = [];
252
- for (const block of content) {
253
- if (block?.type === "tool_use") {
254
- out.push({
255
- id: block.id,
256
- tool_name: block.name,
257
- tool_input: block.input,
258
- });
259
- }
260
- }
261
- return out.length > 0 ? out : undefined;
262
- }
263
317
  function createPromptFromResponse(response) {
264
318
  return {
265
319
  messages: [{
266
- role: core_1.PromptRole.assistant,
320
+ role: response.role,
267
321
  content: response.content,
268
322
  }],
269
- system: []
323
+ system: undefined
270
324
  };
271
325
  }
272
326
  /**
@@ -276,11 +330,46 @@ function createPromptFromResponse(response) {
276
330
  * @returns
277
331
  */
278
332
  function updateConversation(conversation, prompt) {
279
- const baseSystemMessages = conversation ? conversation.system : [];
280
- const baseMessages = conversation ? conversation.messages : [];
333
+ const baseSystemMessages = conversation?.system || [];
334
+ const baseMessages = conversation?.messages || [];
335
+ const system = baseSystemMessages.concat(prompt.system || []);
281
336
  return {
282
337
  messages: baseMessages.concat(prompt.messages || []),
283
- system: baseSystemMessages.concat(prompt.system || [])
338
+ system: system.length > 0 ? system : undefined // If system is empty, set to undefined
339
+ };
340
+ }
341
+ function getClaudePayload(options, prompt) {
342
+ const splits = options.model.split("/");
343
+ const modelName = splits[splits.length - 1];
344
+ const model_options = options.model_options;
345
+ // Add beta header for Claude 3.7 models to enable 128k output tokens
346
+ let requestOptions = undefined;
347
+ if (modelName.includes('claude-3-7-sonnet') &&
348
+ ((model_options?.max_tokens ?? 0) > 64000 || (model_options?.thinking_budget_tokens ?? 0) > 64000)) {
349
+ requestOptions = {
350
+ headers: {
351
+ 'anthropic-beta': 'output-128k-2025-02-19'
352
+ }
353
+ };
354
+ }
355
+ const payload = {
356
+ messages: prompt.messages,
357
+ system: prompt.system,
358
+ tools: options.tools, // we are using the same shape as claude for tools
359
+ temperature: model_options?.temperature,
360
+ model: modelName,
361
+ max_tokens: maxToken(options),
362
+ top_p: model_options?.top_p,
363
+ top_k: model_options?.top_k,
364
+ stop_sequences: model_options?.stop_sequence,
365
+ thinking: model_options?.thinking_mode ?
366
+ {
367
+ budget_tokens: model_options?.thinking_budget_tokens ?? 1024,
368
+ type: "enabled"
369
+ } : {
370
+ type: "disabled"
371
+ }
284
372
  };
373
+ return { payload, requestOptions };
285
374
  }
286
375
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/vertexai/models/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/vertexai/models/claude.ts"],"names":[],"mappings":"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"}