@ai-sdk/google-vertex 2.2.22 → 3.0.0-alpha.1

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 (36) hide show
  1. package/CHANGELOG.md +248 -62
  2. package/README.md +1 -1
  3. package/anthropic/edge.d.ts +1 -0
  4. package/anthropic/index.d.ts +1 -0
  5. package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.mts +5 -7
  6. package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.ts +5 -7
  7. package/{anthropic/edge/dist → dist/anthropic/edge}/index.js +19 -21
  8. package/dist/anthropic/edge/index.js.map +1 -0
  9. package/{anthropic/edge/dist → dist/anthropic/edge}/index.mjs +19 -21
  10. package/dist/anthropic/edge/index.mjs.map +1 -0
  11. package/{anthropic/dist → dist/anthropic}/index.d.mts +5 -7
  12. package/{anthropic/dist → dist/anthropic}/index.d.ts +5 -7
  13. package/{anthropic/dist → dist/anthropic}/index.js +19 -21
  14. package/dist/anthropic/index.js.map +1 -0
  15. package/{anthropic/dist → dist/anthropic}/index.mjs +19 -21
  16. package/dist/anthropic/index.mjs.map +1 -0
  17. package/{edge/dist → dist/edge}/index.d.mts +8 -17
  18. package/{edge/dist → dist/edge}/index.d.ts +8 -17
  19. package/{edge/dist → dist/edge}/index.js +66 -57
  20. package/dist/edge/index.js.map +1 -0
  21. package/{edge/dist → dist/edge}/index.mjs +69 -59
  22. package/dist/edge/index.mjs.map +1 -0
  23. package/dist/index.d.mts +6 -15
  24. package/dist/index.d.ts +6 -15
  25. package/dist/index.js +66 -57
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +69 -59
  28. package/dist/index.mjs.map +1 -1
  29. package/edge.d.ts +1 -0
  30. package/package.json +29 -28
  31. package/anthropic/dist/index.js.map +0 -1
  32. package/anthropic/dist/index.mjs.map +0 -1
  33. package/anthropic/edge/dist/index.js.map +0 -1
  34. package/anthropic/edge/dist/index.mjs.map +0 -1
  35. package/edge/dist/index.js.map +0 -1
  36. package/edge/dist/index.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,126 +1,312 @@
1
1
  # @ai-sdk/google-vertex
2
2
 
3
- ## 2.2.22
3
+ ## 3.0.0-alpha.1
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - fe24216: Add reasoning token output support for gemini models via Vertex AI Provider
8
- - Updated dependencies [4b2e1b0]
9
- - @ai-sdk/google@1.2.18
7
+ - Updated dependencies [3f2f00c]
8
+ - @ai-sdk/provider@2.0.0-alpha.1
9
+ - @ai-sdk/anthropic@2.0.0-alpha.1
10
+ - @ai-sdk/google@2.0.0-alpha.1
11
+ - @ai-sdk/provider-utils@3.0.0-alpha.1
10
12
 
11
- ## 2.2.21
13
+ ## 3.0.0-canary.20
12
14
 
13
15
  ### Patch Changes
14
16
 
15
- - Updated dependencies [d87b9d1]
16
- - @ai-sdk/provider-utils@2.2.8
17
- - @ai-sdk/anthropic@1.2.11
18
- - @ai-sdk/google@1.2.17
17
+ - Updated dependencies [faf8446]
18
+ - @ai-sdk/provider-utils@3.0.0-canary.19
19
+ - @ai-sdk/anthropic@2.0.0-canary.19
20
+ - @ai-sdk/google@2.0.0-canary.20
19
21
 
20
- ## 2.2.20
22
+ ## 3.0.0-canary.19
21
23
 
22
24
  ### Patch Changes
23
25
 
24
- - Updated dependencies [0ca6f2f]
25
- - @ai-sdk/google@1.2.16
26
+ - Updated dependencies [40acf9b]
27
+ - @ai-sdk/provider-utils@3.0.0-canary.18
28
+ - @ai-sdk/anthropic@2.0.0-canary.18
29
+ - @ai-sdk/google@2.0.0-canary.19
26
30
 
