@ai-sdk/google-vertex 3.0.0-canary.2 → 3.0.0-canary.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +262 -0
- package/README.md +3 -3
- package/anthropic/edge.d.ts +1 -0
- package/anthropic/index.d.ts +1 -0
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.mts +3 -5
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.ts +3 -5
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.js +16 -21
- package/dist/anthropic/edge/index.js.map +1 -0
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.mjs +16 -21
- package/dist/anthropic/edge/index.mjs.map +1 -0
- package/{anthropic/dist → dist/anthropic}/index.d.mts +3 -5
- package/{anthropic/dist → dist/anthropic}/index.d.ts +3 -5
- package/{anthropic/dist → dist/anthropic}/index.js +16 -21
- package/dist/anthropic/index.js.map +1 -0
- package/{anthropic/dist → dist/anthropic}/index.mjs +16 -21
- package/dist/anthropic/index.mjs.map +1 -0
- package/{edge/dist → dist/edge}/index.d.mts +7 -16
- package/{edge/dist → dist/edge}/index.d.ts +7 -16
- package/{edge/dist → dist/edge}/index.js +66 -57
- package/dist/edge/index.js.map +1 -0
- package/{edge/dist → dist/edge}/index.mjs +69 -59
- package/dist/edge/index.mjs.map +1 -0
- package/dist/index.d.mts +6 -15
- package/dist/index.d.ts +6 -15
- package/dist/index.js +66 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +69 -59
- package/dist/index.mjs.map +1 -1
- package/edge.d.ts +1 -0
- package/package.json +30 -29
- package/anthropic/dist/index.js.map +0 -1
- package/anthropic/dist/index.mjs.map +0 -1
- package/anthropic/edge/dist/index.js.map +0 -1
- package/anthropic/edge/dist/index.mjs.map +0 -1
- package/edge/dist/index.js.map +0 -1
- package/edge/dist/index.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,267 @@
|
|
1
1
|
# @ai-sdk/google-vertex
|
2
2
|
|
3
|
+
## 3.0.0-canary.20
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Updated dependencies [faf8446]
|
8
|
+
- @ai-sdk/provider-utils@3.0.0-canary.19
|
9
|
+
- @ai-sdk/anthropic@2.0.0-canary.19
|
10
|
+
- @ai-sdk/google@2.0.0-canary.20
|
11
|
+
|
12
|
+
## 3.0.0-canary.19
|
13
|
+
|
14
|
+
### Patch Changes
|
15
|
+
|
16
|
+
- Updated dependencies [40acf9b]
|
17
|
+
- @ai-sdk/provider-utils@3.0.0-canary.18
|
18
|
+
- @ai-sdk/anthropic@2.0.0-canary.18
|
19
|
+
- @ai-sdk/google@2.0.0-canary.19
|
20
|
+
|
21
|
+
## 3.0.0-canary.18
|
22
|
+
|
23
|
+
### Major Changes
|
24
|
+
|
25
|
+
- 516be5b: ### Move Image Model Settings into generate options
|
26
|
+
|
27
|
+
Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`.
|
28
|
+
|
29
|
+
Before
|
30
|
+
|
31
|
+
```js
|
32
|
+
await generateImage({
|
33
|
+
model: luma.image('photon-flash-1', {
|
34
|
+
maxImagesPerCall: 5,
|
35
|
+
pollIntervalMillis: 500,
|
36
|
+
}),
|
37
|
+
prompt,
|
38
|
+
n: 10,
|
39
|
+
});
|
40
|
+
```
|
41
|
+
|
42
|
+
After
|
43
|
+
|
44
|
+
```js
|
45
|
+
await generateImage({
|
46
|
+
model: luma.image('photon-flash-1'),
|
47
|
+
prompt,
|
48
|
+
n: 10,
|
49
|
+
maxImagesPerCall: 5,
|
50
|
+
providerOptions: {
|
51
|
+
luma: { pollIntervalMillis: 5 },
|
52
|
+
},
|
53
|
+
});
|
54
|
+
```
|
55
|
+
|
56
|
+
Pull Request: https://github.com/vercel/ai/pull/6180
|
57
|
+
|
58
|
+
### Patch Changes
|
59
|
+
|
60
|
+
- Updated dependencies [f07a6d4]
|
61
|
+
- Updated dependencies [ea7a7c9]
|
62
|
+
- @ai-sdk/google@2.0.0-canary.18
|
63
|
+
- @ai-sdk/provider-utils@3.0.0-canary.17
|
64
|
+
- @ai-sdk/anthropic@2.0.0-canary.17
|
65
|
+
|
66
|
+
## 3.0.0-canary.17
|
67
|
+
|
68
|
+
### Patch Changes
|
69
|
+
|
70
|
+
- Updated dependencies [87b828f]
|
71
|
+
- @ai-sdk/provider-utils@3.0.0-canary.16
|
72
|
+
- @ai-sdk/anthropic@2.0.0-canary.16
|
73
|
+
- @ai-sdk/google@2.0.0-canary.17
|
74
|
+
|
75
|
+
## 3.0.0-canary.16
|
76
|
+
|
77
|
+
### Patch Changes
|
78
|
+
|
79
|
+
- Updated dependencies [a571d6e]
|
80
|
+
- Updated dependencies [a8c8bd5]
|
81
|
+
- Updated dependencies [7979f7f]
|
82
|
+
- Updated dependencies [41fa418]
|
83
|
+
- @ai-sdk/provider-utils@3.0.0-canary.15
|
84
|
+
- @ai-sdk/provider@2.0.0-canary.14
|
85
|
+
- @ai-sdk/anthropic@2.0.0-canary.15
|
86
|
+
- @ai-sdk/google@2.0.0-canary.16
|
87
|
+
|
88
|
+
## 3.0.0-canary.15
|
89
|
+
|
90
|
+
### Patch Changes
|
91
|
+
|
92
|
+
- Updated dependencies [957b739]
|
93
|
+
- Updated dependencies [9bd5ab5]
|
94
|
+
- @ai-sdk/provider-utils@3.0.0-canary.14
|
95
|
+
- @ai-sdk/provider@2.0.0-canary.13
|
96
|
+
- @ai-sdk/anthropic@2.0.0-canary.14
|
97
|
+
- @ai-sdk/google@2.0.0-canary.15
|
98
|
+
|
99
|
+
## 3.0.0-canary.14
|
100
|
+
|
101
|
+
### Patch Changes
|
102
|
+
|
103
|
+
- 8e171f5: feat (provider/google-vertex): add imagen-3.0-generate-002
|
104
|
+
- d9209ca: fix (image-model): `specificationVersion: v1` -> `v2`
|
105
|
+
- Updated dependencies [f916255]
|
106
|
+
- Updated dependencies [7b3ae3f]
|
107
|
+
- Updated dependencies [0ff02bb]
|
108
|
+
- @ai-sdk/google@2.0.0-canary.14
|
109
|
+
- @ai-sdk/provider@2.0.0-canary.12
|
110
|
+
- @ai-sdk/provider-utils@3.0.0-canary.13
|
111
|
+
- @ai-sdk/anthropic@2.0.0-canary.13
|
112
|
+
|
113
|
+
## 3.0.0-canary.13
|
114
|
+
|
115
|
+
### Patch Changes
|
116
|
+
|
117
|
+
- 5c9eec4: chore(providers/anthropic): switch to providerOptions
|
118
|
+
- 7378473: chore(providers/google): switch to providerOptions
|
119
|
+
- Updated dependencies [5c9eec4]
|
120
|
+
- Updated dependencies [9bf7291]
|
121
|
+
- Updated dependencies [7378473]
|
122
|
+
- Updated dependencies [4617fab]
|
123
|
+
- Updated dependencies [e030615]
|
124
|
+
- @ai-sdk/anthropic@2.0.0-canary.12
|
125
|
+
- @ai-sdk/provider@2.0.0-canary.11
|
126
|
+
- @ai-sdk/google@2.0.0-canary.13
|
127
|
+
- @ai-sdk/provider-utils@3.0.0-canary.12
|
128
|
+
|
129
|
+
## 3.0.0-canary.12
|
130
|
+
|
131
|
+
### Patch Changes
|
132
|
+
|
133
|
+
- 66962ed: fix(packages): export node10 compatible types
|
134
|
+
- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
|
135
|
+
- Updated dependencies [888b750]
|
136
|
+
- Updated dependencies [66962ed]
|
137
|
+
- Updated dependencies [9301f86]
|
138
|
+
- Updated dependencies [a3f768e]
|
139
|
+
- @ai-sdk/google@2.0.0-canary.12
|
140
|
+
- @ai-sdk/provider-utils@3.0.0-canary.11
|
141
|
+
- @ai-sdk/anthropic@2.0.0-canary.11
|
142
|
+
- @ai-sdk/provider@2.0.0-canary.10
|
143
|
+
|
144
|
+
## 3.0.0-canary.11
|
145
|
+
|
146
|
+
### Patch Changes
|
147
|
+
|
148
|
+
- Updated dependencies [e86be6f]
|
149
|
+
- @ai-sdk/provider@2.0.0-canary.9
|
150
|
+
- @ai-sdk/anthropic@2.0.0-canary.10
|
151
|
+
- @ai-sdk/google@2.0.0-canary.11
|
152
|
+
- @ai-sdk/provider-utils@3.0.0-canary.10
|
153
|
+
|
154
|
+
## 3.0.0-canary.10
|
155
|
+
|
156
|
+
### Patch Changes
|
157
|
+
|
158
|
+
- cea5997: chore(providers/google-vertex): update embedding model to use providerOptions
|
159
|
+
- Updated dependencies [95857aa]
|
160
|
+
- Updated dependencies [3259565]
|
161
|
+
- Updated dependencies [fd98925]
|
162
|
+
- Updated dependencies [7ea4132]
|
163
|
+
- @ai-sdk/provider@2.0.0-canary.8
|
164
|
+
- @ai-sdk/google@2.0.0-canary.10
|
165
|
+
- @ai-sdk/anthropic@2.0.0-canary.9
|
166
|
+
- @ai-sdk/provider-utils@3.0.0-canary.9
|
167
|
+
|
168
|
+
## 3.0.0-canary.9
|
169
|
+
|
170
|
+
### Patch Changes
|
171
|
+
|
172
|
+
- Updated dependencies [5d142ab]
|
173
|
+
- Updated dependencies [b6b43c7]
|
174
|
+
- Updated dependencies [8aa9e20]
|
175
|
+
- Updated dependencies [3795467]
|
176
|
+
- @ai-sdk/provider-utils@3.0.0-canary.8
|
177
|
+
- @ai-sdk/provider@2.0.0-canary.7
|
178
|
+
- @ai-sdk/anthropic@2.0.0-canary.8
|
179
|
+
- @ai-sdk/google@2.0.0-canary.9
|
180
|
+
|
181
|
+
## 3.0.0-canary.8
|
182
|
+
|
183
|
+
### Patch Changes
|
184
|
+
|
185
|
+
- 26735b5: chore(embedding-model): add v2 interface
|
186
|
+
- 443d8ec: feat(embedding-model-v2): add response body field
|
187
|
+
- fd65bc6: chore(embedding-model-v2): rename rawResponse to response
|
188
|
+
- Updated dependencies [26735b5]
|
189
|
+
- Updated dependencies [443d8ec]
|
190
|
+
- Updated dependencies [14c9410]
|
191
|
+
- Updated dependencies [d9c98f4]
|
192
|
+
- Updated dependencies [c4a2fec]
|
193
|
+
- Updated dependencies [0054544]
|
194
|
+
- Updated dependencies [9e9c809]
|
195
|
+
- Updated dependencies [32831c6]
|
196
|
+
- Updated dependencies [d0f9495]
|
197
|
+
- Updated dependencies [fd65bc6]
|
198
|
+
- Updated dependencies [393138b]
|
199
|
+
- Updated dependencies [7182d14]
|
200
|
+
- @ai-sdk/provider@2.0.0-canary.6
|
201
|
+
- @ai-sdk/google@2.0.0-canary.8
|
202
|
+
- @ai-sdk/anthropic@2.0.0-canary.7
|
203
|
+
- @ai-sdk/provider-utils@3.0.0-canary.7
|
204
|
+
|
205
|
+
## 3.0.0-canary.7
|
206
|
+
|
207
|
+
### Patch Changes
|
208
|
+
|
209
|
+
- Updated dependencies [411e483]
|
210
|
+
- Updated dependencies [79457bd]
|
211
|
+
- Updated dependencies [ad80501]
|
212
|
+
- Updated dependencies [1766ede]
|
213
|
+
- Updated dependencies [f10304b]
|
214
|
+
- @ai-sdk/provider@2.0.0-canary.5
|
215
|
+
- @ai-sdk/anthropic@2.0.0-canary.6
|
216
|
+
- @ai-sdk/google@2.0.0-canary.7
|
217
|
+
- @ai-sdk/provider-utils@3.0.0-canary.6
|
218
|
+
|
219
|
+
## 3.0.0-canary.6
|
220
|
+
|
221
|
+
### Patch Changes
|
222
|
+
|
223
|
+
- Updated dependencies [6f6bb89]
|
224
|
+
- @ai-sdk/provider@2.0.0-canary.4
|
225
|
+
- @ai-sdk/anthropic@2.0.0-canary.5
|
226
|
+
- @ai-sdk/google@2.0.0-canary.6
|
227
|
+
- @ai-sdk/provider-utils@3.0.0-canary.5
|
228
|
+
|
229
|
+
## 3.0.0-canary.5
|
230
|
+
|
231
|
+
### Patch Changes
|
232
|
+
|
233
|
+
- Updated dependencies [d1a1aa1]
|
234
|
+
- @ai-sdk/provider@2.0.0-canary.3
|
235
|
+
- @ai-sdk/anthropic@2.0.0-canary.4
|
236
|
+
- @ai-sdk/google@2.0.0-canary.5
|
237
|
+
- @ai-sdk/provider-utils@3.0.0-canary.4
|
238
|
+
|
239
|
+
## 3.0.0-canary.4
|
240
|
+
|
241
|
+
### Patch Changes
|
242
|
+
|
243
|
+
- Updated dependencies [a166433]
|
244
|
+
- Updated dependencies [abf9a79]
|
245
|
+
- Updated dependencies [9f95b35]
|
246
|
+
- Updated dependencies [0a87932]
|
247
|
+
- Updated dependencies [6dc848c]
|
248
|
+
- Updated dependencies [61ab528]
|
249
|
+
- @ai-sdk/provider-utils@3.0.0-canary.3
|
250
|
+
- @ai-sdk/provider@2.0.0-canary.2
|
251
|
+
- @ai-sdk/anthropic@2.0.0-canary.3
|
252
|
+
- @ai-sdk/google@2.0.0-canary.4
|
253
|
+
|
254
|
+
## 3.0.0-canary.3
|
255
|
+
|
256
|
+
### Patch Changes
|
257
|
+
|
258
|
+
- Updated dependencies [c57e248]
|
259
|
+
- Updated dependencies [33f4a6a]
|
260
|
+
- @ai-sdk/provider@2.0.0-canary.1
|
261
|
+
- @ai-sdk/anthropic@2.0.0-canary.2
|
262
|
+
- @ai-sdk/google@2.0.0-canary.3
|
263
|
+
- @ai-sdk/provider-utils@3.0.0-canary.2
|
264
|
+
|
3
265
|
## 3.0.0-canary.2
|
4
266
|
|
5
267
|
### Patch Changes
|
package/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# AI SDK - Google Vertex AI Provider
|
2
2
|
|
3
|
-
The **[Google Vertex provider](https://sdk.
|
3
|
+
The **[Google Vertex provider](https://ai-sdk.dev/providers/ai-sdk-providers/google-vertex)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the [Google Vertex AI](https://cloud.google.com/vertex-ai) APIs.
|
4
4
|
|
5
5
|
This library includes a Google Vertex Anthropic provider. This provider closely follows the core Google Vertex library's usage patterns. See more in the [Google Vertex Anthropic Provider](#google-vertex-anthropic-provider) section below.
|
6
6
|
|
@@ -125,7 +125,7 @@ async function main() {
|
|
125
125
|
});
|
126
126
|
|
127
127
|
console.log(result.text);
|
128
|
-
console.log(result.
|
128
|
+
console.log(result.providerMetadata?.anthropic);
|
129
129
|
// e.g. { cacheCreationInputTokens: 2118, cacheReadInputTokens: 0 }
|
130
130
|
}
|
131
131
|
|
@@ -218,4 +218,4 @@ const { text } = await generateText({
|
|
218
218
|
|
219
219
|
## Documentation
|
220
220
|
|
221
|
-
Please check out the **[Google Vertex provider](https://sdk.
|
221
|
+
Please check out the **[Google Vertex provider](https://ai-sdk.dev/providers/ai-sdk-providers/google-vertex)** for more information.
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from '../dist/anthropic/edge';
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from '../dist/anthropic';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
|
2
2
|
import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
|
3
|
-
import {
|
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
25
|
interface GoogleVertexAnthropicProvider extends ProviderV2 {
|
28
26
|
/**
|
29
27
|
Creates a model for text generation.
|
30
28
|
*/
|
31
|
-
(modelId: GoogleVertexAnthropicMessagesModelId
|
29
|
+
(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
32
30
|
/**
|
33
31
|
Creates a model for text generation.
|
34
32
|
*/
|
35
|
-
languageModel(modelId: GoogleVertexAnthropicMessagesModelId
|
33
|
+
languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
36
34
|
/**
|
37
35
|
Anthropic-specific computer use tool.
|
38
36
|
*/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
|
2
2
|
import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
|
3
|
-
import {
|
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
25
|
interface GoogleVertexAnthropicProvider extends ProviderV2 {
|
28
26
|
/**
|
29
27
|
Creates a model for text generation.
|
30
28
|
*/
|
31
|
-
(modelId: GoogleVertexAnthropicMessagesModelId
|
29
|
+
(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
32
30
|
/**
|
33
31
|
Creates a model for text generation.
|
34
32
|
*/
|
35
|
-
languageModel(modelId: GoogleVertexAnthropicMessagesModelId
|
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
|
148
|
+
const createChatModel = (modelId) => {
|
149
149
|
var _a2;
|
150
|
-
return new import_internal.AnthropicMessagesLanguageModel(
|
151
|
-
|
152
|
-
|
153
|
-
{
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
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
|
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
|
171
|
+
return createChatModel(modelId);
|
177
172
|
};
|
178
173
|
provider.languageModel = createChatModel;
|
179
174
|
provider.chat = createChatModel;
|
@@ -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
|
129
|
+
const createChatModel = (modelId) => {
|
130
130
|
var _a2;
|
131
|
-
return new AnthropicMessagesLanguageModel(
|
132
|
-
|
133
|
-
|
134
|
-
{
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
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
|
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
|
152
|
+
return createChatModel(modelId);
|
158
153
|
};
|
159
154
|
provider.languageModel = createChatModel;
|
160
155
|
provider.chat = createChatModel;
|
@@ -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"]}
|
@@ -1,21 +1,19 @@
|
|
1
1
|
import { GoogleAuthOptions } from 'google-auth-library';
|
2
2
|
import { ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
|
3
3
|
import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
|
4
|
-
import {
|
4
|
+
import { anthropicTools } from '@ai-sdk/anthropic/internal';
|
5
5
|
|
6
6
|
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 & {});
|
7
|
-
interface GoogleVertexAnthropicMessagesSettings extends AnthropicMessagesSettings {
|
8
|
-
}
|
9
7
|
|
10
8
|
interface GoogleVertexAnthropicProvider extends ProviderV2 {
|
11
9
|
/**
|
12
10
|
Creates a model for text generation.
|
13
11
|
*/
|
14
|
-
(modelId: GoogleVertexAnthropicMessagesModelId
|
12
|
+
(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
15
13
|
/**
|
16
14
|
Creates a model for text generation.
|
17
15
|
*/
|
18
|
-
languageModel(modelId: GoogleVertexAnthropicMessagesModelId
|
16
|
+
languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
19
17
|
/**
|
20
18
|
Anthropic-specific computer use tool.
|
21
19
|
*/
|
@@ -1,21 +1,19 @@
|
|
1
1
|
import { GoogleAuthOptions } from 'google-auth-library';
|
2
2
|
import { ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
|
3
3
|
import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
|
4
|
-
import {
|
4
|
+
import { anthropicTools } from '@ai-sdk/anthropic/internal';
|
5
5
|
|
6
6
|
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 & {});
|
7
|
-
interface GoogleVertexAnthropicMessagesSettings extends AnthropicMessagesSettings {
|
8
|
-
}
|
9
7
|
|
10
8
|
interface GoogleVertexAnthropicProvider extends ProviderV2 {
|
11
9
|
/**
|
12
10
|
Creates a model for text generation.
|
13
11
|
*/
|
14
|
-
(modelId: GoogleVertexAnthropicMessagesModelId
|
12
|
+
(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
15
13
|
/**
|
16
14
|
Creates a model for text generation.
|
17
15
|
*/
|
18
|
-
languageModel(modelId: GoogleVertexAnthropicMessagesModelId
|
16
|
+
languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV2;
|
19
17
|
/**
|
20
18
|
Anthropic-specific computer use tool.
|
21
19
|
*/
|
@@ -64,35 +64,30 @@ function createVertexAnthropic(options = {}) {
|
|
64
64
|
environmentVariableName: "GOOGLE_VERTEX_PROJECT"
|
65
65
|
});
|
66
66
|
const baseURL = (_a = (0, import_provider_utils.withoutTrailingSlash)(options.baseURL)) != null ? _a : `https://${location}-aiplatform.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`;
|
67
|
-
const createChatModel = (modelId
|
67
|
+
const createChatModel = (modelId) => {
|
68
68
|
var _a2;
|
69
|
-
return new import_internal.AnthropicMessagesLanguageModel(
|
70
|
-
|
71
|
-
|
72
|
-
{
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
return {
|
82
|
-
...rest,
|
83
|
-
anthropic_version: "vertex-2023-10-16"
|
84
|
-
};
|
85
|
-
}
|
69
|
+
return new import_internal.AnthropicMessagesLanguageModel(modelId, {
|
70
|
+
provider: "vertex.anthropic.messages",
|
71
|
+
baseURL,
|
72
|
+
headers: (_a2 = options.headers) != null ? _a2 : {},
|
73
|
+
fetch: options.fetch,
|
74
|
+
buildRequestUrl: (baseURL2, isStreaming) => `${baseURL2}/${modelId}:${isStreaming ? "streamRawPredict" : "rawPredict"}`,
|
75
|
+
transformRequestBody: (args) => {
|
76
|
+
const { model, ...rest } = args;
|
77
|
+
return {
|
78
|
+
...rest,
|
79
|
+
anthropic_version: "vertex-2023-10-16"
|
80
|
+
};
|
86
81
|
}
|
87
|
-
);
|
82
|
+
});
|
88
83
|
};
|
89
|
-
const provider = function(modelId
|
84
|
+
const provider = function(modelId) {
|
90
85
|
if (new.target) {
|
91
86
|
throw new Error(
|
92
87
|
"The Anthropic model function cannot be called with the new keyword."
|
93
88
|
);
|
94
89
|
}
|
95
|
-
return createChatModel(modelId
|
90
|
+
return createChatModel(modelId);
|
96
91
|
};
|
97
92
|
provider.languageModel = createChatModel;
|
98
93
|
provider.chat = createChatModel;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/anthropic/index.ts","../../src/anthropic/google-vertex-anthropic-provider-node.ts","../../src/google-vertex-auth-google-auth-library.ts","../../src/anthropic/google-vertex-anthropic-provider.ts"],"sourcesContent":["export {\n vertexAnthropic,\n createVertexAnthropic,\n} from './google-vertex-anthropic-provider-node';\nexport type {\n GoogleVertexAnthropicProvider,\n GoogleVertexAnthropicProviderSettings,\n} from './google-vertex-anthropic-provider-node';\n","import { resolve } from '@ai-sdk/provider-utils';\nimport { GoogleAuthOptions } from 'google-auth-library';\nimport { generateAuthToken } from '../google-vertex-auth-google-auth-library';\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 Authentication options provided by google-auth-library.\nComplete list of authentication options is documented in the\nGoogleAuthOptions interface:\nhttps://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.\n */\n googleAuthOptions?: GoogleAuthOptions;\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.googleAuthOptions,\n )}`,\n ...(await resolve(options.headers)),\n }),\n });\n}\n\n/**\nDefault Google Vertex Anthropic provider instance.\n */\nexport const vertexAnthropic = createVertexAnthropic();\n","import { GoogleAuth, GoogleAuthOptions } from 'google-auth-library';\n\nlet authInstance: GoogleAuth | null = null;\nlet authOptions: GoogleAuthOptions | null = null;\n\nfunction getAuth(options: GoogleAuthOptions) {\n if (!authInstance || options !== authOptions) {\n authInstance = new GoogleAuth({\n scopes: ['https://www.googleapis.com/auth/cloud-platform'],\n ...options,\n });\n authOptions = options;\n }\n return authInstance;\n}\n\nexport async function generateAuthToken(options?: GoogleAuthOptions) {\n const auth = getAuth(options || {});\n const client = await auth.getClient();\n const token = await client.getAccessToken();\n return token?.token || null;\n}\n\n// For testing purposes only\nexport function _resetAuthInstance() {\n authInstance = null;\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,+BAAAA;AAAA,EAAA;AAAA;AAAA;;;ACAA,IAAAC,yBAAwB;;;ACAxB,iCAA8C;AAE9C,IAAI,eAAkC;AACtC,IAAI,cAAwC;AAE5C,SAAS,QAAQ,SAA4B;AAC3C,MAAI,CAAC,gBAAgB,YAAY,aAAa;AAC5C,mBAAe,IAAI,sCAAW;AAAA,MAC5B,QAAQ,CAAC,gDAAgD;AAAA,MACzD,GAAG;AAAA,IACL,CAAC;AACD,kBAAc;AAAA,EAChB;AACA,SAAO;AACT;AAEA,eAAsB,kBAAkB,SAA6B;AACnE,QAAM,OAAO,QAAQ,WAAW,CAAC,CAAC;AAClC,QAAM,SAAS,MAAM,KAAK,UAAU;AACpC,QAAM,QAAQ,MAAM,OAAO,eAAe;AAC1C,UAAO,+BAAO,UAAS;AACzB;;;ACrBA,sBAIO;AACP,4BAKO;AACP,sBAIO;AAmDA,SAAS,sBACd,UAAiD,CAAC,GACnB;AApEjC;AAqEE,QAAM,eAAW,2CAAoB;AAAA,IACnC,cAAc,QAAQ;AAAA,IACtB,yBAAyB;AAAA,EAC3B,CAAC;AACD,QAAM,cAAU,2CAAoB;AAAA,IAClC,cAAc,QAAQ;AAAA,IACtB,yBAAyB;AAAA,EAC3B,CAAC;AACD,QAAM,WACJ,qDAAqB,QAAQ,OAAO,MAApC,YACA,WAAW,QAAQ,0CAA0C,OAAO,cAAc,QAAQ;AAE5F,QAAM,kBAAkB,CAAC,YAA+C;AAjF1E,QAAAC;AAkFI,eAAI,+CAA+B,SAAS;AAAA,MAC1C,UAAU;AAAA,MACV;AAAA,MACA,UAASA,MAAA,QAAQ,YAAR,OAAAA,MAAmB,CAAC;AAAA,MAC7B,OAAO,QAAQ;AAAA,MAEf,iBAAiB,CAACC,UAAS,gBACzB,GAAGA,QAAO,IAAI,OAAO,IACnB,cAAc,qBAAqB,YACrC;AAAA,MACF,sBAAsB,UAAQ;AAE5B,cAAM,EAAE,OAAO,GAAG,KAAK,IAAI;AAC3B,eAAO;AAAA,UACL,GAAG;AAAA,UACH,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,IACF,CAAC;AAAA;AAEH,QAAM,WAAW,SAAU,SAA+C;AACxE,QAAI,YAAY;AACd,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,gBAAgB,OAAO;AAAA,EAChC;AAEA,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,WAAW;AAEpB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,WAAS,QAAQ;AAEjB,SAAO;AACT;;;AFxGO,SAASC,uBACd,UAAiD,CAAC,GACnB;AAC/B,SAAO,sBAA8B;AAAA,IACnC,GAAG;AAAA,IACH,SAAS,aAAa;AAAA,MACpB,eAAe,UAAU,MAAM;AAAA,QAC7B,QAAQ;AAAA,MACV,CAAC;AAAA,MACD,GAAI,UAAM,gCAAQ,QAAQ,OAAO;AAAA,IACnC;AAAA,EACF,CAAC;AACH;AAKO,IAAM,kBAAkBA,uBAAsB;","names":["createVertexAnthropic","import_provider_utils","_a","baseURL","createVertexAnthropic"]}
|