@ai-sdk/google-vertex 3.0.0-canary.9 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +759 -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 +86 -63
- package/dist/edge/index.js.map +1 -1
- package/dist/edge/index.mjs +84 -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 +86 -63
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +84 -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,50 @@ 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 { ...revisedPrompt != null && { revisedPrompt } };
|
249
|
+
})) != null ? _g : []
|
250
|
+
}
|
233
251
|
}
|
234
252
|
};
|
235
253
|
}
|
236
254
|
};
|
237
|
-
var vertexImageResponseSchema =
|
238
|
-
predictions:
|
255
|
+
var vertexImageResponseSchema = import_v44.z.object({
|
256
|
+
predictions: import_v44.z.array(
|
257
|
+
import_v44.z.object({
|
258
|
+
bytesBase64Encoded: import_v44.z.string(),
|
259
|
+
mimeType: import_v44.z.string(),
|
260
|
+
prompt: import_v44.z.string().nullish()
|
261
|
+
})
|
262
|
+
).nullish()
|
239
263
|
});
|
240
|
-
var vertexImageProviderOptionsSchema =
|
241
|
-
negativePrompt:
|
242
|
-
personGeneration:
|
243
|
-
safetySetting:
|
264
|
+
var vertexImageProviderOptionsSchema = import_v44.z.object({
|
265
|
+
negativePrompt: import_v44.z.string().nullish(),
|
266
|
+
personGeneration: import_v44.z.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
267
|
+
safetySetting: import_v44.z.enum([
|
244
268
|
"block_low_and_above",
|
245
269
|
"block_medium_and_above",
|
246
270
|
"block_only_high",
|
247
271
|
"block_none"
|
248
272
|
]).nullish(),
|
249
|
-
addWatermark:
|
250
|
-
storageUri:
|
273
|
+
addWatermark: import_v44.z.boolean().nullish(),
|
274
|
+
storageUri: import_v44.z.string().nullish()
|
251
275
|
});
|
252
276
|
|
253
|
-
// src/google-vertex-supported-file-url.ts
|
254
|
-
function isSupportedFileUrl(url) {
|
255
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
256
|
-
}
|
257
|
-
|
258
277
|
// src/google-vertex-provider.ts
|
259
278
|
function createVertex(options = {}) {
|
260
279
|
const loadVertexProject = () => (0, import_provider_utils4.loadSetting)({
|
@@ -273,7 +292,8 @@ function createVertex(options = {}) {
|
|
273
292
|
var _a;
|
274
293
|
const region = loadVertexLocation();
|
275
294
|
const project = loadVertexProject();
|
276
|
-
|
295
|
+
const baseHost = `${region === "global" ? "" : region + "-"}aiplatform.googleapis.com`;
|
296
|
+
return (_a = (0, import_provider_utils4.withoutTrailingSlash)(options.baseURL)) != null ? _a : `https://${baseHost}/v1/projects/${project}/locations/${region}/publishers/google`;
|
277
297
|
};
|
278
298
|
const createConfig = (name) => {
|
279
299
|
var _a;
|
@@ -284,27 +304,30 @@ function createVertex(options = {}) {
|
|
284
304
|
baseURL: loadBaseURL()
|
285
305
|
};
|
286
306
|
};
|
287
|
-
const createChatModel = (modelId
|
307
|
+
const createChatModel = (modelId) => {
|
288
308
|
var _a;
|
289
|
-
return new import_internal.GoogleGenerativeAILanguageModel(modelId,
|
309
|
+
return new import_internal.GoogleGenerativeAILanguageModel(modelId, {
|
290
310
|
...createConfig("chat"),
|
291
311
|
generateId: (_a = options.generateId) != null ? _a : import_provider_utils4.generateId,
|
292
|
-
|
312
|
+
supportedUrls: () => ({
|
313
|
+
"*": [
|
314
|
+
// HTTP URLs:
|
315
|
+
/^https?:\/\/.*$/,
|
316
|
+
// Google Cloud Storage URLs:
|
317
|
+
/^gs:\/\/.*$/
|
318
|
+
]
|
319
|
+
})
|
293
320
|
});
|
294
321
|
};
|
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) {
|
322
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
323
|
+
const createImageModel = (modelId) => new GoogleVertexImageModel(modelId, createConfig("image"));
|
324
|
+
const provider = function(modelId) {
|
302
325
|
if (new.target) {
|
303
326
|
throw new Error(
|
304
327
|
"The Google Vertex AI model function cannot be called with the new keyword."
|
305
328
|
);
|
306
329
|
}
|
307
|
-
return createChatModel(modelId
|
330
|
+
return createChatModel(modelId);
|
308
331
|
};
|
309
332
|
provider.languageModel = createChatModel;
|
310
333
|
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 { ...(revisedPrompt != null && { revisedPrompt }) };\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().nullish(),\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,50 @@ 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 { ...revisedPrompt != null && { revisedPrompt } };
|
240
|
+
})) != null ? _g : []
|
241
|
+
}
|
223
242
|
}
|
224
243
|
};
|
225
244
|
}
|
226
245
|
};
|
227
|
-
var vertexImageResponseSchema =
|
228
|
-
predictions:
|
246
|
+
var vertexImageResponseSchema = z4.object({
|
247
|
+
predictions: z4.array(
|
248
|
+
z4.object({
|
249
|
+
bytesBase64Encoded: z4.string(),
|
250
|
+
mimeType: z4.string(),
|
251
|
+
prompt: z4.string().nullish()
|
252
|
+
})
|
253
|
+
).nullish()
|
229
254
|
});
|
230
|
-
var vertexImageProviderOptionsSchema =
|
231
|
-
negativePrompt:
|
232
|
-
personGeneration:
|
233
|
-
safetySetting:
|
255
|
+
var vertexImageProviderOptionsSchema = z4.object({
|
256
|
+
negativePrompt: z4.string().nullish(),
|
257
|
+
personGeneration: z4.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
258
|
+
safetySetting: z4.enum([
|
234
259
|
"block_low_and_above",
|
235
260
|
"block_medium_and_above",
|
236
261
|
"block_only_high",
|
237
262
|
"block_none"
|
238
263
|
]).nullish(),
|
239
|
-
addWatermark:
|
240
|
-
storageUri:
|
264
|
+
addWatermark: z4.boolean().nullish(),
|
265
|
+
storageUri: z4.string().nullish()
|
241
266
|
});
|
242
267
|
|
243
|
-
// src/google-vertex-supported-file-url.ts
|
244
|
-
function isSupportedFileUrl(url) {
|
245
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
246
|
-
}
|
247
|
-
|
248
268
|
// src/google-vertex-provider.ts
|
249
269
|
function createVertex(options = {}) {
|
250
270
|
const loadVertexProject = () => loadSetting({
|
@@ -263,7 +283,8 @@ function createVertex(options = {}) {
|
|
263
283
|
var _a;
|
264
284
|
const region = loadVertexLocation();
|
265
285
|
const project = loadVertexProject();
|
266
|
-
|
286
|
+
const baseHost = `${region === "global" ? "" : region + "-"}aiplatform.googleapis.com`;
|
287
|
+
return (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : `https://${baseHost}/v1/projects/${project}/locations/${region}/publishers/google`;
|
267
288
|
};
|
268
289
|
const createConfig = (name) => {
|
269
290
|
var _a;
|
@@ -274,27 +295,30 @@ function createVertex(options = {}) {
|
|
274
295
|
baseURL: loadBaseURL()
|
275
296
|
};
|
276
297
|
};
|
277
|
-
const createChatModel = (modelId
|
298
|
+
const createChatModel = (modelId) => {
|
278
299
|
var _a;
|
279
|
-
return new GoogleGenerativeAILanguageModel(modelId,
|
300
|
+
return new GoogleGenerativeAILanguageModel(modelId, {
|
280
301
|
...createConfig("chat"),
|
281
302
|
generateId: (_a = options.generateId) != null ? _a : generateId,
|
282
|
-
|
303
|
+
supportedUrls: () => ({
|
304
|
+
"*": [
|
305
|
+
// HTTP URLs:
|
306
|
+
/^https?:\/\/.*$/,
|
307
|
+
// Google Cloud Storage URLs:
|
308
|
+
/^gs:\/\/.*$/
|
309
|
+
]
|
310
|
+
})
|
283
311
|
});
|
284
312
|
};
|
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) {
|
313
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
314
|
+
const createImageModel = (modelId) => new GoogleVertexImageModel(modelId, createConfig("image"));
|
315
|
+
const provider = function(modelId) {
|
292
316
|
if (new.target) {
|
293
317
|
throw new Error(
|
294
318
|
"The Google Vertex AI model function cannot be called with the new keyword."
|
295
319
|
);
|
296
320
|
}
|
297
|
-
return createChatModel(modelId
|
321
|
+
return createChatModel(modelId);
|
298
322
|
};
|
299
323
|
provider.languageModel = createChatModel;
|
300
324
|
provider.textEmbeddingModel = createEmbeddingModel;
|