@llumiverse/drivers 0.24.0 → 0.25.0-dev.20260204.110528Z

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 (224) hide show
  1. package/package.json +3 -3
  2. package/lib/cjs/adobe/firefly.js +0 -120
  3. package/lib/cjs/adobe/firefly.js.map +0 -1
  4. package/lib/cjs/azure/azure_foundry.js +0 -432
  5. package/lib/cjs/azure/azure_foundry.js.map +0 -1
  6. package/lib/cjs/bedrock/converse.js +0 -285
  7. package/lib/cjs/bedrock/converse.js.map +0 -1
  8. package/lib/cjs/bedrock/index.js +0 -1091
  9. package/lib/cjs/bedrock/index.js.map +0 -1
  10. package/lib/cjs/bedrock/nova-image-payload.js +0 -207
  11. package/lib/cjs/bedrock/nova-image-payload.js.map +0 -1
  12. package/lib/cjs/bedrock/payloads.js +0 -3
  13. package/lib/cjs/bedrock/payloads.js.map +0 -1
  14. package/lib/cjs/bedrock/s3.js +0 -107
  15. package/lib/cjs/bedrock/s3.js.map +0 -1
  16. package/lib/cjs/bedrock/twelvelabs.js +0 -87
  17. package/lib/cjs/bedrock/twelvelabs.js.map +0 -1
  18. package/lib/cjs/groq/index.js +0 -323
  19. package/lib/cjs/groq/index.js.map +0 -1
  20. package/lib/cjs/huggingface_ie.js +0 -201
  21. package/lib/cjs/huggingface_ie.js.map +0 -1
  22. package/lib/cjs/index.js +0 -31
  23. package/lib/cjs/index.js.map +0 -1
  24. package/lib/cjs/mistral/index.js +0 -173
  25. package/lib/cjs/mistral/index.js.map +0 -1
  26. package/lib/cjs/mistral/types.js +0 -83
  27. package/lib/cjs/mistral/types.js.map +0 -1
  28. package/lib/cjs/openai/azure_openai.js +0 -72
  29. package/lib/cjs/openai/azure_openai.js.map +0 -1
  30. package/lib/cjs/openai/index.js +0 -665
  31. package/lib/cjs/openai/index.js.map +0 -1
  32. package/lib/cjs/openai/openai.js +0 -21
  33. package/lib/cjs/openai/openai.js.map +0 -1
  34. package/lib/cjs/openai/openai_compatible.js +0 -62
  35. package/lib/cjs/openai/openai_compatible.js.map +0 -1
  36. package/lib/cjs/openai/openai_format.js +0 -131
  37. package/lib/cjs/openai/openai_format.js.map +0 -1
  38. package/lib/cjs/package.json +0 -3
  39. package/lib/cjs/replicate.js +0 -275
  40. package/lib/cjs/replicate.js.map +0 -1
  41. package/lib/cjs/test-driver/TestErrorCompletionStream.js +0 -20
  42. package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +0 -1
  43. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +0 -24
  44. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
  45. package/lib/cjs/test-driver/index.js +0 -109
  46. package/lib/cjs/test-driver/index.js.map +0 -1
  47. package/lib/cjs/test-driver/utils.js +0 -30
  48. package/lib/cjs/test-driver/utils.js.map +0 -1
  49. package/lib/cjs/togetherai/index.js +0 -126
  50. package/lib/cjs/togetherai/index.js.map +0 -1
  51. package/lib/cjs/togetherai/interfaces.js +0 -3
  52. package/lib/cjs/togetherai/interfaces.js.map +0 -1
  53. package/lib/cjs/vertexai/debug.js +0 -12
  54. package/lib/cjs/vertexai/debug.js.map +0 -1
  55. package/lib/cjs/vertexai/embeddings/embeddings-image.js +0 -27
  56. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +0 -1
  57. package/lib/cjs/vertexai/embeddings/embeddings-text.js +0 -23
  58. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +0 -1
  59. package/lib/cjs/vertexai/index.js +0 -576
  60. package/lib/cjs/vertexai/index.js.map +0 -1
  61. package/lib/cjs/vertexai/models/claude.js +0 -485
  62. package/lib/cjs/vertexai/models/claude.js.map +0 -1
  63. package/lib/cjs/vertexai/models/gemini.js +0 -871
  64. package/lib/cjs/vertexai/models/gemini.js.map +0 -1
  65. package/lib/cjs/vertexai/models/imagen.js +0 -303
  66. package/lib/cjs/vertexai/models/imagen.js.map +0 -1
  67. package/lib/cjs/vertexai/models/llama.js +0 -183
  68. package/lib/cjs/vertexai/models/llama.js.map +0 -1
  69. package/lib/cjs/vertexai/models.js +0 -35
  70. package/lib/cjs/vertexai/models.js.map +0 -1
  71. package/lib/cjs/watsonx/index.js +0 -161
  72. package/lib/cjs/watsonx/index.js.map +0 -1
  73. package/lib/cjs/watsonx/interfaces.js +0 -3
  74. package/lib/cjs/watsonx/interfaces.js.map +0 -1
  75. package/lib/cjs/xai/index.js +0 -65
  76. package/lib/cjs/xai/index.js.map +0 -1
  77. package/lib/esm/adobe/firefly.js +0 -116
  78. package/lib/esm/adobe/firefly.js.map +0 -1
  79. package/lib/esm/azure/azure_foundry.js +0 -426
  80. package/lib/esm/azure/azure_foundry.js.map +0 -1
  81. package/lib/esm/bedrock/converse.js +0 -278
  82. package/lib/esm/bedrock/converse.js.map +0 -1
  83. package/lib/esm/bedrock/index.js +0 -1087
  84. package/lib/esm/bedrock/index.js.map +0 -1
  85. package/lib/esm/bedrock/nova-image-payload.js +0 -203
  86. package/lib/esm/bedrock/nova-image-payload.js.map +0 -1
  87. package/lib/esm/bedrock/payloads.js +0 -2
  88. package/lib/esm/bedrock/payloads.js.map +0 -1
  89. package/lib/esm/bedrock/s3.js +0 -99
  90. package/lib/esm/bedrock/s3.js.map +0 -1
  91. package/lib/esm/bedrock/twelvelabs.js +0 -84
  92. package/lib/esm/bedrock/twelvelabs.js.map +0 -1
  93. package/lib/esm/groq/index.js +0 -316
  94. package/lib/esm/groq/index.js.map +0 -1
  95. package/lib/esm/huggingface_ie.js +0 -197
  96. package/lib/esm/huggingface_ie.js.map +0 -1
  97. package/lib/esm/index.js +0 -15
  98. package/lib/esm/index.js.map +0 -1
  99. package/lib/esm/mistral/index.js +0 -169
  100. package/lib/esm/mistral/index.js.map +0 -1
  101. package/lib/esm/mistral/types.js +0 -80
  102. package/lib/esm/mistral/types.js.map +0 -1
  103. package/lib/esm/openai/azure_openai.js +0 -68
  104. package/lib/esm/openai/azure_openai.js.map +0 -1
  105. package/lib/esm/openai/index.js +0 -660
  106. package/lib/esm/openai/index.js.map +0 -1
  107. package/lib/esm/openai/openai.js +0 -14
  108. package/lib/esm/openai/openai.js.map +0 -1
  109. package/lib/esm/openai/openai_compatible.js +0 -55
  110. package/lib/esm/openai/openai_compatible.js.map +0 -1
  111. package/lib/esm/openai/openai_format.js +0 -127
  112. package/lib/esm/openai/openai_format.js.map +0 -1
  113. package/lib/esm/replicate.js +0 -268
  114. package/lib/esm/replicate.js.map +0 -1
  115. package/lib/esm/test-driver/TestErrorCompletionStream.js +0 -16
  116. package/lib/esm/test-driver/TestErrorCompletionStream.js.map +0 -1
  117. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js +0 -20
  118. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
  119. package/lib/esm/test-driver/index.js +0 -91
  120. package/lib/esm/test-driver/index.js.map +0 -1
  121. package/lib/esm/test-driver/utils.js +0 -25
  122. package/lib/esm/test-driver/utils.js.map +0 -1
  123. package/lib/esm/togetherai/index.js +0 -122
  124. package/lib/esm/togetherai/index.js.map +0 -1
  125. package/lib/esm/togetherai/interfaces.js +0 -2
  126. package/lib/esm/togetherai/interfaces.js.map +0 -1
  127. package/lib/esm/vertexai/debug.js +0 -6
  128. package/lib/esm/vertexai/debug.js.map +0 -1
  129. package/lib/esm/vertexai/embeddings/embeddings-image.js +0 -24
  130. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +0 -1
  131. package/lib/esm/vertexai/embeddings/embeddings-text.js +0 -20
  132. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +0 -1
  133. package/lib/esm/vertexai/index.js +0 -571
  134. package/lib/esm/vertexai/index.js.map +0 -1
  135. package/lib/esm/vertexai/models/claude.js +0 -479
  136. package/lib/esm/vertexai/models/claude.js.map +0 -1
  137. package/lib/esm/vertexai/models/gemini.js +0 -866
  138. package/lib/esm/vertexai/models/gemini.js.map +0 -1
  139. package/lib/esm/vertexai/models/imagen.js +0 -299
  140. package/lib/esm/vertexai/models/imagen.js.map +0 -1
  141. package/lib/esm/vertexai/models/llama.js +0 -179
  142. package/lib/esm/vertexai/models/llama.js.map +0 -1
  143. package/lib/esm/vertexai/models.js +0 -32
  144. package/lib/esm/vertexai/models.js.map +0 -1
  145. package/lib/esm/watsonx/index.js +0 -157
  146. package/lib/esm/watsonx/index.js.map +0 -1
  147. package/lib/esm/watsonx/interfaces.js +0 -2
  148. package/lib/esm/watsonx/interfaces.js.map +0 -1
  149. package/lib/esm/xai/index.js +0 -58
  150. package/lib/esm/xai/index.js.map +0 -1
  151. package/lib/types/adobe/firefly.d.ts +0 -30
  152. package/lib/types/adobe/firefly.d.ts.map +0 -1
  153. package/lib/types/azure/azure_foundry.d.ts +0 -52
  154. package/lib/types/azure/azure_foundry.d.ts.map +0 -1
  155. package/lib/types/bedrock/converse.d.ts +0 -9
  156. package/lib/types/bedrock/converse.d.ts.map +0 -1
  157. package/lib/types/bedrock/index.d.ts +0 -68
  158. package/lib/types/bedrock/index.d.ts.map +0 -1
  159. package/lib/types/bedrock/nova-image-payload.d.ts +0 -74
  160. package/lib/types/bedrock/nova-image-payload.d.ts.map +0 -1
  161. package/lib/types/bedrock/payloads.d.ts +0 -12
  162. package/lib/types/bedrock/payloads.d.ts.map +0 -1
  163. package/lib/types/bedrock/s3.d.ts +0 -23
  164. package/lib/types/bedrock/s3.d.ts.map +0 -1
  165. package/lib/types/bedrock/twelvelabs.d.ts +0 -50
  166. package/lib/types/bedrock/twelvelabs.d.ts.map +0 -1
  167. package/lib/types/groq/index.d.ts +0 -27
  168. package/lib/types/groq/index.d.ts.map +0 -1
  169. package/lib/types/huggingface_ie.d.ts +0 -35
  170. package/lib/types/huggingface_ie.d.ts.map +0 -1
  171. package/lib/types/index.d.ts +0 -15
  172. package/lib/types/index.d.ts.map +0 -1
  173. package/lib/types/mistral/index.d.ts +0 -25
  174. package/lib/types/mistral/index.d.ts.map +0 -1
  175. package/lib/types/mistral/types.d.ts +0 -132
  176. package/lib/types/mistral/types.d.ts.map +0 -1
  177. package/lib/types/openai/azure_openai.d.ts +0 -25
  178. package/lib/types/openai/azure_openai.d.ts.map +0 -1
  179. package/lib/types/openai/index.d.ts +0 -31
  180. package/lib/types/openai/index.d.ts.map +0 -1
  181. package/lib/types/openai/openai.d.ts +0 -15
  182. package/lib/types/openai/openai.d.ts.map +0 -1
  183. package/lib/types/openai/openai_compatible.d.ts +0 -26
  184. package/lib/types/openai/openai_compatible.d.ts.map +0 -1
  185. package/lib/types/openai/openai_format.d.ts +0 -21
  186. package/lib/types/openai/openai_format.d.ts.map +0 -1
  187. package/lib/types/replicate.d.ts +0 -48
  188. package/lib/types/replicate.d.ts.map +0 -1
  189. package/lib/types/test-driver/TestErrorCompletionStream.d.ts +0 -9
  190. package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +0 -1
  191. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts +0 -9
  192. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +0 -1
  193. package/lib/types/test-driver/index.d.ts +0 -24
  194. package/lib/types/test-driver/index.d.ts.map +0 -1
  195. package/lib/types/test-driver/utils.d.ts +0 -5
  196. package/lib/types/test-driver/utils.d.ts.map +0 -1
  197. package/lib/types/togetherai/index.d.ts +0 -23
  198. package/lib/types/togetherai/index.d.ts.map +0 -1
  199. package/lib/types/togetherai/interfaces.d.ts +0 -96
  200. package/lib/types/togetherai/interfaces.d.ts.map +0 -1
  201. package/lib/types/vertexai/debug.d.ts +0 -2
  202. package/lib/types/vertexai/debug.d.ts.map +0 -1
  203. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +0 -11
  204. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +0 -1
  205. package/lib/types/vertexai/embeddings/embeddings-text.d.ts +0 -10
  206. package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +0 -1
  207. package/lib/types/vertexai/index.d.ts +0 -65
  208. package/lib/types/vertexai/index.d.ts.map +0 -1
  209. package/lib/types/vertexai/models/claude.d.ts +0 -28
  210. package/lib/types/vertexai/models/claude.d.ts.map +0 -1
  211. package/lib/types/vertexai/models/gemini.d.ts +0 -18
  212. package/lib/types/vertexai/models/gemini.d.ts.map +0 -1
  213. package/lib/types/vertexai/models/imagen.d.ts +0 -75
  214. package/lib/types/vertexai/models/imagen.d.ts.map +0 -1
  215. package/lib/types/vertexai/models/llama.d.ts +0 -20
  216. package/lib/types/vertexai/models/llama.d.ts.map +0 -1
  217. package/lib/types/vertexai/models.d.ts +0 -15
  218. package/lib/types/vertexai/models.d.ts.map +0 -1
  219. package/lib/types/watsonx/index.d.ts +0 -27
  220. package/lib/types/watsonx/index.d.ts.map +0 -1
  221. package/lib/types/watsonx/interfaces.d.ts +0 -65
  222. package/lib/types/watsonx/interfaces.d.ts.map +0 -1
  223. package/lib/types/xai/index.d.ts +0 -18
  224. package/lib/types/xai/index.d.ts.map +0 -1