27
- ## 2.2.19
31
+ ## 3.0.0-canary.18
32
+
33
+ ### Major Changes
34
+
35
+ - 516be5b: ### Move Image Model Settings into generate options
36
+
37
+ Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`.
38
+
39
+ Before
40
+
41
+ ```js
42
+ await generateImage({
43
+ model: luma.image('photon-flash-1', {
44
+ maxImagesPerCall: 5,
45
+ pollIntervalMillis: 500,
46
+ }),
47
+ prompt,
48
+ n: 10,
49
+ });
50
+ ```
51
+
52
+ After
53
+
54
+ ```js
55
+ await generateImage({
56
+ model: luma.image('photon-flash-1'),
57
+ prompt,
58
+ n: 10,
59
+ maxImagesPerCall: 5,
60
+ providerOptions: {
61
+ luma: { pollIntervalMillis: 5 },
62
+ },
63
+ });
64
+ ```
65
+
66
+ Pull Request: https://github.com/vercel/ai/pull/6180
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [f07a6d4]
71
+ - Updated dependencies [ea7a7c9]
72
+ - @ai-sdk/google@2.0.0-canary.18
73
+ - @ai-sdk/provider-utils@3.0.0-canary.17
74
+ - @ai-sdk/anthropic@2.0.0-canary.17
75
+
76
+ ## 3.0.0-canary.17
77
+
78
+ ### Patch Changes
79
+
80
+ - Updated dependencies [87b828f]
81
+ - @ai-sdk/provider-utils@3.0.0-canary.16
82
+ - @ai-sdk/anthropic@2.0.0-canary.16
83
+ - @ai-sdk/google@2.0.0-canary.17
84
+
85
+ ## 3.0.0-canary.16
86
+
87
+ ### Patch Changes
88
+
89
+ - Updated dependencies [a571d6e]
90
+ - Updated dependencies [a8c8bd5]
91
+ - Updated dependencies [7979f7f]
92
+ - Updated dependencies [41fa418]
93
+ - @ai-sdk/provider-utils@3.0.0-canary.15
94
+ - @ai-sdk/provider@2.0.0-canary.14
95
+ - @ai-sdk/anthropic@2.0.0-canary.15
96
+ - @ai-sdk/google@2.0.0-canary.16
97
+
98
+ ## 3.0.0-canary.15
99
+
100
+ ### Patch Changes
101
+
102
+ - Updated dependencies [957b739]
103
+ - Updated dependencies [9bd5ab5]
104
+ - @ai-sdk/provider-utils@3.0.0-canary.14
105
+ - @ai-sdk/provider@2.0.0-canary.13
106
+ - @ai-sdk/anthropic@2.0.0-canary.14
107
+ - @ai-sdk/google@2.0.0-canary.15
108
+
109
+ ## 3.0.0-canary.14
110
+
111
+ ### Patch Changes
112
+
113
+ - 8e171f5: feat (provider/google-vertex): add imagen-3.0-generate-002
114
+ - d9209ca: fix (image-model): `specificationVersion: v1` -> `v2`
115
+ - Updated dependencies [f916255]
116
+ - Updated dependencies [7b3ae3f]
117
+ - Updated dependencies [0ff02bb]
118
+ - @ai-sdk/google@2.0.0-canary.14
119
+ - @ai-sdk/provider@2.0.0-canary.12
120
+ - @ai-sdk/provider-utils@3.0.0-canary.13
121
+ - @ai-sdk/anthropic@2.0.0-canary.13
122
+
123
+ ## 3.0.0-canary.13
124
+
125
+ ### Patch Changes
126
+
127
+ - 5c9eec4: chore(providers/anthropic): switch to providerOptions
128
+ - 7378473: chore(providers/google): switch to providerOptions
129
+ - Updated dependencies [5c9eec4]
130
+ - Updated dependencies [9bf7291]
131
+ - Updated dependencies [7378473]
132
+ - Updated dependencies [4617fab]
133
+ - Updated dependencies [e030615]
134
+ - @ai-sdk/anthropic@2.0.0-canary.12
135
+ - @ai-sdk/provider@2.0.0-canary.11
136
+ - @ai-sdk/google@2.0.0-canary.13
137
+ - @ai-sdk/provider-utils@3.0.0-canary.12
138
+
139
+ ## 3.0.0-canary.12
140
+
141
+ ### Patch Changes
142
+
143
+ - 66962ed: fix(packages): export node10 compatible types
144
+ - 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
145
+ - Updated dependencies [888b750]
146
+ - Updated dependencies [66962ed]
147
+ - Updated dependencies [9301f86]
148
+ - Updated dependencies [a3f768e]
149
+ - @ai-sdk/google@2.0.0-canary.12
150
+ - @ai-sdk/provider-utils@3.0.0-canary.11
151
+ - @ai-sdk/anthropic@2.0.0-canary.11
152
+ - @ai-sdk/provider@2.0.0-canary.10
153
+
154
+ ## 3.0.0-canary.11
28
155
 
29
156
  ### Patch Changes
30
157
 
31
- - Updated dependencies [2afd354]
32
- - @ai-sdk/google@1.2.15
158
+ - Updated dependencies [e86be6f]
159
+ - @ai-sdk/provider@2.0.0-canary.9
160
+ - @ai-sdk/anthropic@2.0.0-canary.10
161
+ - @ai-sdk/google@2.0.0-canary.11
162
+ - @ai-sdk/provider-utils@3.0.0-canary.10
33
163
 
34
- ## 2.2.18
164
+ ## 3.0.0-canary.10
35
165
 
36
166
  ### Patch Changes
37
167
 
38
- - a85ae99: feat (provider/google-vertex): add imagen-3.0-generate-002
39
- - Updated dependencies [c695a7e]
40
- - @ai-sdk/google@1.2.14
168
+ - cea5997: chore(providers/google-vertex): update embedding model to use providerOptions
169
+ - Updated dependencies [95857aa]
170
+ - Updated dependencies [3259565]
171
+ - Updated dependencies [fd98925]
172
+ - Updated dependencies [7ea4132]
173
+ - @ai-sdk/provider@2.0.0-canary.8
174
+ - @ai-sdk/google@2.0.0-canary.10
175
+ - @ai-sdk/anthropic@2.0.0-canary.9
176
+ - @ai-sdk/provider-utils@3.0.0-canary.9
41
177
 
42
- ## 2.2.17
178
+ ## 3.0.0-canary.9
43
179
 
44
180
  ### Patch Changes
45
181
 
46
- - Updated dependencies [6183b08]
47
- - @ai-sdk/google@1.2.13
182
+ - Updated dependencies [5d142ab]
183
+ - Updated dependencies [b6b43c7]
184
+ - Updated dependencies [8aa9e20]
185
+ - Updated dependencies [3795467]
186
+ - @ai-sdk/provider-utils@3.0.0-canary.8
187
+ - @ai-sdk/provider@2.0.0-canary.7
188
+ - @ai-sdk/anthropic@2.0.0-canary.8
189
+ - @ai-sdk/google@2.0.0-canary.9
48
190
 
49
- ## 2.2.16
191
+ ## 3.0.0-canary.8
50
192
 
51
193
  ### Patch Changes
52
194
 
53
- - Updated dependencies [c56331d]
54
- - @ai-sdk/google@1.2.12
195
+ - 26735b5: chore(embedding-model): add v2 interface
196
+ - 443d8ec: feat(embedding-model-v2): add response body field
197
+ - fd65bc6: chore(embedding-model-v2): rename rawResponse to response
198
+ - Updated dependencies [26735b5]
199
+ - Updated dependencies [443d8ec]
200
+ - Updated dependencies [14c9410]
201
+ - Updated dependencies [d9c98f4]
202
+ - Updated dependencies [c4a2fec]
203
+ - Updated dependencies [0054544]
204
+ - Updated dependencies [9e9c809]
205
+ - Updated dependencies [32831c6]
206
+ - Updated dependencies [d0f9495]
207
+ - Updated dependencies [fd65bc6]
208
+ - Updated dependencies [393138b]
209
+ - Updated dependencies [7182d14]
210
+ - @ai-sdk/provider@2.0.0-canary.6
211
+ - @ai-sdk/google@2.0.0-canary.8
212
+ - @ai-sdk/anthropic@2.0.0-canary.7
213
+ - @ai-sdk/provider-utils@3.0.0-canary.7
55
214
 
56
- ## 2.2.15
215
+ ## 3.0.0-canary.7
57
216
 
58
217
  ### Patch Changes
59
218
 
60
- - Updated dependencies [beef951]
61
- - @ai-sdk/provider@1.1.3
62
- - @ai-sdk/anthropic@1.2.10
63
- - @ai-sdk/google@1.2.11
64
- - @ai-sdk/provider-utils@2.2.7
219
+ - Updated dependencies [411e483]
220
+ - Updated dependencies [79457bd]
221
+ - Updated dependencies [ad80501]
222
+ - Updated dependencies [1766ede]
223
+ - Updated dependencies [f10304b]
224
+ - @ai-sdk/provider@2.0.0-canary.5
225
+ - @ai-sdk/anthropic@2.0.0-canary.6
226
+ - @ai-sdk/google@2.0.0-canary.7
227
+ - @ai-sdk/provider-utils@3.0.0-canary.6
65
228
 
66
- ## 2.2.14
229
+ ## 3.0.0-canary.6
67
230
 
68
231
  ### Patch Changes
69
232
 
70
- - Updated dependencies [aeba38e]
71
- - @ai-sdk/anthropic@1.2.9
233
+ - Updated dependencies [6f6bb89]
234
+ - @ai-sdk/provider@2.0.0-canary.4
235
+ - @ai-sdk/anthropic@2.0.0-canary.5
236
+ - @ai-sdk/google@2.0.0-canary.6
237
+ - @ai-sdk/provider-utils@3.0.0-canary.5
72
238
 
73
- ## 2.2.13
239
+ ## 3.0.0-canary.5
74
240
 
75
241
  ### Patch Changes
76
242
 
77
- - Updated dependencies [013faa8]
78
- - @ai-sdk/provider@1.1.2
79
- - @ai-sdk/anthropic@1.2.8
80
- - @ai-sdk/google@1.2.10
81
- - @ai-sdk/provider-utils@2.2.6
243
+ - Updated dependencies [d1a1aa1]
244
+ - @ai-sdk/provider@2.0.0-canary.3
245
+ - @ai-sdk/anthropic@2.0.0-canary.4
246
+ - @ai-sdk/google@2.0.0-canary.5
247
+ - @ai-sdk/provider-utils@3.0.0-canary.4
82
248
 
83
- ## 2.2.12
249
+ ## 3.0.0-canary.4
84
250
 
85
251
  ### Patch Changes
86
252
 
87
- - Updated dependencies [c21fa6d]
88
- - @ai-sdk/provider-utils@2.2.5
89
- - @ai-sdk/provider@1.1.1
90
- - @ai-sdk/anthropic@1.2.7
91
- - @ai-sdk/google@1.2.9
253
+ - Updated dependencies [a166433]
254
+ - Updated dependencies [abf9a79]
255
+ - Updated dependencies [9f95b35]
256
+ - Updated dependencies [0a87932]
257
+ - Updated dependencies [6dc848c]
258
+ - Updated dependencies [61ab528]
259
+ - @ai-sdk/provider-utils@3.0.0-canary.3
260
+ - @ai-sdk/provider@2.0.0-canary.2
261
+ - @ai-sdk/anthropic@2.0.0-canary.3
262
+ - @ai-sdk/google@2.0.0-canary.4
92
263
 
93
- ## 2.2.11
264
+ ## 3.0.0-canary.3
94
265
 
95
266
  ### Patch Changes
96
267
 
97
- - Updated dependencies [1e8e66d]
98
- - @ai-sdk/google@1.2.8
268
+ - Updated dependencies [c57e248]
269
+ - Updated dependencies [33f4a6a]
270
+ - @ai-sdk/provider@2.0.0-canary.1
271
+ - @ai-sdk/anthropic@2.0.0-canary.2
272
+ - @ai-sdk/google@2.0.0-canary.3
273
+ - @ai-sdk/provider-utils@3.0.0-canary.2
99
274
 
100
- ## 2.2.10
275
+ ## 3.0.0-canary.2
101
276
 
102
277
  ### Patch Changes
103
278
 
104
- - 1789884: feat: add provider option schemas for vertex imagegen and google genai
105
- - Updated dependencies [1789884]
106
- - @ai-sdk/google@1.2.7
279
+ - Updated dependencies [5cf30ea]
280
+ - @ai-sdk/google@2.0.0-canary.2
107
281
 
108
- ## 2.2.9
282
+ ## 3.0.0-canary.1
109
283
 
110
284
  ### Patch Changes
111
285
 
112
- - Updated dependencies [2c19b9a]
113
- - @ai-sdk/provider-utils@2.2.4
114
- - @ai-sdk/anthropic@1.2.6
115
- - @ai-sdk/google@1.2.6
286
+ - 779d916: feat: add provider option schemas for vertex imagegen and google genai
287
+ - Updated dependencies [060370c]
288
+ - Updated dependencies [0c0c0b3]
289
+ - Updated dependencies [779d916]
290
+ - Updated dependencies [63d791d]
291
+ - @ai-sdk/provider-utils@3.0.0-canary.1
292
+ - @ai-sdk/google@2.0.0-canary.1
293
+ - @ai-sdk/anthropic@2.0.0-canary.1
294
+
295
+ ## 3.0.0-canary.0
296
+
297
+ ### Major Changes
116
298
 
117
- ## 2.2.8
299
+ - d5f588f: AI SDK 5
118
300
 
119
301
  ### Patch Changes
120
302
 
121
- - 292f543: fix (provider/google-vertex): fix anthropic support for image urls in messages
122
- - Updated dependencies [292f543]
123
- - @ai-sdk/anthropic@1.2.5
303
+ - 91715e5: fix (provider/google-vertex): fix anthropic support for image urls in messages
304
+ - Updated dependencies [d5f588f]
305
+ - Updated dependencies [91715e5]
306
+ - @ai-sdk/provider-utils@3.0.0-canary.0
307
+ - @ai-sdk/anthropic@2.0.0-canary.0
308
+ - @ai-sdk/google@2.0.0-canary.0
309
+ - @ai-sdk/provider@2.0.0-canary.0
124
310
 
125
311
  ## 2.2.7
126
312
 
package/README.md CHANGED
@@ -125,7 +125,7 @@ async function main() {
125
125
  });
126
126
 
127
127
  console.log(result.text);
128
- console.log(result.experimental_providerMetadata?.anthropic);
128
+ console.log(result.providerMetadata?.anthropic);
129
129
  // e.g. { cacheCreationInputTokens: 2118, cacheReadInputTokens: 0 }
130
130
  }
131
131
 
@@ -0,0 +1 @@
1
+ export * from '../dist/anthropic/edge';
@@ -0,0 +1 @@
1
+ export * from '../dist/anthropic';
@@ -1,6 +1,6 @@
1
- import { ProviderV1, LanguageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
2
2
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
3
- import { AnthropicMessagesSettings, anthropicTools } from '@ai-sdk/anthropic/internal';
3
+ import { anthropicTools } from '@ai-sdk/anthropic/internal';
4
4
 
5
5
  interface GoogleCredentials {
6
6
  /**
@@ -21,18 +21,16 @@ interface GoogleCredentials {
21
21
  }
22
22
 
23
23
  type GoogleVertexAnthropicMessagesModelId = 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-5-haiku@20241022' | 'claude-3-5-sonnet@20240620' | 'claude-3-haiku@20240307' | 'claude-3-sonnet@20240229' | 'claude-3-opus@20240229' | (string & {});
24
- interface GoogleVertexAnthropicMessagesSettings extends AnthropicMessagesSettings {
25
- }
26
24
 
27
- interface GoogleVertexAnthropicProvider extends ProviderV1 {
25
+ interface GoogleVertexAnthropicProvider extends ProviderV2 {
28
26
  /**
29
27
  Creates a model for text generation.
30
28
  */
31
- (modelId: GoogleVertexAnthropicMessagesModelId, settings?: GoogleVertexAnthropicMessagesSettings): LanguageModelV1;
29
+ (modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
32
30
  /**
33
31
  Creates a model for text generation.
34
32
  */
35
- languageModel(modelId: GoogleVertexAnthropicMessagesModelId, settings?: GoogleVertexAnthropicMessagesSettings): LanguageModelV1;
33
+ languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
36
34
  /**
37
35
  Anthropic-specific computer use tool.
38
36
  */
@@ -1,6 +1,6 @@
1
- import { ProviderV1, LanguageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
2
2
  import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
3
- import { AnthropicMessagesSettings, anthropicTools } from '@ai-sdk/anthropic/internal';
3
+ import { anthropicTools } from '@ai-sdk/anthropic/internal';
4
4
 
5
5
  interface GoogleCredentials {
6
6
  /**
@@ -21,18 +21,16 @@ interface GoogleCredentials {
21
21
  }
22
22
 
23
23
  type GoogleVertexAnthropicMessagesModelId = 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-5-haiku@20241022' | 'claude-3-5-sonnet@20240620' | 'claude-3-haiku@20240307' | 'claude-3-sonnet@20240229' | 'claude-3-opus@20240229' | (string & {});
24
- interface GoogleVertexAnthropicMessagesSettings extends AnthropicMessagesSettings {
25
- }
26
24
 
27
- interface GoogleVertexAnthropicProvider extends ProviderV1 {
25
+ interface GoogleVertexAnthropicProvider extends ProviderV2 {
28
26
  /**
29
27
  Creates a model for text generation.
30
28
  */
31
- (modelId: GoogleVertexAnthropicMessagesModelId, settings?: GoogleVertexAnthropicMessagesSettings): LanguageModelV1;
29
+ (modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
32
30
  /**
33
31
  Creates a model for text generation.
34
32
  */
35
- languageModel(modelId: GoogleVertexAnthropicMessagesModelId, settings?: GoogleVertexAnthropicMessagesSettings): LanguageModelV1;
33
+ languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
36
34
  /**
37
35
  Anthropic-specific computer use tool.
38
36
  */
@@ -145,35 +145,30 @@ function createVertexAnthropic(options = {}) {
145
145
  environmentVariableName: "GOOGLE_VERTEX_PROJECT"
146
146
  });
147
147
  const baseURL = (_a = (0, import_provider_utils2.withoutTrailingSlash)(options.baseURL)) != null ? _a : `https://${location}-aiplatform.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`;
