@ai-sdk/google-vertex 2.2.24 → 3.0.0-alpha.10
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 +329 -68
- package/README.md +1 -1
- package/anthropic/edge.d.ts +1 -0
- package/anthropic/index.d.ts +1 -0
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.mts +5 -7
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.ts +5 -7
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.js +22 -22
- package/dist/anthropic/edge/index.js.map +1 -0
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.mjs +22 -22
- package/dist/anthropic/edge/index.mjs.map +1 -0
- package/{anthropic/dist → dist/anthropic}/index.d.mts +5 -7
- package/{anthropic/dist → dist/anthropic}/index.d.ts +5 -7
- package/{anthropic/dist → dist/anthropic}/index.js +22 -22
- package/dist/anthropic/index.js.map +1 -0
- package/{anthropic/dist → dist/anthropic}/index.mjs +22 -22
- package/dist/anthropic/index.mjs.map +1 -0
- package/{edge/dist → dist/edge}/index.d.mts +8 -17
- package/{edge/dist → dist/edge}/index.d.ts +8 -17
- package/{edge/dist → dist/edge}/index.js +87 -59
- package/dist/edge/index.js.map +1 -0
- package/{edge/dist → dist/edge}/index.mjs +90 -61
- 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 +87 -59
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +90 -61
- package/dist/index.mjs.map +1 -1
- package/edge.d.ts +1 -0
- package/package.json +29 -28
- 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
@@ -29,12 +29,13 @@ module.exports = __toCommonJS(edge_exports);
|
|
29
29
|
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
30
30
|
|
31
31
|
// src/google-vertex-provider.ts
|
32
|
+
var import_internal = require("@ai-sdk/google/internal");
|
32
33
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
33
34
|
|
34
35
|
// src/google-vertex-embedding-model.ts
|
35
36
|
var import_provider = require("@ai-sdk/provider");
|
36
37
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
37
|
-
var
|
38
|
+
var import_zod3 = require("zod");
|
38
39
|
|
39
40
|
// src/google-vertex-error.ts
|
40
41
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
@@ -53,28 +54,40 @@ var googleVertexFailedResponseHandler = (0, import_provider_utils.createJsonErro
|
|
53
54
|
}
|
54
55
|
);
|
55
56
|
|
57
|
+
// src/google-vertex-embedding-options.ts
|
58
|
+
var import_zod2 = require("zod");
|
59
|
+
var googleVertexEmbeddingProviderOptions = import_zod2.z.object({
|
60
|
+
/**
|
61
|
+
* Optional. Optional reduced dimension for the output embedding.
|
62
|
+
* If set, excessive values in the output embedding are truncated from the end.
|
63
|
+
*/
|
64
|
+
outputDimensionality: import_zod2.z.number().optional()
|
65
|
+
});
|
66
|
+
|
56
67
|
// src/google-vertex-embedding-model.ts
|
57
68
|
var GoogleVertexEmbeddingModel = class {
|
58
|
-
constructor(modelId,
|
59
|
-
this.specificationVersion = "
|
69
|
+
constructor(modelId, config) {
|
70
|
+
this.specificationVersion = "v2";
|
71
|
+
this.maxEmbeddingsPerCall = 2048;
|
72
|
+
this.supportsParallelCalls = true;
|
60
73
|
this.modelId = modelId;
|
61
|
-
this.settings = settings;
|
62
74
|
this.config = config;
|
63
75
|
}
|
64
76
|
get provider() {
|
65
77
|
return this.config.provider;
|
66
78
|
}
|
67
|
-
get maxEmbeddingsPerCall() {
|
68
|
-
return 2048;
|
69
|
-
}
|
70
|
-
get supportsParallelCalls() {
|
71
|
-
return true;
|
72
|
-
}
|
73
79
|
async doEmbed({
|
74
80
|
values,
|
75
81
|
headers,
|
76
|
-
abortSignal
|
82
|
+
abortSignal,
|
83
|
+
providerOptions
|
77
84
|
}) {
|
85
|
+
var _a;
|
86
|
+
const googleOptions = (_a = await (0, import_provider_utils2.parseProviderOptions)({
|
87
|
+
provider: "google",
|
88
|
+
providerOptions,
|
89
|
+
schema: googleVertexEmbeddingProviderOptions
|
90
|
+
})) != null ? _a : {};
|
78
91
|
if (values.length > this.maxEmbeddingsPerCall) {
|
79
92
|
throw new import_provider.TooManyEmbeddingValuesForCallError({
|
80
93
|
provider: this.provider,
|
@@ -88,13 +101,17 @@ var GoogleVertexEmbeddingModel = class {
|
|
88
101
|
headers
|
89
102
|
);
|
90
103
|
const url = `${this.config.baseURL}/models/${this.modelId}:predict`;
|
91
|
-
const {
|
104
|
+
const {
|
105
|
+
responseHeaders,
|
106
|
+
value: response,
|
107
|
+
rawValue
|
108
|
+
} = await (0, import_provider_utils2.postJsonToApi)({
|
92
109
|
url,
|
93
110
|
headers: mergedHeaders,
|
94
111
|
body: {
|
95
112
|
instances: values.map((value) => ({ content: value })),
|
96
113
|
parameters: {
|
97
|
-
outputDimensionality:
|
114
|
+
outputDimensionality: googleOptions.outputDimensionality
|
98
115
|
}
|
99
116
|
},
|
100
117
|
failedResponseHandler: googleVertexFailedResponseHandler,
|
@@ -114,43 +131,37 @@ var GoogleVertexEmbeddingModel = class {
|
|
114
131
|
0
|
115
132
|
)
|
116
133
|
},
|
117
|
-
|
134
|
+
response: { headers: responseHeaders, body: rawValue }
|
118
135
|
};
|
119
136
|
}
|
120
137
|
};
|
121
|
-
var googleVertexTextEmbeddingResponseSchema =
|
122
|
-
predictions:
|
123
|
-
|
124
|
-
embeddings:
|
125
|
-
values:
|
126
|
-
statistics:
|
127
|
-
token_count:
|
138
|
+
var googleVertexTextEmbeddingResponseSchema = import_zod3.z.object({
|
139
|
+
predictions: import_zod3.z.array(
|
140
|
+
import_zod3.z.object({
|
141
|
+
embeddings: import_zod3.z.object({
|
142
|
+
values: import_zod3.z.array(import_zod3.z.number()),
|
143
|
+
statistics: import_zod3.z.object({
|
144
|
+
token_count: import_zod3.z.number()
|
128
145
|
})
|
129
146
|
})
|
130
147
|
})
|
131
148
|
)
|
132
149
|
});
|
133
150
|
|
134
|
-
// src/google-vertex-provider.ts
|
135
|
-
var import_internal = require("@ai-sdk/google/internal");
|
136
|
-
|
137
151
|
// src/google-vertex-image-model.ts
|
138
152
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
139
|
-
var
|
153
|
+
var import_zod4 = require("zod");
|
140
154
|
var GoogleVertexImageModel = class {
|
141
|
-
constructor(modelId,
|
155
|
+
constructor(modelId, config) {
|
142
156
|
this.modelId = modelId;
|
143
|
-
this.settings = settings;
|
144
157
|
this.config = config;
|
145
|
-
this.specificationVersion = "
|
158
|
+
this.specificationVersion = "v2";
|
159
|
+
// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api#parameter_list
|
160
|
+
this.maxImagesPerCall = 4;
|
146
161
|
}
|
147
162
|
get provider() {
|
148
163
|
return this.config.provider;
|
149
164
|
}
|
150
|
-
get maxImagesPerCall() {
|
151
|
-
var _a;
|
152
|
-
return (_a = this.settings.maxImagesPerCall) != null ? _a : 4;
|
153
|
-
}
|
154
165
|
async doGenerate({
|
155
166
|
prompt,
|
156
167
|
n,
|
@@ -161,7 +172,7 @@ var GoogleVertexImageModel = class {
|
|
161
172
|
headers,
|
162
173
|
abortSignal
|
163
174
|
}) {
|
164
|
-
var _a, _b, _c, _d, _e;
|
175
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
165
176
|
const warnings = [];
|
166
177
|
if (size != null) {
|
167
178
|
warnings.push({
|
@@ -170,7 +181,7 @@ var GoogleVertexImageModel = class {
|
|
170
181
|
details: "This model does not support the `size` option. Use `aspectRatio` instead."
|
171
182
|
});
|
172
183
|
}
|
173
|
-
const vertexImageOptions = (0, import_provider_utils3.parseProviderOptions)({
|
184
|
+
const vertexImageOptions = await (0, import_provider_utils3.parseProviderOptions)({
|
174
185
|
provider: "vertex",
|
175
186
|
providerOptions,
|
176
187
|
schema: vertexImageProviderOptionsSchema
|
@@ -198,38 +209,52 @@ var GoogleVertexImageModel = class {
|
|
198
209
|
});
|
199
210
|
return {
|
200
211
|
images: (_e = (_d = response.predictions) == null ? void 0 : _d.map(
|
201
|
-
(
|
212
|
+
({ bytesBase64Encoded }) => bytesBase64Encoded
|
202
213
|
)) != null ? _e : [],
|
203
214
|
warnings,
|
204
215
|
response: {
|
205
216
|
timestamp: currentDate,
|
206
217
|
modelId: this.modelId,
|
207
218
|
headers: responseHeaders
|
219
|
+
},
|
220
|
+
providerMetadata: {
|
221
|
+
vertex: {
|
222
|
+
images: (_g = (_f = response.predictions) == null ? void 0 : _f.map((prediction) => {
|
223
|
+
const {
|
224
|
+
// normalize revised prompt property
|
225
|
+
prompt: revisedPrompt
|
226
|
+
} = prediction;
|
227
|
+
return {
|
228
|
+
revisedPrompt
|
229
|
+
};
|
230
|
+
})) != null ? _g : []
|
231
|
+
}
|
208
232
|
}
|
209
233
|
};
|
210
234
|
}
|
211
235
|
};
|
212
|
-
var vertexImageResponseSchema =
|
213
|
-
predictions:
|
236
|
+
var vertexImageResponseSchema = import_zod4.z.object({
|
237
|
+
predictions: import_zod4.z.array(
|
238
|
+
import_zod4.z.object({
|
239
|
+
bytesBase64Encoded: import_zod4.z.string(),
|
240
|
+
mimeType: import_zod4.z.string(),
|
241
|
+
prompt: import_zod4.z.string()
|
242
|
+
})
|
243
|
+
).nullish()
|
214
244
|
});
|
215
|
-
var vertexImageProviderOptionsSchema =
|
216
|
-
negativePrompt:
|
217
|
-
personGeneration:
|
218
|
-
safetySetting:
|
245
|
+
var vertexImageProviderOptionsSchema = import_zod4.z.object({
|
246
|
+
negativePrompt: import_zod4.z.string().nullish(),
|
247
|
+
personGeneration: import_zod4.z.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
248
|
+
safetySetting: import_zod4.z.enum([
|
219
249
|
"block_low_and_above",
|
220
250
|
"block_medium_and_above",
|
221
251
|
"block_only_high",
|
222
252
|
"block_none"
|
223
253
|
]).nullish(),
|
224
|
-
addWatermark:
|
225
|
-
storageUri:
|
254
|
+
addWatermark: import_zod4.z.boolean().nullish(),
|
255
|
+
storageUri: import_zod4.z.string().nullish()
|
226
256
|
});
|
227
257
|
|
228
|
-
// src/google-vertex-supported-file-url.ts
|
229
|
-
function isSupportedFileUrl(url) {
|
230
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
231
|
-
}
|
232
|
-
|
233
258
|
// src/google-vertex-provider.ts
|
234
259
|
function createVertex(options = {}) {
|
235
260
|
const loadVertexProject = () => (0, import_provider_utils4.loadSetting)({
|
@@ -259,27 +284,30 @@ function createVertex(options = {}) {
|
|
259
284
|
baseURL: loadBaseURL()
|
260
285
|
};
|
261
286
|
};
|
262
|
-
const createChatModel = (modelId
|
287
|
+
const createChatModel = (modelId) => {
|
263
288
|
var _a;
|
264
|
-
return new import_internal.GoogleGenerativeAILanguageModel(modelId,
|
289
|
+
return new import_internal.GoogleGenerativeAILanguageModel(modelId, {
|
265
290
|
...createConfig("chat"),
|
266
291
|
generateId: (_a = options.generateId) != null ? _a : import_provider_utils4.generateId,
|
267
|
-
|
292
|
+
supportedUrls: () => ({
|
293
|
+
"*": [
|
294
|
+
// HTTP URLs:
|
295
|
+
/^https?:\/\/.*$/,
|
296
|
+
// Google Cloud Storage URLs:
|
297
|
+
/^gs:\/\/.*$/
|
298
|
+
]
|
299
|
+
})
|
268
300
|
});
|
269
301
|
};
|
270
|
-
const createEmbeddingModel = (modelId
|
271
|
-
|
272
|
-
|
273
|
-
createConfig("embedding")
|
274
|
-
);
|
275
|
-
const createImageModel = (modelId, settings = {}) => new GoogleVertexImageModel(modelId, settings, createConfig("image"));
|
276
|
-
const provider = function(modelId, settings) {
|
302
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
303
|
+
const createImageModel = (modelId) => new GoogleVertexImageModel(modelId, createConfig("image"));
|
304
|
+
const provider = function(modelId) {
|
277
305
|
if (new.target) {
|
278
306
|
throw new Error(
|
279
307
|
"The Google Vertex AI model function cannot be called with the new keyword."
|
280
308
|
);
|
281
309
|
}
|
282
|
-
return createChatModel(modelId
|
310
|
+
return createChatModel(modelId);
|
283
311
|
};
|
284
312
|
provider.languageModel = createChatModel;
|
285
313
|
provider.textEmbeddingModel = createEmbeddingModel;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/edge/index.ts","../../src/edge/google-vertex-provider-edge.ts","../../src/google-vertex-provider.ts","../../src/google-vertex-embedding-model.ts","../../src/google-vertex-error.ts","../../src/google-vertex-embedding-options.ts","../../src/google-vertex-image-model.ts","../../src/edge/google-vertex-auth-edge.ts"],"sourcesContent":["export { createVertex, vertex } from './google-vertex-provider-edge';\nexport type {\n GoogleVertexProviderSettings,\n GoogleVertexProvider,\n} from './google-vertex-provider-edge';\n","import { resolve } from '@ai-sdk/provider-utils';\nimport {\n createVertex as createVertexOriginal,\n GoogleVertexProvider,\n GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,\n} from '../google-vertex-provider';\nimport {\n generateAuthToken,\n GoogleCredentials,\n} from './google-vertex-auth-edge';\n\nexport type { GoogleVertexProvider };\n\nexport interface GoogleVertexProviderSettings\n extends GoogleVertexProviderSettingsOriginal {\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 createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n return createVertexOriginal({\n ...options,\n headers: async () => ({\n Authorization: `Bearer ${await generateAuthToken(\n options.googleCredentials,\n )}`,\n ...(await resolve(options.headers)),\n }),\n });\n}\n\n/**\nDefault Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n","import { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';\nimport { ImageModelV2, LanguageModelV2, ProviderV2 } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadSetting,\n Resolvable,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { GoogleVertexConfig } from './google-vertex-config';\nimport { GoogleVertexEmbeddingModel } from './google-vertex-embedding-model';\nimport { GoogleVertexEmbeddingModelId } from './google-vertex-embedding-options';\nimport { GoogleVertexImageModel } from './google-vertex-image-model';\nimport { GoogleVertexImageModelId } from './google-vertex-image-settings';\nimport { GoogleVertexModelId } from './google-vertex-options';\n\nexport interface GoogleVertexProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n */\n (modelId: GoogleVertexModelId): LanguageModelV2;\n\n languageModel: (modelId: GoogleVertexModelId) => LanguageModelV2;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: GoogleVertexImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: GoogleVertexImageModelId): ImageModelV2;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\nYour Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\nYour Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: string;\n\n /**\n * Headers to use for requests. Can be:\n * - A headers object\n * - A Promise that resolves to a headers object\n * - A function that returns a headers object\n * - A function that returns a Promise of a headers object\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 // for testing\n generateId?: () => string;\n\n /**\nBase URL for the Google Vertex API calls.\n */\n baseURL?: string;\n}\n\n/**\nCreate a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const loadVertexProject = () =>\n loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n });\n\n const loadVertexLocation = () =>\n loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n });\n\n const loadBaseURL = () => {\n const region = loadVertexLocation();\n const project = loadVertexProject();\n return (\n withoutTrailingSlash(options.baseURL) ??\n `https://${region}-aiplatform.googleapis.com/v1/projects/${project}/locations/${region}/publishers/google`\n );\n };\n\n const createConfig = (name: string): GoogleVertexConfig => {\n return {\n provider: `google.vertex.${name}`,\n headers: options.headers ?? {},\n fetch: options.fetch,\n baseURL: loadBaseURL(),\n };\n };\n\n const createChatModel = (modelId: GoogleVertexModelId) => {\n return new GoogleGenerativeAILanguageModel(modelId, {\n ...createConfig('chat'),\n generateId: options.generateId ?? generateId,\n supportedUrls: () => ({\n '*': [\n // HTTP URLs:\n /^https?:\\/\\/.*$/,\n // Google Cloud Storage URLs:\n /^gs:\\/\\/.*$/,\n ],\n }),\n });\n };\n\n const createEmbeddingModel = (modelId: GoogleVertexEmbeddingModelId) =>\n new GoogleVertexEmbeddingModel(modelId, createConfig('embedding'));\n\n const createImageModel = (modelId: GoogleVertexImageModelId) =>\n new GoogleVertexImageModel(modelId, createConfig('image'));\n\n const provider = function (modelId: GoogleVertexModelId) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n Resolvable,\n parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n GoogleVertexEmbeddingModelId,\n googleVertexEmbeddingProviderOptions,\n} from './google-vertex-embedding-options';\nimport { GoogleVertexConfig } from './google-vertex-config';\n\nexport class GoogleVertexEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: GoogleVertexEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: GoogleVertexConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n modelId: GoogleVertexEmbeddingModelId,\n config: GoogleVertexConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n // Parse provider options\n const googleOptions =\n (await parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleVertexEmbeddingProviderOptions,\n })) ?? {};\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n const url = `${this.config.baseURL}/models/${this.modelId}:predict`;\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url,\n headers: mergedHeaders,\n body: {\n instances: values.map(value => ({ content: value })),\n parameters: {\n outputDimensionality: googleOptions.outputDimensionality,\n },\n },\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.predictions.map(\n prediction => prediction.embeddings.values,\n ),\n usage: {\n tokens: response.predictions.reduce(\n (tokenCount, prediction) =>\n tokenCount + prediction.embeddings.statistics.token_count,\n 0,\n ),\n },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst googleVertexTextEmbeddingResponseSchema = z.object({\n predictions: z.array(\n z.object({\n embeddings: z.object({\n values: z.array(z.number()),\n statistics: z.object({\n token_count: z.number(),\n }),\n }),\n }),\n ),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst googleVertexErrorDataSchema = z.object({\n error: z.object({\n code: z.number().nullable(),\n message: z.string(),\n status: z.string(),\n }),\n});\n\nexport type GoogleVertexErrorData = z.infer<typeof googleVertexErrorDataSchema>;\n\nexport const googleVertexFailedResponseHandler = createJsonErrorResponseHandler(\n {\n errorSchema: googleVertexErrorDataSchema,\n errorToMessage: data => data.error.message,\n },\n);\n","import { z } from 'zod';\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api\nexport type GoogleVertexEmbeddingModelId =\n | 'textembedding-gecko'\n | 'textembedding-gecko@001'\n | 'textembedding-gecko@003'\n | 'textembedding-gecko-multilingual'\n | 'textembedding-gecko-multilingual@001'\n | 'text-multilingual-embedding-002'\n | 'text-embedding-004'\n | 'text-embedding-005'\n | (string & {});\n\nexport const googleVertexEmbeddingProviderOptions = z.object({\n /**\n * Optional. Optional reduced dimension for the output embedding.\n * If set, excessive values in the output embedding are truncated from the end.\n */\n outputDimensionality: z.number().optional(),\n});\n\nexport type GoogleVertexEmbeddingProviderOptions = z.infer<\n typeof googleVertexEmbeddingProviderOptions\n>;\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n Resolvable,\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport { GoogleVertexImageModelId } from './google-vertex-image-settings';\n\ninterface GoogleVertexImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: typeof fetch;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/image/generate-images\nexport class GoogleVertexImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n // https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api#parameter_list\n readonly maxImagesPerCall = 4;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GoogleVertexImageModelId,\n private config: GoogleVertexImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n const vertexImageOptions = await parseProviderOptions({\n provider: 'vertex',\n providerOptions,\n schema: vertexImageProviderOptionsSchema,\n });\n\n const body = {\n instances: [{ prompt }],\n parameters: {\n sampleCount: n,\n ...(aspectRatio != null ? { aspectRatio } : {}),\n ...(seed != null ? { seed } : {}),\n ...(vertexImageOptions ?? {}),\n },\n };\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:predict`,\n headers: combineHeaders(await resolve(this.config.headers), headers),\n body,\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n vertexImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images:\n response.predictions?.map(\n ({ bytesBase64Encoded }) => bytesBase64Encoded,\n ) ?? [],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n vertex: {\n images:\n response.predictions?.map(prediction => {\n const {\n // normalize revised prompt property\n prompt: revisedPrompt,\n } = prediction;\n\n return {\n revisedPrompt,\n };\n }) ?? [],\n },\n },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst vertexImageResponseSchema = z.object({\n predictions: z\n .array(\n z.object({\n bytesBase64Encoded: z.string(),\n mimeType: z.string(),\n prompt: z.string(),\n }),\n )\n .nullish(),\n});\n\nconst vertexImageProviderOptionsSchema = z.object({\n negativePrompt: z.string().nullish(),\n personGeneration: z\n .enum(['dont_allow', 'allow_adult', 'allow_all'])\n .nullish(),\n safetySetting: z\n .enum([\n 'block_low_and_above',\n 'block_medium_and_above',\n 'block_only_high',\n 'block_none',\n ])\n .nullish(),\n addWatermark: z.boolean().nullish(),\n storageUri: z.string().nullish(),\n});\nexport type GoogleVertexImageProviderOptions = z.infer<\n typeof vertexImageProviderOptionsSchema\n>;\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"],"mappings":"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","names":["createVertex","import_provider_utils","import_provider_utils","import_provider_utils","import_zod","import_zod","import_provider_utils","import_zod","import_provider_utils","createVertex"]}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
import { resolve as resolve3 } from "@ai-sdk/provider-utils";
|
3
3
|
|
4
4
|
// src/google-vertex-provider.ts
|
5
|
+
import { GoogleGenerativeAILanguageModel } from "@ai-sdk/google/internal";
|
5
6
|
import {
|
6
7
|
generateId,
|
7
8
|
loadSetting,
|
@@ -16,9 +17,10 @@ import {
|
|
16
17
|
combineHeaders,
|
17
18
|
createJsonResponseHandler,
|
18
19
|
postJsonToApi,
|
19
|
-
resolve
|
20
|
+
resolve,
|
21
|
+
parseProviderOptions
|
20
22
|
} from "@ai-sdk/provider-utils";
|
21
|
-
import { z as
|
23
|
+
import { z as z3 } from "zod";
|
22
24
|
|
23
25
|
// src/google-vertex-error.ts
|
24
26
|
import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
|
@@ -37,28 +39,40 @@ var googleVertexFailedResponseHandler = createJsonErrorResponseHandler(
|
|
37
39
|
}
|
38
40
|
);
|
39
41
|
|
42
|
+
// src/google-vertex-embedding-options.ts
|
43
|
+
import { z as z2 } from "zod";
|
44
|
+
var googleVertexEmbeddingProviderOptions = z2.object({
|
45
|
+
/**
|
46
|
+
* Optional. Optional reduced dimension for the output embedding.
|
47
|
+
* If set, excessive values in the output embedding are truncated from the end.
|
48
|
+
*/
|
49
|
+
outputDimensionality: z2.number().optional()
|
50
|
+
});
|
51
|
+
|
40
52
|
// src/google-vertex-embedding-model.ts
|
41
53
|
var GoogleVertexEmbeddingModel = class {
|
42
|
-
constructor(modelId,
|
43
|
-
this.specificationVersion = "
|
54
|
+
constructor(modelId, config) {
|
55
|
+
this.specificationVersion = "v2";
|
56
|
+
this.maxEmbeddingsPerCall = 2048;
|
57
|
+
this.supportsParallelCalls = true;
|
44
58
|
this.modelId = modelId;
|
45
|
-
this.settings = settings;
|
46
59
|
this.config = config;
|
47
60
|
}
|
48
61
|
get provider() {
|
49
62
|
return this.config.provider;
|
50
63
|
}
|
51
|
-
get maxEmbeddingsPerCall() {
|
52
|
-
return 2048;
|
53
|
-
}
|
54
|
-
get supportsParallelCalls() {
|
55
|
-
return true;
|
56
|
-
}
|
57
64
|
async doEmbed({
|
58
65
|
values,
|
59
66
|
headers,
|
60
|
-
abortSignal
|
67
|
+
abortSignal,
|
68
|
+
providerOptions
|
61
69
|
}) {
|
70
|
+
var _a;
|
71
|
+
const googleOptions = (_a = await parseProviderOptions({
|
72
|
+
provider: "google",
|
73
|
+
providerOptions,
|
74
|
+
schema: googleVertexEmbeddingProviderOptions
|
75
|
+
})) != null ? _a : {};
|
62
76
|
if (values.length > this.maxEmbeddingsPerCall) {
|
63
77
|
throw new TooManyEmbeddingValuesForCallError({
|
64
78
|
provider: this.provider,
|
@@ -72,13 +86,17 @@ var GoogleVertexEmbeddingModel = class {
|
|
72
86
|
headers
|
73
87
|
);
|
74
88
|
const url = `${this.config.baseURL}/models/${this.modelId}:predict`;
|
75
|
-
const {
|
89
|
+
const {
|
90
|
+
responseHeaders,
|
91
|
+
value: response,
|
92
|
+
rawValue
|
93
|
+
} = await postJsonToApi({
|
76
94
|
url,
|
77
95
|
headers: mergedHeaders,
|
78
96
|
body: {
|
79
97
|
instances: values.map((value) => ({ content: value })),
|
80
98
|
parameters: {
|
81
|
-
outputDimensionality:
|
99
|
+
outputDimensionality: googleOptions.outputDimensionality
|
82
100
|
}
|
83
101
|
},
|
84
102
|
failedResponseHandler: googleVertexFailedResponseHandler,
|
@@ -98,49 +116,43 @@ var GoogleVertexEmbeddingModel = class {
|
|
98
116
|
0
|
99
117
|
)
|
100
118
|
},
|
101
|
-
|
119
|
+
response: { headers: responseHeaders, body: rawValue }
|
102
120
|
};
|
103
121
|
}
|
104
122
|
};
|
105
|
-
var googleVertexTextEmbeddingResponseSchema =
|
106
|
-
predictions:
|
107
|
-
|
108
|
-
embeddings:
|
109
|
-
values:
|
110
|
-
statistics:
|
111
|
-
token_count:
|
123
|
+
var googleVertexTextEmbeddingResponseSchema = z3.object({
|
124
|
+
predictions: z3.array(
|
125
|
+
z3.object({
|
126
|
+
embeddings: z3.object({
|
127
|
+
values: z3.array(z3.number()),
|
128
|
+
statistics: z3.object({
|
129
|
+
token_count: z3.number()
|
112
130
|
})
|
113
131
|
})
|
114
132
|
})
|
115
133
|
)
|
116
134
|
});
|
117
135
|
|
118
|
-
// src/google-vertex-provider.ts
|
119
|
-
import { GoogleGenerativeAILanguageModel } from "@ai-sdk/google/internal";
|
120
|
-
|
121
136
|
// src/google-vertex-image-model.ts
|
122
137
|
import {
|
123
138
|
combineHeaders as combineHeaders2,
|
124
139
|
createJsonResponseHandler as createJsonResponseHandler2,
|
125
|
-
parseProviderOptions,
|
140
|
+
parseProviderOptions as parseProviderOptions2,
|
126
141
|
postJsonToApi as postJsonToApi2,
|
127
142
|
resolve as resolve2
|
128
143
|
} from "@ai-sdk/provider-utils";
|
129
|
-
import { z as
|
144
|
+
import { z as z4 } from "zod";
|
130
145
|
var GoogleVertexImageModel = class {
|
131
|
-
constructor(modelId,
|
146
|
+
constructor(modelId, config) {
|
132
147
|
this.modelId = modelId;
|
133
|
-
this.settings = settings;
|
134
148
|
this.config = config;
|
135
|
-
this.specificationVersion = "
|
149
|
+
this.specificationVersion = "v2";
|
150
|
+
// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api#parameter_list
|
151
|
+
this.maxImagesPerCall = 4;
|
136
152
|
}
|
137
153
|
get provider() {
|
138
154
|
return this.config.provider;
|
139
155
|
}
|
140
|
-
get maxImagesPerCall() {
|
141
|
-
var _a;
|
142
|
-
return (_a = this.settings.maxImagesPerCall) != null ? _a : 4;
|
143
|
-
}
|
144
156
|
async doGenerate({
|
145
157
|
prompt,
|
146
158
|
n,
|
@@ -151,7 +163,7 @@ var GoogleVertexImageModel = class {
|
|
151
163
|
headers,
|
152
164
|
abortSignal
|
153
165
|
}) {
|
154
|
-
var _a, _b, _c, _d, _e;
|
166
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
155
167
|
const warnings = [];
|
156
168
|
if (size != null) {
|
157
169
|
warnings.push({
|
@@ -160,7 +172,7 @@ var GoogleVertexImageModel = class {
|
|
160
172
|
details: "This model does not support the `size` option. Use `aspectRatio` instead."
|
161
173
|
});
|
162
174
|
}
|
163
|
-
const vertexImageOptions =
|
175
|
+
const vertexImageOptions = await parseProviderOptions2({
|
164
176
|
provider: "vertex",
|
165
177
|
providerOptions,
|
166
178
|
schema: vertexImageProviderOptionsSchema
|
@@ -188,38 +200,52 @@ var GoogleVertexImageModel = class {
|
|
188
200
|
});
|
189
201
|
return {
|
190
202
|
images: (_e = (_d = response.predictions) == null ? void 0 : _d.map(
|
191
|
-
(
|
203
|
+
({ bytesBase64Encoded }) => bytesBase64Encoded
|
192
204
|
)) != null ? _e : [],
|
193
205
|
warnings,
|
194
206
|
response: {
|
195
207
|
timestamp: currentDate,
|
196
208
|
modelId: this.modelId,
|
197
209
|
headers: responseHeaders
|
210
|
+
},
|
211
|
+
providerMetadata: {
|
212
|
+
vertex: {
|
213
|
+
images: (_g = (_f = response.predictions) == null ? void 0 : _f.map((prediction) => {
|
214
|
+
const {
|
215
|
+
// normalize revised prompt property
|
216
|
+
prompt: revisedPrompt
|
217
|
+
} = prediction;
|
218
|
+
return {
|
219
|
+
revisedPrompt
|
220
|
+
};
|
221
|
+
})) != null ? _g : []
|
222
|
+
}
|
198
223
|
}
|
199
224
|
};
|
200
225
|
}
|
201
226
|
};
|
202
|
-
var vertexImageResponseSchema =
|
203
|
-
predictions:
|
227
|
+
var vertexImageResponseSchema = z4.object({
|
228
|
+
predictions: z4.array(
|
229
|
+
z4.object({
|
230
|
+
bytesBase64Encoded: z4.string(),
|
231
|
+
mimeType: z4.string(),
|
232
|
+
prompt: z4.string()
|
233
|
+
})
|
234
|
+
).nullish()
|
204
235
|
});
|
205
|
-
var vertexImageProviderOptionsSchema =
|
206
|
-
negativePrompt:
|
207
|
-
personGeneration:
|
208
|
-
safetySetting:
|
236
|
+
var vertexImageProviderOptionsSchema = z4.object({
|
237
|
+
negativePrompt: z4.string().nullish(),
|
238
|
+
personGeneration: z4.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
239
|
+
safetySetting: z4.enum([
|
209
240
|
"block_low_and_above",
|
210
241
|
"block_medium_and_above",
|
211
242
|
"block_only_high",
|
212
243
|
"block_none"
|
213
244
|
]).nullish(),
|
214
|
-
addWatermark:
|
215
|
-
storageUri:
|
245
|
+
addWatermark: z4.boolean().nullish(),
|
246
|
+
storageUri: z4.string().nullish()
|
216
247
|
});
|
217
248
|
|
218
|
-
// src/google-vertex-supported-file-url.ts
|
219
|
-
function isSupportedFileUrl(url) {
|
220
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
221
|
-
}
|
222
|
-
|
223
249
|
// src/google-vertex-provider.ts
|
224
250
|
function createVertex(options = {}) {
|
225
251
|
const loadVertexProject = () => loadSetting({
|
@@ -249,27 +275,30 @@ function createVertex(options = {}) {
|
|
249
275
|
baseURL: loadBaseURL()
|
250
276
|
};
|
251
277
|
};
|
252
|
-
const createChatModel = (modelId
|
278
|
+
const createChatModel = (modelId) => {
|
253
279
|
var _a;
|
254
|
-
return new GoogleGenerativeAILanguageModel(modelId,
|
280
|
+
return new GoogleGenerativeAILanguageModel(modelId, {
|
255
281
|
...createConfig("chat"),
|
256
282
|
generateId: (_a = options.generateId) != null ? _a : generateId,
|
257
|
-
|
283
|
+
supportedUrls: () => ({
|
284
|
+
"*": [
|
285
|
+
// HTTP URLs:
|
286
|
+
/^https?:\/\/.*$/,
|
287
|
+
// Google Cloud Storage URLs:
|
288
|
+
/^gs:\/\/.*$/
|
289
|
+
]
|
290
|
+
})
|
258
291
|
});
|
259
292
|
};
|
260
|
-
const createEmbeddingModel = (modelId
|
261
|
-
|
262
|
-
|
263
|
-
createConfig("embedding")
|
264
|
-
);
|
265
|
-
const createImageModel = (modelId, settings = {}) => new GoogleVertexImageModel(modelId, settings, createConfig("image"));
|
266
|
-
const provider = function(modelId, settings) {
|
293
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
294
|
+
const createImageModel = (modelId) => new GoogleVertexImageModel(modelId, createConfig("image"));
|
295
|
+
const provider = function(modelId) {
|
267
296
|
if (new.target) {
|
268
297
|
throw new Error(
|
269
298
|
"The Google Vertex AI model function cannot be called with the new keyword."
|
270
299
|
);
|
271
300
|
}
|
272
|
-
return createChatModel(modelId
|
301
|
+
return createChatModel(modelId);
|
273
302
|
};
|
274
303
|
provider.languageModel = createChatModel;
|
275
304
|
provider.textEmbeddingModel = createEmbeddingModel;
|