@@ -1,485 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClaudeModelDefinition = exports.NON_GLOBAL_ANTHROPIC_MODELS = exports.ANTHROPIC_REGIONS = void 0;
4
- exports.collectTools = collectTools;
5
- exports.mergeConsecutiveUserMessages = mergeConsecutiveUserMessages;
6
- const core_1 = require("@llumiverse/core");
7
- const async_1 = require("@llumiverse/core/async");
8
- exports.ANTHROPIC_REGIONS = {
9
- us: "us-east5",
10
- europe: "europe-west1",
11
- global: "global",
12
- };
13
- exports.NON_GLOBAL_ANTHROPIC_MODELS = [
14
- "claude-3-5",
15
- "claude-3",
16
- ];
17
- function claudeFinishReason(reason) {
18
- if (!reason)
19
- return undefined;
20
- switch (reason) {
21
- case 'end_turn': return "stop";
22
- case 'max_tokens': return "length";
23
- default: return reason; //stop_sequence
24
- }
25
- }
26
- function collectTools(content) {
27
- const out = [];
28
- for (const block of content) {
29
- if (block.type === "tool_use") {
30
- out.push({
31
- id: block.id,
32
- tool_name: block.name,
33
- tool_input: block.input,
34
- });
35
- }
36
- }
37
- return out.length > 0 ? out : undefined;
38
- }
39
- function collectAllTextContent(content, includeThoughts = false) {
40
- const textParts = [];
41
- // First pass: collect thinking blocks
42
- if (includeThoughts) {
43
- for (const block of content) {
44
- if (block.type === 'thinking' && block.thinking) {
45
- textParts.push(block.thinking);
46
- }
47
- else if (block.type === 'redacted_thinking' && block.data) {
48
- textParts.push(`[Redacted thinking: ${block.data}]`);
49
- }
50
- }
51
- if (textParts.length > 0) {
52
- textParts.push(''); // Create a new line after thinking blocks
53
- }
54
- }
55
- // Second pass: collect text blocks
56
- for (const block of content) {
57
- if (block.type === 'text' && block.text) {
58
- textParts.push(block.text);
59
- }
60
- }
61
- return textParts.join('\n');
62
- }
63
- //Used to get a max_token value when not specified in the model options. Claude requires it to be set.
64
- function maxToken(option) {
65
- const modelOptions = option.model_options;
66
- if (modelOptions && typeof modelOptions.max_tokens === "number") {
67
- return modelOptions.max_tokens;
68
- }
69
- else {
70
- const thinking_budget = modelOptions?.thinking_budget_tokens ?? 0;
71
- let maxSupportedTokens = (0, core_1.getMaxTokensLimitVertexAi)(option.model);
72
- // Fallback to the default max tokens limit for the model
73
- if (option.model.includes('claude-3-7-sonnet') && (modelOptions?.thinking_budget_tokens ?? 0) < 48000) {
74
- maxSupportedTokens = 64000; // Claude 3.7 can go up to 128k with a beta header, but when no max tokens is specified, we default to 64k.
75
- }
76
- return Math.min(16000 + thinking_budget, maxSupportedTokens); // Cap to 16k, to avoid taking up too much context window and quota.
77
- }
78
- }
79
- async function collectFileBlocks(segment, restrictedTypes = false) {
80
- const contentBlocks = [];
81
- for (const file of segment.files || []) {
82
- if (file.mime_type?.startsWith("image/")) {
83
- const allowedTypes = ["image/png", "image/jpeg", "image/gif", "image/webp"];
84
- if (!allowedTypes.includes(file.mime_type)) {
85
- throw new Error(`Unsupported image type: ${file.mime_type}`);
86
- }
87
- const mimeType = String(file.mime_type);
88
- contentBlocks.push({
89
- type: 'image',
90
- source: {
91
- type: 'base64',
92
- data: await (0, core_1.readStreamAsBase64)(await file.getStream()),
93
- media_type: mimeType
94
- }
95
- });
96
- }
97
- else if (!restrictedTypes) {
98
- if (file.mime_type === "application/pdf") {
99
- contentBlocks.push({
100
- title: file.name,
101
- type: 'document',
102
- source: {
103
- type: 'base64',
104
- data: await (0, core_1.readStreamAsBase64)(await file.getStream()),
105
- media_type: 'application/pdf'
106
- }
107
- });
108
- }
109
- else if (file.mime_type?.startsWith("text/")) {
110
- contentBlocks.push({
111
- title: file.name,
112
- type: 'document',
113
- source: {
114
- type: 'text',
115
- data: await (0, core_1.readStreamAsString)(await file.getStream()),
116
- media_type: 'text/plain'
117
- }
118
- });
119
- }
120
- }
121
- }
122
- return contentBlocks;
123
- }
124
- class ClaudeModelDefinition {
125
- model;
126
- constructor(modelId) {
127
- this.model = {
128
- id: modelId,
129
- name: modelId,
130
- provider: 'vertexai',
131
- type: core_1.ModelType.Text,
132
- can_stream: true,
133
- };
134
- }
135
- async createPrompt(_driver, segments, options) {
136
- // Convert the prompt to the format expected by the Claude API
137
- let system = segments
138
- .filter(segment => segment.role === core_1.PromptRole.system)
139
- .map(segment => ({
140
- text: segment.content,
141
- type: 'text'
142
- }));
143
- if (options.result_schema) {
144
- let schemaText = '';
145
- if (options.tools && options.tools.length > 0) {
146
- schemaText = "When not calling tools, the answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema);
147
- }
148
- else {
149
- schemaText = "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema);
150
- }
151
- const schemaSegments = {
152
- text: schemaText,
153
- type: 'text'
154
- };
155
- system.push(schemaSegments);
156
- }
157
- let messages = [];
158
- const safetyMessages = [];
159
- for (const segment of segments) {
160
- if (segment.role === core_1.PromptRole.system) {
161
- continue;
162
- }
163
- if (segment.role === core_1.PromptRole.tool) {
164
- if (!segment.tool_use_id) {
165
- throw new Error("Tool prompt segment must have a tool use ID");
166
- }
167
- // Build content blocks for tool results (restricted types)
168
- const contentBlocks = [];
169
- if (segment.content) {
170
- contentBlocks.push({
171
- type: 'text',
172
- text: segment.content
173
- });
174
- }
175
- // Collect file blocks with type safety
176
- const fileBlocks = await collectFileBlocks(segment, true);
177
- contentBlocks.push(...fileBlocks);
178
- messages.push({
179
- role: 'user',
180
- content: [{
181
- type: 'tool_result',
182
- tool_use_id: segment.tool_use_id,
183
- content: contentBlocks,
184
- }]
185
- });
186
- }
187
- else {
188
- // Build content blocks for regular messages (all types allowed)
189
- const contentBlocks = [];
190
- if (segment.content) {
191
- contentBlocks.push({
192
- type: 'text',
193
- text: segment.content
194
- });
195
- }
196
- // Collect file blocks without restrictions
197
- const fileBlocks = await collectFileBlocks(segment, false);
198
- contentBlocks.push(...fileBlocks);
199
- if (contentBlocks.length === 0) {
200
- continue; // skip empty segments
201
- }
202
- const messageParam = {
203
- role: segment.role === core_1.PromptRole.assistant ? 'assistant' : 'user',
204
- content: contentBlocks
205
- };
206
- if (segment.role === core_1.PromptRole.safety) {
207
- safetyMessages.push(messageParam);
208
- }
209
- else {
210
- messages.push(messageParam);
211
- }
212
- }
213
- }
214
- messages = messages.concat(safetyMessages);
215
- if (system && system.length === 0) {
216
- system = undefined; // If system is empty, set to undefined
217
- }
218
- return {
219
- messages: messages,
220
- system: system
221
- };
222
- }
223
- async requestTextCompletion(driver, prompt, options) {
224
- const splits = options.model.split("/");
225
- let region = undefined;
226
- if (splits[0] === "locations" && splits.length >= 2) {
227
- region = splits[1];
228
- }
229
- const modelName = splits[splits.length - 1];
230
- options = { ...options, model: modelName };
231
- const client = await driver.getAnthropicClient(region);
232
- options.model_options = options.model_options;
233
- if (options.model_options?._option_id !== "vertexai-claude") {
234
- driver.logger.warn({ options: options.model_options }, "Invalid model options");
235
- }
236
- let conversation = updateConversation(options.conversation, prompt);
237
- const { payload, requestOptions } = getClaudePayload(options, conversation);
238
- // disable streaming, the create function is overloaded so payload type matters.
239
- const nonStreamingPayload = { ...payload, stream: false };
240
- const result = await client.messages.create(nonStreamingPayload, requestOptions);
241
- // Use the new function to collect text content, including thinking if enabled
242
- const includeThoughts = options.model_options?.include_thoughts ?? false;
243
- const text = collectAllTextContent(result.content, includeThoughts);
244
- const tool_use = collectTools(result.content);
245
- conversation = updateConversation(conversation, createPromptFromResponse(result));
246
- return {
247
- result: text ? [{ type: "text", value: text }] : [{ type: "text", value: '' }],
248
- tool_use,
249
- token_usage: {
250
- prompt: result.usage.input_tokens,
251
- result: result.usage.output_tokens,
252
- total: result.usage.input_tokens + result.usage.output_tokens
253
- },
254
- // make sure we set finish_reason to the correct value (claude is normally setting this by itself)
255
- finish_reason: tool_use ? "tool_use" : claudeFinishReason(result?.stop_reason ?? ''),
256
- conversation
257
- };
258
- }
259
- async requestTextCompletionStream(driver, prompt, options) {
260
- const splits = options.model.split("/");
261
- let region = undefined;
262
- if (splits[0] === "locations" && splits.length >= 2) {
263
- region = splits[1];
264
- }
265
- const modelName = splits[splits.length - 1];
266
- options = { ...options, model: modelName };
267
- const client = await driver.getAnthropicClient(region);
268
- const model_options = options.model_options;
269
- if (model_options?._option_id !== "vertexai-claude") {
270
- driver.logger.warn({ options: options.model_options }, "Invalid model options");
271
- }
272
- // Include conversation history (same as non-streaming)
273
- const conversation = updateConversation(options.conversation, prompt);
274
- const { payload, requestOptions } = getClaudePayload(options, conversation);
275
- const streamingPayload = { ...payload, stream: true };
276
- const response_stream = await client.messages.stream(streamingPayload, requestOptions);
277
- // Track current tool use being built from streaming
278
- let currentToolUse = null;
279
- const stream = (0, async_1.asyncMap)(response_stream, async (streamEvent) => {
280
- switch (streamEvent.type) {
281
- case "message_start":
282
- return {
283
- result: [{ type: "text", value: '' }],
284
- token_usage: {
285
- prompt: streamEvent.message.usage.input_tokens,
286
- result: streamEvent.message.usage.output_tokens
287
- }
288
- };
289
- case "message_delta":
290
- return {
291
- result: [{ type: "text", value: '' }],
292
- token_usage: {
293
- result: streamEvent.usage.output_tokens
294
- },
295
- finish_reason: claudeFinishReason(streamEvent.delta.stop_reason ?? undefined),
296
- };
297
- case "content_block_start":
298
- // Handle tool_use blocks
299
- if (streamEvent.content_block.type === "tool_use") {
300
- currentToolUse = {
301
- id: streamEvent.content_block.id,
302
- name: streamEvent.content_block.name,
303
- inputJson: ''
304
- };
305
- return {
306
- result: [],
307
- tool_use: [{
308
- id: streamEvent.content_block.id,
309
- tool_name: streamEvent.content_block.name,
310
- tool_input: '' // Will be accumulated via input_json_delta
311
- }]
312
- };
313
- }
314
- // Handle redacted thinking blocks
315
- if (streamEvent.content_block.type === "redacted_thinking" && model_options?.include_thoughts) {
316
- return {
317
- result: [{ type: "text", value: `[Redacted thinking: ${streamEvent.content_block.data}]` }]
318
- };
319
- }
320
- break;
321
- case "content_block_delta":
322
- // Handle different delta types
323
- switch (streamEvent.delta.type) {
324
- case "text_delta":
325
- return {
326
- result: streamEvent.delta.text ? [{ type: "text", value: streamEvent.delta.text }] : []
327
- };
328
- case "input_json_delta":
329
- // Accumulate tool input JSON
330
- if (currentToolUse && streamEvent.delta.partial_json) {
331
- return {
332
- result: [],
333
- tool_use: [{
334
- id: currentToolUse.id,
335
- tool_name: '', // Name already sent in content_block_start
336
- tool_input: streamEvent.delta.partial_json
337
- }]
338
- };
339
- }
340
- break;
341
- case "thinking_delta":
342
- if (model_options?.include_thoughts) {
343
- return {
344
- result: streamEvent.delta.thinking ? [{ type: "text", value: streamEvent.delta.thinking }] : [],
345
- };
346
- }
347
- break;
348
- case "signature_delta":
349
- // Signature deltas, signify the end of the thoughts.
350
- if (model_options?.include_thoughts) {
351
- return {
352
- result: [{ type: "text", value: '\n\n' }], // Double newline for more spacing
353
- };
354
- }
355
- break;
356
- }
357
- break;
358
- case "content_block_stop":
359
- // Reset current tool use tracking when block ends
360
- if (currentToolUse) {
361
- currentToolUse = null;
362
- }
363
- // Handle the end of content blocks, for redacted thinking blocks
364
- if (model_options?.include_thoughts) {
365
- return {
366
- result: [{ type: "text", value: '\n\n' }] // Add double newline for spacing
367
- };
368
- }
369
- break;
370
- }
371
- // Default case for all other event types
372
- return {
373
- result: []
374
- };
375
- });
376
- return stream;
377
- }
378
- }
379
- exports.ClaudeModelDefinition = ClaudeModelDefinition;
380
- function createPromptFromResponse(response) {
381
- return {
382
- messages: [{
383
- role: response.role,
384
- content: response.content,
385
- }],
386
- system: undefined
387
- };
388
- }
389
- /**
390
- * Merge consecutive user messages in the conversation.
391
- * This is required because Anthropic's API expects all tool_result blocks
392
- * from a single assistant turn to be in one user message.
393
- * When multiple tool results are added as separate user messages,
394
- * we need to merge them before sending to the API.
395
- */
396
- function mergeConsecutiveUserMessages(messages) {
397
- if (messages.length === 0)
398
- return [];
399
- // Check if any merging is needed
400
- const needsMerging = messages.some((msg, i) => i < messages.length - 1 &&
401
- msg.role === 'user' &&
402
- messages[i + 1].role === 'user');
403
- if (!needsMerging) {
404
- return messages;
405
- }
406
- const result = [];
407
- let i = 0;
408
- while (i < messages.length) {
409
- const current = messages[i];
410
- if (current.role === 'user') {
411
- // Collect all consecutive user messages
412
- const mergedContent = [];
413
- while (i < messages.length && messages[i].role === 'user') {
414
- const userMsg = messages[i];
415
- if (Array.isArray(userMsg.content)) {
416
- mergedContent.push(...userMsg.content);
417
- }
418
- else if (typeof userMsg.content === 'string') {
419
- mergedContent.push({ type: 'text', text: userMsg.content });
420
- }
421
- i++;
422
- }
423
- result.push({
424
- role: 'user',
425
- content: mergedContent
426
- });
427
- }
428
- else {
429
- result.push(current);
430
- i++;
431
- }
432
- }
433
- return result;
434
- }
435
- /**
436
- * Update the conversation messages
437
- * @param prompt
438
- * @param response
439
- * @returns
440
- */
441
- function updateConversation(conversation, prompt) {
442
- const baseSystemMessages = conversation?.system || [];
443
- const baseMessages = conversation?.messages || [];
444
- const system = baseSystemMessages.concat(prompt.system || []);
445
- // Merge consecutive user messages to ensure tool_result blocks are properly grouped
446
- const mergedMessages = mergeConsecutiveUserMessages(baseMessages.concat(prompt.messages || []));
447
- return {
448
- messages: mergedMessages,
449
- system: system.length > 0 ? system : undefined // If system is empty, set to undefined
450
- };
451
- }
452
- function getClaudePayload(options, prompt) {
453
- const modelName = options.model; // Model name is already extracted in the calling methods
454
- const model_options = options.model_options;
455
- // Add beta header for Claude 3.7 models to enable 128k output tokens
456
- let requestOptions = undefined;
457
- if (modelName.includes('claude-3-7-sonnet') &&
458
- ((model_options?.max_tokens ?? 0) > 64000 || (model_options?.thinking_budget_tokens ?? 0) > 64000)) {
459
- requestOptions = {
460
- headers: {
461
- 'anthropic-beta': 'output-128k-2025-02-19'
462
- }
463
- };
464
- }
465
- const payload = {
466
- messages: prompt.messages,
467
- system: prompt.system,
468
- tools: options.tools, // we are using the same shape as claude for tools
469
- temperature: model_options?.temperature,
470
- model: modelName,
471
- max_tokens: maxToken(options),
472
- top_p: model_options?.top_p,
473
- top_k: model_options?.top_k,
474
- stop_sequences: model_options?.stop_sequence,
475
- thinking: model_options?.thinking_mode ?
476
- {
477
- budget_tokens: model_options?.thinking_budget_tokens ?? 1024,
478
- type: "enabled"
479
- } : {
480
- type: "disabled"
481
- }
482
- };
483
- return { payload, requestOptions };
484
- }
485
- //# sourceMappingURL=claude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/vertexai/models/claude.ts"],"names":[],"mappings":"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"}