@ai-sdk/google-vertex 3.0.0-canary.9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +753 -0
- package/README.md +2 -2
- package/anthropic/edge.d.ts +1 -0
- package/anthropic/index.d.ts +1 -0
- package/dist/anthropic/edge/index.d.mts +3 -5
- package/dist/anthropic/edge/index.d.ts +3 -5
- package/dist/anthropic/edge/index.js +20 -23
- package/dist/anthropic/edge/index.js.map +1 -1
- package/dist/anthropic/edge/index.mjs +20 -23
- package/dist/anthropic/edge/index.mjs.map +1 -1
- package/dist/anthropic/index.d.mts +3 -5
- package/dist/anthropic/index.d.ts +3 -5
- package/dist/anthropic/index.js +20 -23
- package/dist/anthropic/index.js.map +1 -1
- package/dist/anthropic/index.mjs +20 -23
- package/dist/anthropic/index.mjs.map +1 -1
- package/dist/edge/index.d.mts +7 -16
- package/dist/edge/index.d.ts +7 -16
- package/dist/edge/index.js +88 -63
- package/dist/edge/index.js.map +1 -1
- package/dist/edge/index.mjs +86 -60
- package/dist/edge/index.mjs.map +1 -1
- package/dist/index.d.mts +19 -31
- package/dist/index.d.ts +19 -31
- package/dist/index.js +88 -63
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +86 -60
- package/dist/index.mjs.map +1 -1
- package/edge.d.ts +1 -0
- package/package.json +16 -15
package/dist/index.js
CHANGED
@@ -50,21 +50,22 @@ async function generateAuthToken(options) {
|
|
50
50
|
}
|
51
51
|
|
52
52
|
// src/google-vertex-provider.ts
|
53
|
+
var import_internal = require("@ai-sdk/google/internal");
|
53
54
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
54
55
|
|
55
56
|
// src/google-vertex-embedding-model.ts
|
56
57
|
var import_provider = require("@ai-sdk/provider");
|
57
58
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
58
|
-
var
|
59
|
+
var import_v43 = require("zod/v4");
|
59
60
|
|
60
61
|
// src/google-vertex-error.ts
|
61
62
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
62
|
-
var
|
63
|
-
var googleVertexErrorDataSchema =
|
64
|
-
error:
|
65
|
-
code:
|
66
|
-
message:
|
67
|
-
status:
|
63
|
+
var import_v4 = require("zod/v4");
|
64
|
+
var googleVertexErrorDataSchema = import_v4.z.object({
|
65
|
+
error: import_v4.z.object({
|
66
|
+
code: import_v4.z.number().nullable(),
|
67
|
+
message: import_v4.z.string(),
|
68
|
+
status: import_v4.z.string()
|
68
69
|
})
|
69
70
|
});
|
70
71
|
var googleVertexFailedResponseHandler = (0, import_provider_utils.createJsonErrorResponseHandler)(
|
@@ -74,28 +75,40 @@ var googleVertexFailedResponseHandler = (0, import_provider_utils.createJsonErro
|
|
74
75
|
}
|
75
76
|
);
|
76
77
|
|
78
|
+
// src/google-vertex-embedding-options.ts
|
79
|
+
var import_v42 = require("zod/v4");
|
80
|
+
var googleVertexEmbeddingProviderOptions = import_v42.z.object({
|
81
|
+
/**
|
82
|
+
* Optional. Optional reduced dimension for the output embedding.
|
83
|
+
* If set, excessive values in the output embedding are truncated from the end.
|
84
|
+
*/
|
85
|
+
outputDimensionality: import_v42.z.number().optional()
|
86
|
+
});
|
87
|
+
|
77
88
|
// src/google-vertex-embedding-model.ts
|
78
89
|
var GoogleVertexEmbeddingModel = class {
|
79
|
-
constructor(modelId,
|
90
|
+
constructor(modelId, config) {
|
80
91
|
this.specificationVersion = "v2";
|
92
|
+
this.maxEmbeddingsPerCall = 2048;
|
93
|
+
this.supportsParallelCalls = true;
|
81
94
|
this.modelId = modelId;
|
82
|
-
this.settings = settings;
|
83
95
|
this.config = config;
|
84
96
|
}
|
85
97
|
get provider() {
|
86
98
|
return this.config.provider;
|
87
99
|
}
|
88
|
-
get maxEmbeddingsPerCall() {
|
89
|
-
return 2048;
|
90
|
-
}
|
91
|
-
get supportsParallelCalls() {
|
92
|
-
return true;
|
93
|
-
}
|
94
100
|
async doEmbed({
|
95
101
|
values,
|
96
102
|
headers,
|
97
|
-
abortSignal
|
103
|
+
abortSignal,
|
104
|
+
providerOptions
|
98
105
|
}) {
|
106
|
+
var _a;
|
107
|
+
const googleOptions = (_a = await (0, import_provider_utils2.parseProviderOptions)({
|
108
|
+
provider: "google",
|
109
|
+
providerOptions,
|
110
|
+
schema: googleVertexEmbeddingProviderOptions
|
111
|
+
})) != null ? _a : {};
|
99
112
|
if (values.length > this.maxEmbeddingsPerCall) {
|
100
113
|
throw new import_provider.TooManyEmbeddingValuesForCallError({
|
101
114
|
provider: this.provider,
|
@@ -119,7 +132,7 @@ var GoogleVertexEmbeddingModel = class {
|
|
119
132
|
body: {
|
120
133
|
instances: values.map((value) => ({ content: value })),
|
121
134
|
parameters: {
|
122
|
-
outputDimensionality:
|
135
|
+
outputDimensionality: googleOptions.outputDimensionality
|
123
136
|
}
|
124
137
|
},
|
125
138
|
failedResponseHandler: googleVertexFailedResponseHandler,
|
@@ -143,39 +156,33 @@ var GoogleVertexEmbeddingModel = class {
|
|
143
156
|
};
|
144
157
|
}
|
145
158
|
};
|
146
|
-
var googleVertexTextEmbeddingResponseSchema =
|
147
|
-
predictions:
|
148
|
-
|
149
|
-
embeddings:
|
150
|
-
values:
|
151
|
-
statistics:
|
152
|
-
token_count:
|
159
|
+
var googleVertexTextEmbeddingResponseSchema = import_v43.z.object({
|
160
|
+
predictions: import_v43.z.array(
|
161
|
+
import_v43.z.object({
|
162
|
+
embeddings: import_v43.z.object({
|
163
|
+
values: import_v43.z.array(import_v43.z.number()),
|
164
|
+
statistics: import_v43.z.object({
|
165
|
+
token_count: import_v43.z.number()
|
153
166
|
})
|
154
167
|
})
|
155
168
|
})
|
156
169
|
)
|
157
170
|
});
|
158
171
|
|
159
|
-
// src/google-vertex-provider.ts
|
160
|
-
var import_internal = require("@ai-sdk/google/internal");
|
161
|
-
|
162
172
|
// src/google-vertex-image-model.ts
|
163
173
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
164
|
-
var
|
174
|
+
var import_v44 = require("zod/v4");
|
165
175
|
var GoogleVertexImageModel = class {
|
166
|
-
constructor(modelId,
|
176
|
+
constructor(modelId, config) {
|
167
177
|
this.modelId = modelId;
|
168
|
-
this.settings = settings;
|
169
178
|
this.config = config;
|
170
|
-
this.specificationVersion = "
|
179
|
+
this.specificationVersion = "v2";
|
180
|
+
// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api#parameter_list
|
181
|
+
this.maxImagesPerCall = 4;
|
171
182
|
}
|
172
183
|
get provider() {
|
173
184
|
return this.config.provider;
|
174
185
|
}
|
175
|
-
get maxImagesPerCall() {
|
176
|
-
var _a;
|
177
|
-
return (_a = this.settings.maxImagesPerCall) != null ? _a : 4;
|
178
|
-
}
|
179
186
|
async doGenerate({
|
180
187
|
prompt,
|
181
188
|
n,
|
@@ -186,7 +193,7 @@ var GoogleVertexImageModel = class {
|
|
186
193
|
headers,
|
187
194
|
abortSignal
|
188
195
|
}) {
|
189
|
-
var _a, _b, _c, _d, _e;
|
196
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
190
197
|
const warnings = [];
|
191
198
|
if (size != null) {
|
192
199
|
warnings.push({
|
@@ -195,7 +202,7 @@ var GoogleVertexImageModel = class {
|
|
195
202
|
details: "This model does not support the `size` option. Use `aspectRatio` instead."
|
196
203
|
});
|
197
204
|
}
|
198
|
-
const vertexImageOptions = (0, import_provider_utils3.parseProviderOptions)({
|
205
|
+
const vertexImageOptions = await (0, import_provider_utils3.parseProviderOptions)({
|
199
206
|
provider: "vertex",
|
200
207
|
providerOptions,
|
201
208
|
schema: vertexImageProviderOptionsSchema
|
@@ -223,38 +230,52 @@ var GoogleVertexImageModel = class {
|
|
223
230
|
});
|
224
231
|
return {
|
225
232
|
images: (_e = (_d = response.predictions) == null ? void 0 : _d.map(
|
226
|
-
(
|
233
|
+
({ bytesBase64Encoded }) => bytesBase64Encoded
|
227
234
|
)) != null ? _e : [],
|
228
235
|
warnings,
|
229
236
|
response: {
|
230
237
|
timestamp: currentDate,
|
231
238
|
modelId: this.modelId,
|
232
239
|
headers: responseHeaders
|
240
|
+
},
|
241
|
+
providerMetadata: {
|
242
|
+
vertex: {
|
243
|
+
images: (_g = (_f = response.predictions) == null ? void 0 : _f.map((prediction) => {
|
244
|
+
const {
|
245
|
+
// normalize revised prompt property
|
246
|
+
prompt: revisedPrompt
|
247
|
+
} = prediction;
|
248
|
+
return {
|
249
|
+
revisedPrompt
|
250
|
+
};
|
251
|
+
})) != null ? _g : []
|
252
|
+
}
|
233
253
|
}
|
234
254
|
};
|
235
255
|
}
|
236
256
|
};
|
237
|
-
var vertexImageResponseSchema =
|
238
|
-
predictions:
|
257
|
+
var vertexImageResponseSchema = import_v44.z.object({
|
258
|
+
predictions: import_v44.z.array(
|
259
|
+
import_v44.z.object({
|
260
|
+
bytesBase64Encoded: import_v44.z.string(),
|
261
|
+
mimeType: import_v44.z.string(),
|
262
|
+
prompt: import_v44.z.string()
|
263
|
+
})
|
264
|
+
).nullish()
|
239
265
|
});
|
240
|
-
var vertexImageProviderOptionsSchema =
|
241
|
-
negativePrompt:
|
242
|
-
personGeneration:
|
243
|
-
safetySetting:
|
266
|
+
var vertexImageProviderOptionsSchema = import_v44.z.object({
|
267
|
+
negativePrompt: import_v44.z.string().nullish(),
|
268
|
+
personGeneration: import_v44.z.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
269
|
+
safetySetting: import_v44.z.enum([
|
244
270
|
"block_low_and_above",
|
245
271
|
"block_medium_and_above",
|
246
272
|
"block_only_high",
|
247
273
|
"block_none"
|
248
274
|
]).nullish(),
|
249
|
-
addWatermark:
|
250
|
-
storageUri:
|
275
|
+
addWatermark: import_v44.z.boolean().nullish(),
|
276
|
+
storageUri: import_v44.z.string().nullish()
|
251
277
|
});
|
252
278
|
|
253
|
-
// src/google-vertex-supported-file-url.ts
|
254
|
-
function isSupportedFileUrl(url) {
|
255
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
256
|
-
}
|
257
|
-
|
258
279
|
// src/google-vertex-provider.ts
|
259
280
|
function createVertex(options = {}) {
|
260
281
|
const loadVertexProject = () => (0, import_provider_utils4.loadSetting)({
|
@@ -273,7 +294,8 @@ function createVertex(options = {}) {
|
|
273
294
|
var _a;
|
274
295
|
const region = loadVertexLocation();
|
275
296
|
const project = loadVertexProject();
|
276
|
-
|
297
|
+
const baseHost = `${region === "global" ? "" : region + "-"}aiplatform.googleapis.com`;
|
298
|
+
return (_a = (0, import_provider_utils4.withoutTrailingSlash)(options.baseURL)) != null ? _a : `https://${baseHost}/v1/projects/${project}/locations/${region}/publishers/google`;
|
277
299
|
};
|
278
300
|
const createConfig = (name) => {
|
279
301
|
var _a;
|
@@ -284,27 +306,30 @@ function createVertex(options = {}) {
|
|
284
306
|
baseURL: loadBaseURL()
|
285
307
|
};
|
286
308
|
};
|
287
|
-
const createChatModel = (modelId
|
309
|
+
const createChatModel = (modelId) => {
|
288
310
|
var _a;
|
289
|
-
return new import_internal.GoogleGenerativeAILanguageModel(modelId,
|
311
|
+
return new import_internal.GoogleGenerativeAILanguageModel(modelId, {
|
290
312
|
...createConfig("chat"),
|
291
313
|
generateId: (_a = options.generateId) != null ? _a : import_provider_utils4.generateId,
|
292
|
-
|
314
|
+
supportedUrls: () => ({
|
315
|
+
"*": [
|
316
|
+
// HTTP URLs:
|
317
|
+
/^https?:\/\/.*$/,
|
318
|
+
// Google Cloud Storage URLs:
|
319
|
+
/^gs:\/\/.*$/
|
320
|
+
]
|
321
|
+
})
|
293
322
|
});
|
294
323
|
};
|
295
|
-
const createEmbeddingModel = (modelId
|
296
|
-
|
297
|
-
|
298
|
-
createConfig("embedding")
|
299
|
-
);
|
300
|
-
const createImageModel = (modelId, settings = {}) => new GoogleVertexImageModel(modelId, settings, createConfig("image"));
|
301
|
-
const provider = function(modelId, settings) {
|
324
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
325
|
+
const createImageModel = (modelId) => new GoogleVertexImageModel(modelId, createConfig("image"));
|
326
|
+
const provider = function(modelId) {
|
302
327
|
if (new.target) {
|
303
328
|
throw new Error(
|
304
329
|
"The Google Vertex AI model function cannot be called with the new keyword."
|
305
330
|
);
|
306
331
|
}
|
307
|
-
return createChatModel(modelId
|
332
|
+
return createChatModel(modelId);
|
308
333
|
};
|
309
334
|
provider.languageModel = createChatModel;
|
310
335
|
provider.textEmbeddingModel = createEmbeddingModel;
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/google-vertex-provider-node.ts","../src/google-vertex-auth-google-auth-library.ts","../src/google-vertex-provider.ts","../src/google-vertex-embedding-model.ts","../src/google-vertex-error.ts","../src/google-vertex-image-model.ts","../src/google-vertex-supported-file-url.ts"],"sourcesContent":["export type { GoogleVertexImageProviderOptions } from './google-vertex-image-model';\nexport { createVertex, vertex } from './google-vertex-provider-node';\nexport type {\n GoogleVertexProvider,\n GoogleVertexProviderSettings,\n} from './google-vertex-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 createVertex as createVertexOriginal,\n GoogleVertexProvider,\n GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,\n} from './google-vertex-provider';\n\nexport interface GoogleVertexProviderSettings\n extends GoogleVertexProviderSettingsOriginal {\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 type { GoogleVertexProvider };\n\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n return createVertexOriginal({\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 AI provider instance.\n */\nexport const vertex = createVertex();\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 { LanguageModelV2, ProviderV2, ImageModelV1 } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadSetting,\n Resolvable,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\nimport {\n GoogleVertexEmbeddingModelId,\n GoogleVertexEmbeddingSettings,\n} from './google-vertex-embedding-settings';\nimport { GoogleVertexEmbeddingModel } from './google-vertex-embedding-model';\nimport { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';\nimport { GoogleVertexImageModel } from './google-vertex-image-model';\nimport {\n GoogleVertexImageModelId,\n GoogleVertexImageSettings,\n} from './google-vertex-image-settings';\nimport { GoogleVertexConfig } from './google-vertex-config';\nimport { isSupportedFileUrl } from './google-vertex-supported-file-url';\n\nexport interface GoogleVertexProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): LanguageModelV2;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => LanguageModelV2;\n\n /**\n * Creates a model for image generation.\n */\n image(\n modelId: GoogleVertexImageModelId,\n settings?: GoogleVertexImageSettings,\n ): ImageModelV1;\n\n /**\nCreates a model for image generation.\n */\n imageModel(\n modelId: GoogleVertexImageModelId,\n settings?: GoogleVertexImageSettings,\n ): ImageModelV1;\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 = (\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings = {},\n ) => {\n return new GoogleGenerativeAILanguageModel(modelId, settings, {\n ...createConfig('chat'),\n generateId: options.generateId ?? generateId,\n isSupportedUrl: isSupportedFileUrl,\n });\n };\n\n const createEmbeddingModel = (\n modelId: GoogleVertexEmbeddingModelId,\n settings: GoogleVertexEmbeddingSettings = {},\n ) =>\n new GoogleVertexEmbeddingModel(\n modelId,\n settings,\n createConfig('embedding'),\n );\n\n const createImageModel = (\n modelId: GoogleVertexImageModelId,\n settings: GoogleVertexImageSettings = {},\n ) => new GoogleVertexImageModel(modelId, settings, createConfig('image'));\n\n const provider = function (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) {\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, settings);\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} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n GoogleVertexEmbeddingModelId,\n GoogleVertexEmbeddingSettings,\n} from './google-vertex-embedding-settings';\nimport { GoogleVertexConfig } from './google-vertex-config';\n\nexport class GoogleVertexEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: GoogleVertexEmbeddingModelId;\n\n private readonly config: GoogleVertexConfig;\n private readonly settings: GoogleVertexEmbeddingSettings;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return 2048;\n }\n\n get supportsParallelCalls(): boolean {\n return true;\n }\n\n constructor(\n modelId: GoogleVertexEmbeddingModelId,\n settings: GoogleVertexEmbeddingSettings,\n config: GoogleVertexConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\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: this.settings.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 { ImageModelV1, ImageModelV1CallWarning } 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 {\n GoogleVertexImageModelId,\n GoogleVertexImageSettings,\n} 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 ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n // https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api#parameter_list\n return this.settings.maxImagesPerCall ?? 4;\n }\n\n constructor(\n readonly modelId: GoogleVertexImageModelId,\n readonly settings: GoogleVertexImageSettings,\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<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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 = 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 (p: { bytesBase64Encoded: string }) => p.bytesBase64Encoded,\n ) ?? [],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\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.array(z.object({ bytesBase64Encoded: z.string() })).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","// https://firebase.google.com/docs/vertex-ai/input-file-requirements\n// The definition of supported file URLs reduces to a simple protocol check as\n// any publicly accessible file can be used as input.\nexport function isSupportedFileUrl(url: URL) {\n return ['http:', 'https:', 'gs:'].includes(url.protocol);\n}\n"],"mappings":"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","names":["createVertex","import_provider_utils","import_provider_utils","import_provider_utils","import_zod","import_provider_utils","import_zod","createVertex"]}
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/google-vertex-provider-node.ts","../src/google-vertex-auth-google-auth-library.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"],"sourcesContent":["export type { GoogleVertexImageProviderOptions } from './google-vertex-image-model';\nexport { createVertex, vertex } from './google-vertex-provider-node';\nexport type {\n GoogleVertexProvider,\n GoogleVertexProviderSettings,\n} from './google-vertex-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 createVertex as createVertexOriginal,\n GoogleVertexProvider,\n GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,\n} from './google-vertex-provider';\n\nexport interface GoogleVertexProviderSettings\n extends GoogleVertexProviderSettingsOriginal {\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 type { GoogleVertexProvider };\n\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n return createVertexOriginal({\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 AI provider instance.\n */\nexport const vertex = createVertex();\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 { 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\n // For global region, use aiplatform.googleapis.com directly\n // For other regions, use region-aiplatform.googleapis.com\n const baseHost = `${region === 'global' ? '' : region + '-'}aiplatform.googleapis.com`;\n\n return (\n withoutTrailingSlash(options.baseURL) ??\n `https://${baseHost}/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/v4';\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/v4';\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/v4';\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/v4';\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"],"mappings":"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","names":["createVertex","import_provider_utils","import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","createVertex"]}
|
package/dist/index.mjs
CHANGED
@@ -23,6 +23,7 @@ async function generateAuthToken(options) {
|
|
23
23
|
}
|
24
24
|
|
25
25
|
// src/google-vertex-provider.ts
|
26
|
+
import { GoogleGenerativeAILanguageModel } from "@ai-sdk/google/internal";
|
26
27
|
import {
|
27
28
|
generateId,
|
28
29
|
loadSetting,
|
@@ -37,13 +38,14 @@ import {
|
|
37
38
|
combineHeaders,
|
38
39
|
createJsonResponseHandler,
|
39
40
|
postJsonToApi,
|
40
|
-
resolve
|
41
|
+
resolve,
|
42
|
+
parseProviderOptions
|
41
43
|
} from "@ai-sdk/provider-utils";
|
42
|
-
import { z as
|
44
|
+
import { z as z3 } from "zod/v4";
|
43
45
|
|
44
46
|
// src/google-vertex-error.ts
|
45
47
|
import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
|
46
|
-
import { z } from "zod";
|
48
|
+
import { z } from "zod/v4";
|
47
49
|
var googleVertexErrorDataSchema = z.object({
|
48
50
|
error: z.object({
|
49
51
|
code: z.number().nullable(),
|
@@ -58,28 +60,40 @@ var googleVertexFailedResponseHandler = createJsonErrorResponseHandler(
|
|
58
60
|
}
|
59
61
|
);
|
60
62
|
|
63
|
+
// src/google-vertex-embedding-options.ts
|
64
|
+
import { z as z2 } from "zod/v4";
|
65
|
+
var googleVertexEmbeddingProviderOptions = z2.object({
|
66
|
+
/**
|
67
|
+
* Optional. Optional reduced dimension for the output embedding.
|
68
|
+
* If set, excessive values in the output embedding are truncated from the end.
|
69
|
+
*/
|
70
|
+
outputDimensionality: z2.number().optional()
|
71
|
+
});
|
72
|
+
|
61
73
|
// src/google-vertex-embedding-model.ts
|
62
74
|
var GoogleVertexEmbeddingModel = class {
|
63
|
-
constructor(modelId,
|
75
|
+
constructor(modelId, config) {
|
64
76
|
this.specificationVersion = "v2";
|
77
|
+
this.maxEmbeddingsPerCall = 2048;
|
78
|
+
this.supportsParallelCalls = true;
|
65
79
|
this.modelId = modelId;
|
66
|
-
this.settings = settings;
|
67
80
|
this.config = config;
|
68
81
|
}
|
69
82
|
get provider() {
|
70
83
|
return this.config.provider;
|
71
84
|
}
|
72
|
-
get maxEmbeddingsPerCall() {
|
73
|
-
return 2048;
|
74
|
-
}
|
75
|
-
get supportsParallelCalls() {
|
76
|
-
return true;
|
77
|
-
}
|
78
85
|
async doEmbed({
|
79
86
|
values,
|
80
87
|
headers,
|
81
|
-
abortSignal
|
88
|
+
abortSignal,
|
89
|
+
providerOptions
|
82
90
|
}) {
|
91
|
+
var _a;
|
92
|
+
const googleOptions = (_a = await parseProviderOptions({
|
93
|
+
provider: "google",
|
94
|
+
providerOptions,
|
95
|
+
schema: googleVertexEmbeddingProviderOptions
|
96
|
+
})) != null ? _a : {};
|
83
97
|
if (values.length > this.maxEmbeddingsPerCall) {
|
84
98
|
throw new TooManyEmbeddingValuesForCallError({
|
85
99
|
provider: this.provider,
|
@@ -103,7 +117,7 @@ var GoogleVertexEmbeddingModel = class {
|
|
103
117
|
body: {
|
104
118
|
instances: values.map((value) => ({ content: value })),
|
105
119
|
parameters: {
|
106
|
-
outputDimensionality:
|
120
|
+
outputDimensionality: googleOptions.outputDimensionality
|
107
121
|
}
|
108
122
|
},
|
109
123
|
failedResponseHandler: googleVertexFailedResponseHandler,
|
@@ -127,45 +141,39 @@ var GoogleVertexEmbeddingModel = class {
|
|
127
141
|
};
|
128
142
|
}
|
129
143
|
};
|
130
|
-
var googleVertexTextEmbeddingResponseSchema =
|
131
|
-
predictions:
|
132
|
-
|
133
|
-
embeddings:
|
134
|
-
values:
|
135
|
-
statistics:
|
136
|
-
token_count:
|
144
|
+
var googleVertexTextEmbeddingResponseSchema = z3.object({
|
145
|
+
predictions: z3.array(
|
146
|
+
z3.object({
|
147
|
+
embeddings: z3.object({
|
148
|
+
values: z3.array(z3.number()),
|
149
|
+
statistics: z3.object({
|
150
|
+
token_count: z3.number()
|
137
151
|
})
|
138
152
|
})
|
139
153
|
})
|
140
154
|
)
|
141
155
|
});
|
142
156
|
|
143
|
-
// src/google-vertex-provider.ts
|
144
|
-
import { GoogleGenerativeAILanguageModel } from "@ai-sdk/google/internal";
|
145
|
-
|
146
157
|
// src/google-vertex-image-model.ts
|
147
158
|
import {
|
148
159
|
combineHeaders as combineHeaders2,
|
149
160
|
createJsonResponseHandler as createJsonResponseHandler2,
|
150
|
-
parseProviderOptions,
|
161
|
+
parseProviderOptions as parseProviderOptions2,
|
151
162
|
postJsonToApi as postJsonToApi2,
|
152
163
|
resolve as resolve2
|
153
164
|
} from "@ai-sdk/provider-utils";
|
154
|
-
import { z as
|
165
|
+
import { z as z4 } from "zod/v4";
|
155
166
|
var GoogleVertexImageModel = class {
|
156
|
-
constructor(modelId,
|
167
|
+
constructor(modelId, config) {
|
157
168
|
this.modelId = modelId;
|
158
|
-
this.settings = settings;
|
159
169
|
this.config = config;
|
160
|
-
this.specificationVersion = "
|
170
|
+
this.specificationVersion = "v2";
|
171
|
+
// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api#parameter_list
|
172
|
+
this.maxImagesPerCall = 4;
|
161
173
|
}
|
162
174
|
get provider() {
|
163
175
|
return this.config.provider;
|
164
176
|
}
|
165
|
-
get maxImagesPerCall() {
|
166
|
-
var _a;
|
167
|
-
return (_a = this.settings.maxImagesPerCall) != null ? _a : 4;
|
168
|
-
}
|
169
177
|
async doGenerate({
|
170
178
|
prompt,
|
171
179
|
n,
|
@@ -176,7 +184,7 @@ var GoogleVertexImageModel = class {
|
|
176
184
|
headers,
|
177
185
|
abortSignal
|
178
186
|
}) {
|
179
|
-
var _a, _b, _c, _d, _e;
|
187
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
180
188
|
const warnings = [];
|
181
189
|
if (size != null) {
|
182
190
|
warnings.push({
|
@@ -185,7 +193,7 @@ var GoogleVertexImageModel = class {
|
|
185
193
|
details: "This model does not support the `size` option. Use `aspectRatio` instead."
|
186
194
|
});
|
187
195
|
}
|
188
|
-
const vertexImageOptions =
|
196
|
+
const vertexImageOptions = await parseProviderOptions2({
|
189
197
|
provider: "vertex",
|
190
198
|
providerOptions,
|
191
199
|
schema: vertexImageProviderOptionsSchema
|
@@ -213,38 +221,52 @@ var GoogleVertexImageModel = class {
|
|
213
221
|
});
|
214
222
|
return {
|
215
223
|
images: (_e = (_d = response.predictions) == null ? void 0 : _d.map(
|
216
|
-
(
|
224
|
+
({ bytesBase64Encoded }) => bytesBase64Encoded
|
217
225
|
)) != null ? _e : [],
|
218
226
|
warnings,
|
219
227
|
response: {
|
220
228
|
timestamp: currentDate,
|
221
229
|
modelId: this.modelId,
|
222
230
|
headers: responseHeaders
|
231
|
+
},
|
232
|
+
providerMetadata: {
|
233
|
+
vertex: {
|
234
|
+
images: (_g = (_f = response.predictions) == null ? void 0 : _f.map((prediction) => {
|
235
|
+
const {
|
236
|
+
// normalize revised prompt property
|
237
|
+
prompt: revisedPrompt
|
238
|
+
} = prediction;
|
239
|
+
return {
|
240
|
+
revisedPrompt
|
241
|
+
};
|
242
|
+
})) != null ? _g : []
|
243
|
+
}
|
223
244
|
}
|
224
245
|
};
|
225
246
|
}
|
226
247
|
};
|
227
|
-
var vertexImageResponseSchema =
|
228
|
-
predictions:
|
248
|
+
var vertexImageResponseSchema = z4.object({
|
249
|
+
predictions: z4.array(
|
250
|
+
z4.object({
|
251
|
+
bytesBase64Encoded: z4.string(),
|
252
|
+
mimeType: z4.string(),
|
253
|
+
prompt: z4.string()
|
254
|
+
})
|
255
|
+
).nullish()
|
229
256
|
});
|
230
|
-
var vertexImageProviderOptionsSchema =
|
231
|
-
negativePrompt:
|
232
|
-
personGeneration:
|
233
|
-
safetySetting:
|
257
|
+
var vertexImageProviderOptionsSchema = z4.object({
|
258
|
+
negativePrompt: z4.string().nullish(),
|
259
|
+
personGeneration: z4.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
260
|
+
safetySetting: z4.enum([
|
234
261
|
"block_low_and_above",
|
235
262
|
"block_medium_and_above",
|
236
263
|
"block_only_high",
|
237
264
|
"block_none"
|
238
265
|
]).nullish(),
|
239
|
-
addWatermark:
|
240
|
-
storageUri:
|
266
|
+
addWatermark: z4.boolean().nullish(),
|
267
|
+
storageUri: z4.string().nullish()
|
241
268
|
});
|
242
269
|
|
243
|
-
// src/google-vertex-supported-file-url.ts
|
244
|
-
function isSupportedFileUrl(url) {
|
245
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
246
|
-
}
|
247
|
-
|
248
270
|
// src/google-vertex-provider.ts
|
249
271
|
function createVertex(options = {}) {
|
250
272
|
const loadVertexProject = () => loadSetting({
|
@@ -263,7 +285,8 @@ function createVertex(options = {}) {
|
|
263
285
|
var _a;
|
264
286
|
const region = loadVertexLocation();
|
265
287
|
const project = loadVertexProject();
|
266
|
-
|
288
|
+
const baseHost = `${region === "global" ? "" : region + "-"}aiplatform.googleapis.com`;
|
289
|
+
return (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : `https://${baseHost}/v1/projects/${project}/locations/${region}/publishers/google`;
|
267
290
|
};
|
268
291
|
const createConfig = (name) => {
|
269
292
|
var _a;
|
@@ -274,27 +297,30 @@ function createVertex(options = {}) {
|
|
274
297
|
baseURL: loadBaseURL()
|
275
298
|
};
|
276
299
|
};
|
277
|
-
const createChatModel = (modelId
|
300
|
+
const createChatModel = (modelId) => {
|
278
301
|
var _a;
|
279
|
-
return new GoogleGenerativeAILanguageModel(modelId,
|
302
|
+
return new GoogleGenerativeAILanguageModel(modelId, {
|
280
303
|
...createConfig("chat"),
|
281
304
|
generateId: (_a = options.generateId) != null ? _a : generateId,
|
282
|
-
|
305
|
+
supportedUrls: () => ({
|
306
|
+
"*": [
|
307
|
+
// HTTP URLs:
|
308
|
+
/^https?:\/\/.*$/,
|
309
|
+
// Google Cloud Storage URLs:
|
310
|
+
/^gs:\/\/.*$/
|
311
|
+
]
|
312
|
+
})
|
283
313
|
});
|
284
314
|
};
|
285
|
-
const createEmbeddingModel = (modelId
|
286
|
-
|
287
|
-
|
288
|
-
createConfig("embedding")
|
289
|
-
);
|
290
|
-
const createImageModel = (modelId, settings = {}) => new GoogleVertexImageModel(modelId, settings, createConfig("image"));
|
291
|
-
const provider = function(modelId, settings) {
|
315
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
316
|
+
const createImageModel = (modelId) => new GoogleVertexImageModel(modelId, createConfig("image"));
|
317
|
+
const provider = function(modelId) {
|
292
318
|
if (new.target) {
|
293
319
|
throw new Error(
|
294
320
|
"The Google Vertex AI model function cannot be called with the new keyword."
|
295
321
|
);
|
296
322
|
}
|
297
|
-
return createChatModel(modelId
|
323
|
+
return createChatModel(modelId);
|
298
324
|
};
|
299
325
|
provider.languageModel = createChatModel;
|
300
326
|
provider.textEmbeddingModel = createEmbeddingModel;
|