148
- const createChatModel = (modelId, settings = {}) => {
148
+ const createChatModel = (modelId) => {
149
149
  var _a2;
150
- return new import_internal.AnthropicMessagesLanguageModel(
151
- modelId,
152
- settings,
153
- {
154
- provider: "vertex.anthropic.messages",
155
- baseURL,
156
- headers: (_a2 = options.headers) != null ? _a2 : {},
157
- fetch: options.fetch,
158
- supportsImageUrls: false,
159
- buildRequestUrl: (baseURL2, isStreaming) => `${baseURL2}/${modelId}:${isStreaming ? "streamRawPredict" : "rawPredict"}`,
160
- transformRequestBody: (args) => {
161
- const { model, ...rest } = args;
162
- return {
163
- ...rest,
164
- anthropic_version: "vertex-2023-10-16"
165
- };
166
- }
150
+ return new import_internal.AnthropicMessagesLanguageModel(modelId, {
151
+ provider: "vertex.anthropic.messages",
152
+ baseURL,
153
+ headers: (_a2 = options.headers) != null ? _a2 : {},
154
+ fetch: options.fetch,
155
+ buildRequestUrl: (baseURL2, isStreaming) => `${baseURL2}/${modelId}:${isStreaming ? "streamRawPredict" : "rawPredict"}`,
156
+ transformRequestBody: (args) => {
157
+ const { model, ...rest } = args;
158
+ return {
159
+ ...rest,
160
+ anthropic_version: "vertex-2023-10-16"
161
+ };
167
162
  }
168
- );
163
+ });
169
164
  };
170
- const provider = function(modelId, settings) {
165
+ const provider = function(modelId) {
171
166
  if (new.target) {
172
167
  throw new Error(
173
168
  "The Anthropic model function cannot be called with the new keyword."
174
169
  );
175
170
  }
176
- return createChatModel(modelId, settings);
171
+ return createChatModel(modelId);
177
172
  };
178
173
  provider.languageModel = createChatModel;
179
174
  provider.chat = createChatModel;
@@ -181,6 +176,9 @@ function createVertexAnthropic(options = {}) {
181
176
  provider.textEmbeddingModel = (modelId) => {
182
177
  throw new import_provider.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
183
178
  };
179
+ provider.imageModel = (modelId) => {
180
+ throw new import_provider.NoSuchModelError({ modelId, modelType: "imageModel" });
181
+ };
184
182
  provider.tools = import_internal.anthropicTools;
185
183
  return provider;
186
184
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/anthropic/edge/index.ts","../../../src/anthropic/edge/google-vertex-anthropic-provider-edge.ts","../../../src/edge/google-vertex-auth-edge.ts","../../../src/anthropic/google-vertex-anthropic-provider.ts"],"sourcesContent":["export {\n createVertexAnthropic,\n vertexAnthropic,\n} from './google-vertex-anthropic-provider-edge';\nexport type {\n GoogleVertexAnthropicProviderSettings,\n GoogleVertexAnthropicProvider,\n} from './google-vertex-anthropic-provider-edge';\n","import { resolve } from '@ai-sdk/provider-utils';\nimport {\n generateAuthToken,\n GoogleCredentials,\n} from '../../edge/google-vertex-auth-edge';\nimport {\n createVertexAnthropic as createVertexAnthropicOriginal,\n GoogleVertexAnthropicProvider,\n GoogleVertexAnthropicProviderSettings as GoogleVertexAnthropicProviderSettingsOriginal,\n} from '../google-vertex-anthropic-provider';\n\nexport type { GoogleVertexAnthropicProvider };\n\nexport interface GoogleVertexAnthropicProviderSettings\n extends GoogleVertexAnthropicProviderSettingsOriginal {\n /**\n * Optional. The Google credentials for the Google Cloud service account. If\n * not provided, the Google Vertex provider will use environment variables to\n * load the credentials.\n */\n googleCredentials?: GoogleCredentials;\n}\n\nexport function createVertexAnthropic(\n options: GoogleVertexAnthropicProviderSettings = {},\n): GoogleVertexAnthropicProvider {\n return createVertexAnthropicOriginal({\n ...options,\n headers: async () => ({\n Authorization: `Bearer ${await generateAuthToken(\n options.googleCredentials,\n )}`,\n ...(await resolve(options.headers)),\n }),\n });\n}\n\n/**\n * Default Google Vertex AI Anthropic provider instance.\n */\nexport const vertexAnthropic = createVertexAnthropic();\n","import { loadOptionalSetting, loadSetting } from '@ai-sdk/provider-utils';\n\nexport interface GoogleCredentials {\n /**\n * The client email for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_CLIENT_EMAIL` environment variable.\n */\n clientEmail: string;\n\n /**\n * The private key for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_PRIVATE_KEY` environment variable.\n */\n privateKey: string;\n\n /**\n * Optional. The private key ID for the Google Cloud service account. Defaults\n * to the value of the `GOOGLE_PRIVATE_KEY_ID` environment variable.\n */\n privateKeyId?: string;\n}\n\nconst loadCredentials = async (): Promise<GoogleCredentials> => {\n try {\n return {\n clientEmail: loadSetting({\n settingValue: undefined,\n settingName: 'clientEmail',\n environmentVariableName: 'GOOGLE_CLIENT_EMAIL',\n description: 'Google client email',\n }),\n privateKey: loadSetting({\n settingValue: undefined,\n settingName: 'privateKey',\n environmentVariableName: 'GOOGLE_PRIVATE_KEY',\n description: 'Google private key',\n }),\n privateKeyId: loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'GOOGLE_PRIVATE_KEY_ID',\n }),\n };\n } catch (error: any) {\n throw new Error(`Failed to load Google credentials: ${error.message}`);\n }\n};\n\n// Convert a string to base64url\nconst base64url = (str: string) => {\n return btoa(str).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n};\nconst importPrivateKey = async (pemKey: string) => {\n const pemHeader = '-----BEGIN PRIVATE KEY-----';\n const pemFooter = '-----END PRIVATE KEY-----';\n\n // Remove header, footer, and any whitespace/newlines\n const pemContents = pemKey\n .replace(pemHeader, '')\n .replace(pemFooter, '')\n .replace(/\\s/g, '');\n\n // Decode base64 to binary\n const binaryString = atob(pemContents);\n\n // Convert binary string to Uint8Array\n const binaryData = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n binaryData[i] = binaryString.charCodeAt(i);\n }\n\n return await crypto.subtle.importKey(\n 'pkcs8',\n binaryData,\n { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' },\n true,\n ['sign'],\n );\n};\n\nconst buildJwt = async (credentials: GoogleCredentials) => {\n const now = Math.floor(Date.now() / 1000);\n\n // Only include kid in header if privateKeyId is provided\n const header: { alg: string; typ: string; kid?: string } = {\n alg: 'RS256',\n typ: 'JWT',\n };\n\n if (credentials.privateKeyId) {\n header.kid = credentials.privateKeyId;\n }\n\n const payload = {\n iss: credentials.clientEmail,\n scope: 'https://www.googleapis.com/auth/cloud-platform',\n aud: 'https://oauth2.googleapis.com/token',\n exp: now + 3600,\n iat: now,\n };\n\n const privateKey = await importPrivateKey(credentials.privateKey);\n\n const signingInput = `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}`;\n const encoder = new TextEncoder();\n const data = encoder.encode(signingInput);\n\n const signature = await crypto.subtle.sign(\n 'RSASSA-PKCS1-v1_5',\n privateKey,\n data,\n );\n\n const signatureBase64 = base64url(\n String.fromCharCode(...new Uint8Array(signature)),\n );\n\n return `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}.${signatureBase64}`;\n};\n\n/**\n * Generate an authentication token for Google Vertex AI in a manner compatible\n * with the Edge runtime.\n */\nexport async function generateAuthToken(credentials?: GoogleCredentials) {\n try {\n const creds = credentials || (await loadCredentials());\n const jwt = await buildJwt(creds);\n\n const response = await fetch('https://oauth2.googleapis.com/token', {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n assertion: jwt,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Token request failed: ${response.statusText}`);\n }\n\n const data = await response.json();\n return data.access_token;\n } catch (error) {\n throw error;\n }\n}\n","import {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n loadOptionalSetting,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n AnthropicMessagesLanguageModel,\n AnthropicMessagesModelId,\n} from '@ai-sdk/anthropic/internal';\nimport { GoogleVertexAnthropicMessagesModelId } from './google-vertex-anthropic-messages-options';\nexport interface GoogleVertexAnthropicProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;\n\n /**\nAnthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n}\n\nexport interface GoogleVertexAnthropicProviderSettings {\n /**\n * Google Cloud project ID. Defaults to the value of the `GOOGLE_VERTEX_PROJECT` environment variable.\n */\n project?: string;\n\n /**\n * Google Cloud region. Defaults to the value of the `GOOGLE_VERTEX_LOCATION` environment variable.\n */\n location?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Resolvable<Record<string, string | undefined>>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate a Google Vertex Anthropic provider instance.\n */\nexport function createVertexAnthropic(\n options: GoogleVertexAnthropicProviderSettings = {},\n): GoogleVertexAnthropicProvider {\n const location = loadOptionalSetting({\n settingValue: options.location,\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n });\n const project = loadOptionalSetting({\n settingValue: options.project,\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n });\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n `https://${location}-aiplatform.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`;\n\n const createChatModel = (modelId: GoogleVertexAnthropicMessagesModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'vertex.anthropic.messages',\n baseURL,\n headers: options.headers ?? {},\n fetch: options.fetch,\n\n buildRequestUrl: (baseURL, isStreaming) =>\n `${baseURL}/${modelId}:${\n isStreaming ? 'streamRawPredict' : 'rawPredict'\n }`,\n transformRequestBody: args => {\n // Remove model from args and add anthropic version\n const { model, ...rest } = args;\n return {\n ...rest,\n anthropic_version: 'vertex-2023-10-16',\n };\n },\n });\n\n const provider = function (modelId: GoogleVertexAnthropicMessagesModelId) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n"],"mappings":"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","names":["createVertexAnthropic","import_provider_utils","import_provider_utils","_a","baseURL","createVertexAnthropic"]}
@@ -126,35 +126,30 @@ function createVertexAnthropic(options = {}) {
126
126
  environmentVariableName: "GOOGLE_VERTEX_PROJECT"
127
127
  });
128
128
  const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : `https://${location}-aiplatform.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`;
129
- const createChatModel = (modelId, settings = {}) => {
129
+ const createChatModel = (modelId) => {
130
130
  var _a2;
131
- return new AnthropicMessagesLanguageModel(
132
- modelId,
133
- settings,
134
- {
135
- provider: "vertex.anthropic.messages",
136
- baseURL,
137
- headers: (_a2 = options.headers) != null ? _a2 : {},
138
- fetch: options.fetch,
139
- supportsImageUrls: false,
140
- buildRequestUrl: (baseURL2, isStreaming) => `${baseURL2}/${modelId}:${isStreaming ? "streamRawPredict" : "rawPredict"}`,
141
- transformRequestBody: (args) => {
142
- const { model, ...rest } = args;
143
- return {
144
- ...rest,
145
- anthropic_version: "vertex-2023-10-16"
146
- };
147
- }
131
+ return new AnthropicMessagesLanguageModel(modelId, {
132
+ provider: "vertex.anthropic.messages",
133
+ baseURL,
134
+ headers: (_a2 = options.headers) != null ? _a2 : {},
135
+ fetch: options.fetch,
136
+ buildRequestUrl: (baseURL2, isStreaming) => `${baseURL2}/${modelId}:${isStreaming ? "streamRawPredict" : "rawPredict"}`,
137
+ transformRequestBody: (args) => {
138
+ const { model, ...rest } = args;
139
+ return {
140
+ ...rest,
141
+ anthropic_version: "vertex-2023-10-16"
142
+ };
148
143
  }
149
- );
144
+ });
150
145
  };
151
- const provider = function(modelId, settings) {
146
+ const provider = function(modelId) {
152
147
  if (new.target) {
153
148
  throw new Error(
154
149
  "The Anthropic model function cannot be called with the new keyword."
155
150
  );
156
151
  }
157
- return createChatModel(modelId, settings);
152
+ return createChatModel(modelId);
158
153
  };
159
154
  provider.languageModel = createChatModel;
160
155
  provider.chat = createChatModel;
@@ -162,6 +157,9 @@ function createVertexAnthropic(options = {}) {
162
157
  provider.textEmbeddingModel = (modelId) => {
163
158
  throw new NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
164
159
  };
160
+ provider.imageModel = (modelId) => {
161
+ throw new NoSuchModelError({ modelId, modelType: "imageModel" });
162
+ };
165
163
  provider.tools = anthropicTools;
166
164
  return provider;
167
165
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/anthropic/edge/google-vertex-anthropic-provider-edge.ts","../../../src/edge/google-vertex-auth-edge.ts","../../../src/anthropic/google-vertex-anthropic-provider.ts"],"sourcesContent":["import { resolve } from '@ai-sdk/provider-utils';\nimport {\n generateAuthToken,\n GoogleCredentials,\n} from '../../edge/google-vertex-auth-edge';\nimport {\n createVertexAnthropic as createVertexAnthropicOriginal,\n GoogleVertexAnthropicProvider,\n GoogleVertexAnthropicProviderSettings as GoogleVertexAnthropicProviderSettingsOriginal,\n} from '../google-vertex-anthropic-provider';\n\nexport type { GoogleVertexAnthropicProvider };\n\nexport interface GoogleVertexAnthropicProviderSettings\n extends GoogleVertexAnthropicProviderSettingsOriginal {\n /**\n * Optional. The Google credentials for the Google Cloud service account. If\n * not provided, the Google Vertex provider will use environment variables to\n * load the credentials.\n */\n googleCredentials?: GoogleCredentials;\n}\n\nexport function createVertexAnthropic(\n options: GoogleVertexAnthropicProviderSettings = {},\n): GoogleVertexAnthropicProvider {\n return createVertexAnthropicOriginal({\n ...options,\n headers: async () => ({\n Authorization: `Bearer ${await generateAuthToken(\n options.googleCredentials,\n )}`,\n ...(await resolve(options.headers)),\n }),\n });\n}\n\n/**\n * Default Google Vertex AI Anthropic provider instance.\n */\nexport const vertexAnthropic = createVertexAnthropic();\n","import { loadOptionalSetting, loadSetting } from '@ai-sdk/provider-utils';\n\nexport interface GoogleCredentials {\n /**\n * The client email for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_CLIENT_EMAIL` environment variable.\n */\n clientEmail: string;\n\n /**\n * The private key for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_PRIVATE_KEY` environment variable.\n */\n privateKey: string;\n\n /**\n * Optional. The private key ID for the Google Cloud service account. Defaults\n * to the value of the `GOOGLE_PRIVATE_KEY_ID` environment variable.\n */\n privateKeyId?: string;\n}\n\nconst loadCredentials = async (): Promise<GoogleCredentials> => {\n try {\n return {\n clientEmail: loadSetting({\n settingValue: undefined,\n settingName: 'clientEmail',\n environmentVariableName: 'GOOGLE_CLIENT_EMAIL',\n description: 'Google client email',\n }),\n privateKey: loadSetting({\n settingValue: undefined,\n settingName: 'privateKey',\n environmentVariableName: 'GOOGLE_PRIVATE_KEY',\n description: 'Google private key',\n }),\n privateKeyId: loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'GOOGLE_PRIVATE_KEY_ID',\n }),\n };\n } catch (error: any) {\n throw new Error(`Failed to load Google credentials: ${error.message}`);\n }\n};\n\n// Convert a string to base64url\nconst base64url = (str: string) => {\n return btoa(str).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n};\nconst importPrivateKey = async (pemKey: string) => {\n const pemHeader = '-----BEGIN PRIVATE KEY-----';\n const pemFooter = '-----END PRIVATE KEY-----';\n\n // Remove header, footer, and any whitespace/newlines\n const pemContents = pemKey\n .replace(pemHeader, '')\n .replace(pemFooter, '')\n .replace(/\\s/g, '');\n\n // Decode base64 to binary\n const binaryString = atob(pemContents);\n\n // Convert binary string to Uint8Array\n const binaryData = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n binaryData[i] = binaryString.charCodeAt(i);\n }\n\n return await crypto.subtle.importKey(\n 'pkcs8',\n binaryData,\n { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' },\n true,\n ['sign'],\n );\n};\n\nconst buildJwt = async (credentials: GoogleCredentials) => {\n const now = Math.floor(Date.now() / 1000);\n\n // Only include kid in header if privateKeyId is provided\n const header: { alg: string; typ: string; kid?: string } = {\n alg: 'RS256',\n typ: 'JWT',\n };\n\n if (credentials.privateKeyId) {\n header.kid = credentials.privateKeyId;\n }\n\n const payload = {\n iss: credentials.clientEmail,\n scope: 'https://www.googleapis.com/auth/cloud-platform',\n aud: 'https://oauth2.googleapis.com/token',\n exp: now + 3600,\n iat: now,\n };\n\n const privateKey = await importPrivateKey(credentials.privateKey);\n\n const signingInput = `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}`;\n const encoder = new TextEncoder();\n const data = encoder.encode(signingInput);\n\n const signature = await crypto.subtle.sign(\n 'RSASSA-PKCS1-v1_5',\n privateKey,\n data,\n );\n\n const signatureBase64 = base64url(\n String.fromCharCode(...new Uint8Array(signature)),\n );\n\n return `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}.${signatureBase64}`;\n};\n\n/**\n * Generate an authentication token for Google Vertex AI in a manner compatible\n * with the Edge runtime.\n */\nexport async function generateAuthToken(credentials?: GoogleCredentials) {\n try {\n const creds = credentials || (await loadCredentials());\n const jwt = await buildJwt(creds);\n\n const response = await fetch('https://oauth2.googleapis.com/token', {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n assertion: jwt,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Token request failed: ${response.statusText}`);\n }\n\n const data = await response.json();\n return data.access_token;\n } catch (error) {\n throw error;\n }\n}\n","import {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n Resolvable,\n loadOptionalSetting,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {\n anthropicTools,\n AnthropicMessagesLanguageModel,\n AnthropicMessagesModelId,\n} from '@ai-sdk/anthropic/internal';\nimport { GoogleVertexAnthropicMessagesModelId } from './google-vertex-anthropic-messages-options';\nexport interface GoogleVertexAnthropicProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;\n\n /**\nAnthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n}\n\nexport interface GoogleVertexAnthropicProviderSettings {\n /**\n * Google Cloud project ID. Defaults to the value of the `GOOGLE_VERTEX_PROJECT` environment variable.\n */\n project?: string;\n\n /**\n * Google Cloud region. Defaults to the value of the `GOOGLE_VERTEX_LOCATION` environment variable.\n */\n location?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Resolvable<Record<string, string | undefined>>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate a Google Vertex Anthropic provider instance.\n */\nexport function createVertexAnthropic(\n options: GoogleVertexAnthropicProviderSettings = {},\n): GoogleVertexAnthropicProvider {\n const location = loadOptionalSetting({\n settingValue: options.location,\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n });\n const project = loadOptionalSetting({\n settingValue: options.project,\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n });\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n `https://${location}-aiplatform.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`;\n\n const createChatModel = (modelId: GoogleVertexAnthropicMessagesModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'vertex.anthropic.messages',\n baseURL,\n headers: options.headers ?? {},\n fetch: options.fetch,\n\n buildRequestUrl: (baseURL, isStreaming) =>\n `${baseURL}/${modelId}:${\n isStreaming ? 'streamRawPredict' : 'rawPredict'\n }`,\n transformRequestBody: args => {\n // Remove model from args and add anthropic version\n const { model, ...rest } = args;\n return {\n ...rest,\n anthropic_version: 'vertex-2023-10-16',\n };\n },\n });\n\n const provider = function (modelId: GoogleVertexAnthropicMessagesModelId) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n"],"mappings":"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","names":["loadOptionalSetting","_a","baseURL","createVertexAnthropic"]}