@ai-sdk/google-vertex 3.0.0-canary.0 → 3.0.0-canary.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +131 -0
- package/README.md +1 -1
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.mts +4 -4
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.d.ts +4 -4
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.js +3 -1
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.js.map +1 -1
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.mjs +3 -1
- package/{anthropic/edge/dist → dist/anthropic/edge}/index.mjs.map +1 -1
- package/{anthropic/dist → dist/anthropic}/index.d.mts +4 -4
- package/{anthropic/dist → dist/anthropic}/index.d.ts +4 -4
- package/{anthropic/dist → dist/anthropic}/index.js +3 -1
- package/{anthropic/dist → dist/anthropic}/index.js.map +1 -1
- package/{anthropic/dist → dist/anthropic}/index.mjs +3 -1
- package/{anthropic/dist → dist/anthropic}/index.mjs.map +1 -1
- package/{edge/dist → dist/edge}/index.d.mts +8 -8
- package/{edge/dist → dist/edge}/index.d.ts +8 -8
- package/{edge/dist → dist/edge}/index.js +70 -37
- package/dist/edge/index.js.map +1 -0
- package/{edge/dist → dist/edge}/index.mjs +73 -38
- package/dist/edge/index.mjs.map +1 -0
- package/dist/index.d.mts +31 -9
- package/dist/index.d.ts +31 -9
- package/dist/index.js +70 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +73 -38
- package/dist/index.mjs.map +1 -1
- package/package.json +23 -22
- package/edge/dist/index.js.map +0 -1
- package/edge/dist/index.mjs.map +0 -1
package/dist/index.d.ts
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
+
import { z } from 'zod';
|
1
2
|
import { GoogleAuthOptions } from 'google-auth-library';
|
2
|
-
import {
|
3
|
+
import { ProviderV2, LanguageModelV2, ImageModelV1 } from '@ai-sdk/provider';
|
3
4
|
import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
|
4
5
|
import { InternalGoogleGenerativeAISettings } from '@ai-sdk/google/internal';
|
5
6
|
|
6
|
-
type GoogleVertexModelId = 'gemini-2.0-flash-001' | 'gemini-1.5-flash' | 'gemini-1.5-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-001' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro-001' | 'gemini-1.0-pro-vision-001' | 'gemini-1.0-pro' | 'gemini-1.0-pro-001' | 'gemini-1.0-pro-002' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash-exp' | (string & {});
|
7
|
-
interface GoogleVertexSettings extends InternalGoogleGenerativeAISettings {
|
8
|
-
}
|
9
|
-
|
10
7
|
type GoogleVertexImageModelId = 'imagen-3.0-generate-001' | 'imagen-3.0-fast-generate-001' | (string & {});
|
11
8
|
interface GoogleVertexImageSettings {
|
12
9
|
/**
|
@@ -15,12 +12,37 @@ interface GoogleVertexImageSettings {
|
|
15
12
|
maxImagesPerCall?: number;
|
16
13
|
}
|
17
14
|
|
18
|
-
|
15
|
+
declare const vertexImageProviderOptionsSchema: z.ZodObject<{
|
16
|
+
negativePrompt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
17
|
+
personGeneration: z.ZodOptional<z.ZodNullable<z.ZodEnum<["dont_allow", "allow_adult", "allow_all"]>>>;
|
18
|
+
safetySetting: z.ZodOptional<z.ZodNullable<z.ZodEnum<["block_low_and_above", "block_medium_and_above", "block_only_high", "block_none"]>>>;
|
19
|
+
addWatermark: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
20
|
+
storageUri: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
22
|
+
negativePrompt?: string | null | undefined;
|
23
|
+
personGeneration?: "dont_allow" | "allow_adult" | "allow_all" | null | undefined;
|
24
|
+
safetySetting?: "block_low_and_above" | "block_medium_and_above" | "block_only_high" | "block_none" | null | undefined;
|
25
|
+
addWatermark?: boolean | null | undefined;
|
26
|
+
storageUri?: string | null | undefined;
|
27
|
+
}, {
|
28
|
+
negativePrompt?: string | null | undefined;
|
29
|
+
personGeneration?: "dont_allow" | "allow_adult" | "allow_all" | null | undefined;
|
30
|
+
safetySetting?: "block_low_and_above" | "block_medium_and_above" | "block_only_high" | "block_none" | null | undefined;
|
31
|
+
addWatermark?: boolean | null | undefined;
|
32
|
+
storageUri?: string | null | undefined;
|
33
|
+
}>;
|
34
|
+
type GoogleVertexImageProviderOptions = z.infer<typeof vertexImageProviderOptionsSchema>;
|
35
|
+
|
36
|
+
type GoogleVertexModelId = 'gemini-2.0-flash-001' | 'gemini-1.5-flash' | 'gemini-1.5-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-001' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro-001' | 'gemini-1.0-pro-vision-001' | 'gemini-1.0-pro' | 'gemini-1.0-pro-001' | 'gemini-1.0-pro-002' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash-exp' | (string & {});
|
37
|
+
interface GoogleVertexSettings extends InternalGoogleGenerativeAISettings {
|
38
|
+
}
|
39
|
+
|
40
|
+
interface GoogleVertexProvider extends ProviderV2 {
|
19
41
|
/**
|
20
42
|
Creates a model for text generation.
|
21
43
|
*/
|
22
|
-
(modelId: GoogleVertexModelId, settings?: GoogleVertexSettings):
|
23
|
-
languageModel: (modelId: GoogleVertexModelId, settings?: GoogleVertexSettings) =>
|
44
|
+
(modelId: GoogleVertexModelId, settings?: GoogleVertexSettings): LanguageModelV2;
|
45
|
+
languageModel: (modelId: GoogleVertexModelId, settings?: GoogleVertexSettings) => LanguageModelV2;
|
24
46
|
/**
|
25
47
|
* Creates a model for image generation.
|
26
48
|
*/
|
@@ -75,4 +97,4 @@ Default Google Vertex AI provider instance.
|
|
75
97
|
*/
|
76
98
|
declare const vertex: GoogleVertexProvider;
|
77
99
|
|
78
|
-
export { type GoogleVertexProvider, type GoogleVertexProviderSettings, createVertex, vertex };
|
100
|
+
export { type GoogleVertexImageProviderOptions, type GoogleVertexProvider, type GoogleVertexProviderSettings, createVertex, vertex };
|
package/dist/index.js
CHANGED
@@ -50,12 +50,13 @@ 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_zod3 = require("zod");
|
59
60
|
|
60
61
|
// src/google-vertex-error.ts
|
61
62
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
@@ -74,12 +75,21 @@ var googleVertexFailedResponseHandler = (0, import_provider_utils.createJsonErro
|
|
74
75
|
}
|
75
76
|
);
|
76
77
|
|
78
|
+
// src/google-vertex-embedding-options.ts
|
79
|
+
var import_zod2 = require("zod");
|
80
|
+
var googleVertexEmbeddingProviderOptions = import_zod2.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_zod2.z.number().optional()
|
86
|
+
});
|
87
|
+
|
77
88
|
// src/google-vertex-embedding-model.ts
|
78
89
|
var GoogleVertexEmbeddingModel = class {
|
79
|
-
constructor(modelId,
|
80
|
-
this.specificationVersion = "
|
90
|
+
constructor(modelId, config) {
|
91
|
+
this.specificationVersion = "v2";
|
81
92
|
this.modelId = modelId;
|
82
|
-
this.settings = settings;
|
83
93
|
this.config = config;
|
84
94
|
}
|
85
95
|
get provider() {
|
@@ -94,8 +104,15 @@ var GoogleVertexEmbeddingModel = class {
|
|
94
104
|
async doEmbed({
|
95
105
|
values,
|
96
106
|
headers,
|
97
|
-
abortSignal
|
107
|
+
abortSignal,
|
108
|
+
providerOptions
|
98
109
|
}) {
|
110
|
+
var _a;
|
111
|
+
const googleOptions = (_a = (0, import_provider_utils2.parseProviderOptions)({
|
112
|
+
provider: "google",
|
113
|
+
providerOptions,
|
114
|
+
schema: googleVertexEmbeddingProviderOptions
|
115
|
+
})) != null ? _a : {};
|
99
116
|
if (values.length > this.maxEmbeddingsPerCall) {
|
100
117
|
throw new import_provider.TooManyEmbeddingValuesForCallError({
|
101
118
|
provider: this.provider,
|
@@ -109,13 +126,17 @@ var GoogleVertexEmbeddingModel = class {
|
|
109
126
|
headers
|
110
127
|
);
|
111
128
|
const url = `${this.config.baseURL}/models/${this.modelId}:predict`;
|
112
|
-
const {
|
129
|
+
const {
|
130
|
+
responseHeaders,
|
131
|
+
value: response,
|
132
|
+
rawValue
|
133
|
+
} = await (0, import_provider_utils2.postJsonToApi)({
|
113
134
|
url,
|
114
135
|
headers: mergedHeaders,
|
115
136
|
body: {
|
116
137
|
instances: values.map((value) => ({ content: value })),
|
117
138
|
parameters: {
|
118
|
-
outputDimensionality:
|
139
|
+
outputDimensionality: googleOptions.outputDimensionality
|
119
140
|
}
|
120
141
|
},
|
121
142
|
failedResponseHandler: googleVertexFailedResponseHandler,
|
@@ -135,29 +156,26 @@ var GoogleVertexEmbeddingModel = class {
|
|
135
156
|
0
|
136
157
|
)
|
137
158
|
},
|
138
|
-
|
159
|
+
response: { headers: responseHeaders, body: rawValue }
|
139
160
|
};
|
140
161
|
}
|
141
162
|
};
|
142
|
-
var googleVertexTextEmbeddingResponseSchema =
|
143
|
-
predictions:
|
144
|
-
|
145
|
-
embeddings:
|
146
|
-
values:
|
147
|
-
statistics:
|
148
|
-
token_count:
|
163
|
+
var googleVertexTextEmbeddingResponseSchema = import_zod3.z.object({
|
164
|
+
predictions: import_zod3.z.array(
|
165
|
+
import_zod3.z.object({
|
166
|
+
embeddings: import_zod3.z.object({
|
167
|
+
values: import_zod3.z.array(import_zod3.z.number()),
|
168
|
+
statistics: import_zod3.z.object({
|
169
|
+
token_count: import_zod3.z.number()
|
149
170
|
})
|
150
171
|
})
|
151
172
|
})
|
152
173
|
)
|
153
174
|
});
|
154
175
|
|
155
|
-
// src/google-vertex-provider.ts
|
156
|
-
var import_internal = require("@ai-sdk/google/internal");
|
157
|
-
|
158
176
|
// src/google-vertex-image-model.ts
|
159
177
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
160
|
-
var
|
178
|
+
var import_zod4 = require("zod");
|
161
179
|
var GoogleVertexImageModel = class {
|
162
180
|
constructor(modelId, settings, config) {
|
163
181
|
this.modelId = modelId;
|
@@ -182,7 +200,7 @@ var GoogleVertexImageModel = class {
|
|
182
200
|
headers,
|
183
201
|
abortSignal
|
184
202
|
}) {
|
185
|
-
var _a, _b, _c, _d, _e
|
203
|
+
var _a, _b, _c, _d, _e;
|
186
204
|
const warnings = [];
|
187
205
|
if (size != null) {
|
188
206
|
warnings.push({
|
@@ -191,16 +209,21 @@ var GoogleVertexImageModel = class {
|
|
191
209
|
details: "This model does not support the `size` option. Use `aspectRatio` instead."
|
192
210
|
});
|
193
211
|
}
|
212
|
+
const vertexImageOptions = (0, import_provider_utils3.parseProviderOptions)({
|
213
|
+
provider: "vertex",
|
214
|
+
providerOptions,
|
215
|
+
schema: vertexImageProviderOptionsSchema
|
216
|
+
});
|
194
217
|
const body = {
|
195
218
|
instances: [{ prompt }],
|
196
219
|
parameters: {
|
197
220
|
sampleCount: n,
|
198
221
|
...aspectRatio != null ? { aspectRatio } : {},
|
199
222
|
...seed != null ? { seed } : {},
|
200
|
-
...
|
223
|
+
...vertexImageOptions != null ? vertexImageOptions : {}
|
201
224
|
}
|
202
225
|
};
|
203
|
-
const currentDate = (
|
226
|
+
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
204
227
|
const { value: response, responseHeaders } = await (0, import_provider_utils3.postJsonToApi)({
|
205
228
|
url: `${this.config.baseURL}/models/${this.modelId}:predict`,
|
206
229
|
headers: (0, import_provider_utils3.combineHeaders)(await (0, import_provider_utils3.resolve)(this.config.headers), headers),
|
@@ -213,9 +236,9 @@ var GoogleVertexImageModel = class {
|
|
213
236
|
fetch: this.config.fetch
|
214
237
|
});
|
215
238
|
return {
|
216
|
-
images: (
|
239
|
+
images: (_e = (_d = response.predictions) == null ? void 0 : _d.map(
|
217
240
|
(p) => p.bytesBase64Encoded
|
218
|
-
)) != null ?
|
241
|
+
)) != null ? _e : [],
|
219
242
|
warnings,
|
220
243
|
response: {
|
221
244
|
timestamp: currentDate,
|
@@ -225,14 +248,21 @@ var GoogleVertexImageModel = class {
|
|
225
248
|
};
|
226
249
|
}
|
227
250
|
};
|
228
|
-
var vertexImageResponseSchema =
|
229
|
-
predictions:
|
251
|
+
var vertexImageResponseSchema = import_zod4.z.object({
|
252
|
+
predictions: import_zod4.z.array(import_zod4.z.object({ bytesBase64Encoded: import_zod4.z.string() })).nullish()
|
253
|
+
});
|
254
|
+
var vertexImageProviderOptionsSchema = import_zod4.z.object({
|
255
|
+
negativePrompt: import_zod4.z.string().nullish(),
|
256
|
+
personGeneration: import_zod4.z.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
257
|
+
safetySetting: import_zod4.z.enum([
|
258
|
+
"block_low_and_above",
|
259
|
+
"block_medium_and_above",
|
260
|
+
"block_only_high",
|
261
|
+
"block_none"
|
262
|
+
]).nullish(),
|
263
|
+
addWatermark: import_zod4.z.boolean().nullish(),
|
264
|
+
storageUri: import_zod4.z.string().nullish()
|
230
265
|
});
|
231
|
-
|
232
|
-
// src/google-vertex-supported-file-url.ts
|
233
|
-
function isSupportedFileUrl(url) {
|
234
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
235
|
-
}
|
236
266
|
|
237
267
|
// src/google-vertex-provider.ts
|
238
268
|
function createVertex(options = {}) {
|
@@ -268,14 +298,17 @@ function createVertex(options = {}) {
|
|
268
298
|
return new import_internal.GoogleGenerativeAILanguageModel(modelId, settings, {
|
269
299
|
...createConfig("chat"),
|
270
300
|
generateId: (_a = options.generateId) != null ? _a : import_provider_utils4.generateId,
|
271
|
-
|
301
|
+
getSupportedUrls: async () => ({
|
302
|
+
"*": [
|
303
|
+
// HTTP URLs:
|
304
|
+
/^https?:\/\/.*$/,
|
305
|
+
// Google Cloud Storage URLs:
|
306
|
+
/^gs:\/\/.*$/
|
307
|
+
]
|
308
|
+
})
|
272
309
|
});
|
273
310
|
};
|
274
|
-
const createEmbeddingModel = (modelId
|
275
|
-
modelId,
|
276
|
-
settings,
|
277
|
-
createConfig("embedding")
|
278
|
-
);
|
311
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
279
312
|
const createImageModel = (modelId, settings = {}) => new GoogleVertexImageModel(modelId, settings, createConfig("image"));
|
280
313
|
const provider = function(modelId, settings) {
|
281
314
|
if (new.target) {
|
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 { 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 { LanguageModelV1, ProviderV1, 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 ProviderV1 {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): LanguageModelV1;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => LanguageModelV1;\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 EmbeddingModelV1,\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 EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\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<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<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 { responseHeaders, value: response } = 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 rawResponse: { headers: responseHeaders },\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 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 body = {\n instances: [{ prompt }],\n parameters: {\n sampleCount: n,\n ...(aspectRatio != null ? { aspectRatio } : {}),\n ...(seed != null ? { seed } : {}),\n ...(providerOptions.vertex ?? {}),\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","// 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 { ImageModelV1, 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 {\n GoogleVertexImageModelId,\n GoogleVertexImageSettings,\n} from './google-vertex-image-settings';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\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 getSupportedUrls: async () => ({\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 = (\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 parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n GoogleVertexEmbeddingModelId,\n googleVertexEmbeddingProviderOptions,\n} from './google-vertex-embedding-options';\nimport { GoogleVertexConfig } from './google-vertex-config';\n\nexport class GoogleVertexEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: GoogleVertexEmbeddingModelId;\n\n private readonly config: GoogleVertexConfig;\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 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 parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleVertexEmbeddingProviderOptions,\n }) ?? {};\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n const url = `${this.config.baseURL}/models/${this.modelId}:predict`;\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url,\n headers: mergedHeaders,\n body: {\n instances: values.map(value => ({ content: value })),\n parameters: {\n outputDimensionality: googleOptions.outputDimensionality,\n },\n },\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.predictions.map(\n prediction => prediction.embeddings.values,\n ),\n usage: {\n tokens: response.predictions.reduce(\n (tokenCount, prediction) =>\n tokenCount + prediction.embeddings.statistics.token_count,\n 0,\n ),\n },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst googleVertexTextEmbeddingResponseSchema = z.object({\n predictions: z.array(\n z.object({\n embeddings: z.object({\n values: z.array(z.number()),\n statistics: z.object({\n token_count: z.number(),\n }),\n }),\n }),\n ),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst googleVertexErrorDataSchema = z.object({\n error: z.object({\n code: z.number().nullable(),\n message: z.string(),\n status: z.string(),\n }),\n});\n\nexport type GoogleVertexErrorData = z.infer<typeof googleVertexErrorDataSchema>;\n\nexport const googleVertexFailedResponseHandler = createJsonErrorResponseHandler(\n {\n errorSchema: googleVertexErrorDataSchema,\n errorToMessage: data => data.error.message,\n },\n);\n","import { z } from 'zod';\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api\nexport type GoogleVertexEmbeddingModelId =\n | 'textembedding-gecko'\n | 'textembedding-gecko@001'\n | 'textembedding-gecko@003'\n | 'textembedding-gecko-multilingual'\n | 'textembedding-gecko-multilingual@001'\n | 'text-multilingual-embedding-002'\n | 'text-embedding-004'\n | 'text-embedding-005'\n | (string & {});\n\nexport const googleVertexEmbeddingProviderOptions = z.object({\n /**\n * Optional. Optional reduced dimension for the output embedding.\n * If set, excessive values in the output embedding are truncated from the end.\n */\n outputDimensionality: z.number().optional(),\n});\n\nexport type GoogleVertexEmbeddingProviderOptions = z.infer<\n typeof googleVertexEmbeddingProviderOptions\n>;\n","import { 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"],"mappings":"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","names":["createVertex","import_provider_utils","import_provider_utils","import_provider_utils","import_zod","import_zod","import_provider_utils","import_zod","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,9 +38,10 @@ 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";
|
43
45
|
|
44
46
|
// src/google-vertex-error.ts
|
45
47
|
import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
|
@@ -58,12 +60,21 @@ var googleVertexFailedResponseHandler = createJsonErrorResponseHandler(
|
|
58
60
|
}
|
59
61
|
);
|
60
62
|
|
63
|
+
// src/google-vertex-embedding-options.ts
|
64
|
+
import { z as z2 } from "zod";
|
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,
|
64
|
-
this.specificationVersion = "
|
75
|
+
constructor(modelId, config) {
|
76
|
+
this.specificationVersion = "v2";
|
65
77
|
this.modelId = modelId;
|
66
|
-
this.settings = settings;
|
67
78
|
this.config = config;
|
68
79
|
}
|
69
80
|
get provider() {
|
@@ -78,8 +89,15 @@ var GoogleVertexEmbeddingModel = class {
|
|
78
89
|
async doEmbed({
|
79
90
|
values,
|
80
91
|
headers,
|
81
|
-
abortSignal
|
92
|
+
abortSignal,
|
93
|
+
providerOptions
|
82
94
|
}) {
|
95
|
+
var _a;
|
96
|
+
const googleOptions = (_a = parseProviderOptions({
|
97
|
+
provider: "google",
|
98
|
+
providerOptions,
|
99
|
+
schema: googleVertexEmbeddingProviderOptions
|
100
|
+
})) != null ? _a : {};
|
83
101
|
if (values.length > this.maxEmbeddingsPerCall) {
|
84
102
|
throw new TooManyEmbeddingValuesForCallError({
|
85
103
|
provider: this.provider,
|
@@ -93,13 +111,17 @@ var GoogleVertexEmbeddingModel = class {
|
|
93
111
|
headers
|
94
112
|
);
|
95
113
|
const url = `${this.config.baseURL}/models/${this.modelId}:predict`;
|
96
|
-
const {
|
114
|
+
const {
|
115
|
+
responseHeaders,
|
116
|
+
value: response,
|
117
|
+
rawValue
|
118
|
+
} = await postJsonToApi({
|
97
119
|
url,
|
98
120
|
headers: mergedHeaders,
|
99
121
|
body: {
|
100
122
|
instances: values.map((value) => ({ content: value })),
|
101
123
|
parameters: {
|
102
|
-
outputDimensionality:
|
124
|
+
outputDimensionality: googleOptions.outputDimensionality
|
103
125
|
}
|
104
126
|
},
|
105
127
|
failedResponseHandler: googleVertexFailedResponseHandler,
|
@@ -119,34 +141,32 @@ var GoogleVertexEmbeddingModel = class {
|
|
119
141
|
0
|
120
142
|
)
|
121
143
|
},
|
122
|
-
|
144
|
+
response: { headers: responseHeaders, body: rawValue }
|
123
145
|
};
|
124
146
|
}
|
125
147
|
};
|
126
|
-
var googleVertexTextEmbeddingResponseSchema =
|
127
|
-
predictions:
|
128
|
-
|
129
|
-
embeddings:
|
130
|
-
values:
|
131
|
-
statistics:
|
132
|
-
token_count:
|
148
|
+
var googleVertexTextEmbeddingResponseSchema = z3.object({
|
149
|
+
predictions: z3.array(
|
150
|
+
z3.object({
|
151
|
+
embeddings: z3.object({
|
152
|
+
values: z3.array(z3.number()),
|
153
|
+
statistics: z3.object({
|
154
|
+
token_count: z3.number()
|
133
155
|
})
|
134
156
|
})
|
135
157
|
})
|
136
158
|
)
|
137
159
|
});
|
138
160
|
|
139
|
-
// src/google-vertex-provider.ts
|
140
|
-
import { GoogleGenerativeAILanguageModel } from "@ai-sdk/google/internal";
|
141
|
-
|
142
161
|
// src/google-vertex-image-model.ts
|
143
162
|
import {
|
144
163
|
combineHeaders as combineHeaders2,
|
145
164
|
createJsonResponseHandler as createJsonResponseHandler2,
|
165
|
+
parseProviderOptions as parseProviderOptions2,
|
146
166
|
postJsonToApi as postJsonToApi2,
|
147
167
|
resolve as resolve2
|
148
168
|
} from "@ai-sdk/provider-utils";
|
149
|
-
import { z as
|
169
|
+
import { z as z4 } from "zod";
|
150
170
|
var GoogleVertexImageModel = class {
|
151
171
|
constructor(modelId, settings, config) {
|
152
172
|
this.modelId = modelId;
|
@@ -171,7 +191,7 @@ var GoogleVertexImageModel = class {
|
|
171
191
|
headers,
|
172
192
|
abortSignal
|
173
193
|
}) {
|
174
|
-
var _a, _b, _c, _d, _e
|
194
|
+
var _a, _b, _c, _d, _e;
|
175
195
|
const warnings = [];
|
176
196
|
if (size != null) {
|
177
197
|
warnings.push({
|
@@ -180,16 +200,21 @@ var GoogleVertexImageModel = class {
|
|
180
200
|
details: "This model does not support the `size` option. Use `aspectRatio` instead."
|
181
201
|
});
|
182
202
|
}
|
203
|
+
const vertexImageOptions = parseProviderOptions2({
|
204
|
+
provider: "vertex",
|
205
|
+
providerOptions,
|
206
|
+
schema: vertexImageProviderOptionsSchema
|
207
|
+
});
|
183
208
|
const body = {
|
184
209
|
instances: [{ prompt }],
|
185
210
|
parameters: {
|
186
211
|
sampleCount: n,
|
187
212
|
...aspectRatio != null ? { aspectRatio } : {},
|
188
213
|
...seed != null ? { seed } : {},
|
189
|
-
...
|
214
|
+
...vertexImageOptions != null ? vertexImageOptions : {}
|
190
215
|
}
|
191
216
|
};
|
192
|
-
const currentDate = (
|
217
|
+
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
193
218
|
const { value: response, responseHeaders } = await postJsonToApi2({
|
194
219
|
url: `${this.config.baseURL}/models/${this.modelId}:predict`,
|
195
220
|
headers: combineHeaders2(await resolve2(this.config.headers), headers),
|
@@ -202,9 +227,9 @@ var GoogleVertexImageModel = class {
|
|
202
227
|
fetch: this.config.fetch
|
203
228
|
});
|
204
229
|
return {
|
205
|
-
images: (
|
230
|
+
images: (_e = (_d = response.predictions) == null ? void 0 : _d.map(
|
206
231
|
(p) => p.bytesBase64Encoded
|
207
|
-
)) != null ?
|
232
|
+
)) != null ? _e : [],
|
208
233
|
warnings,
|
209
234
|
response: {
|
210
235
|
timestamp: currentDate,
|
@@ -214,14 +239,21 @@ var GoogleVertexImageModel = class {
|
|
214
239
|
};
|
215
240
|
}
|
216
241
|
};
|
217
|
-
var vertexImageResponseSchema =
|
218
|
-
predictions:
|
242
|
+
var vertexImageResponseSchema = z4.object({
|
243
|
+
predictions: z4.array(z4.object({ bytesBase64Encoded: z4.string() })).nullish()
|
244
|
+
});
|
245
|
+
var vertexImageProviderOptionsSchema = z4.object({
|
246
|
+
negativePrompt: z4.string().nullish(),
|
247
|
+
personGeneration: z4.enum(["dont_allow", "allow_adult", "allow_all"]).nullish(),
|
248
|
+
safetySetting: z4.enum([
|
249
|
+
"block_low_and_above",
|
250
|
+
"block_medium_and_above",
|
251
|
+
"block_only_high",
|
252
|
+
"block_none"
|
253
|
+
]).nullish(),
|
254
|
+
addWatermark: z4.boolean().nullish(),
|
255
|
+
storageUri: z4.string().nullish()
|
219
256
|
});
|
220
|
-
|
221
|
-
// src/google-vertex-supported-file-url.ts
|
222
|
-
function isSupportedFileUrl(url) {
|
223
|
-
return ["http:", "https:", "gs:"].includes(url.protocol);
|
224
|
-
}
|
225
257
|
|
226
258
|
// src/google-vertex-provider.ts
|
227
259
|
function createVertex(options = {}) {
|
@@ -257,14 +289,17 @@ function createVertex(options = {}) {
|
|
257
289
|
return new GoogleGenerativeAILanguageModel(modelId, settings, {
|
258
290
|
...createConfig("chat"),
|
259
291
|
generateId: (_a = options.generateId) != null ? _a : generateId,
|
260
|
-
|
292
|
+
getSupportedUrls: async () => ({
|
293
|
+
"*": [
|
294
|
+
// HTTP URLs:
|
295
|
+
/^https?:\/\/.*$/,
|
296
|
+
// Google Cloud Storage URLs:
|
297
|
+
/^gs:\/\/.*$/
|
298
|
+
]
|
299
|
+
})
|
261
300
|
});
|
262
301
|
};
|
263
|
-
const createEmbeddingModel = (modelId
|
264
|
-
modelId,
|
265
|
-
settings,
|
266
|
-
createConfig("embedding")
|
267
|
-
);
|
302
|
+
const createEmbeddingModel = (modelId) => new GoogleVertexEmbeddingModel(modelId, createConfig("embedding"));
|
268
303
|
const createImageModel = (modelId, settings = {}) => new GoogleVertexImageModel(modelId, settings, createConfig("image"));
|
269
304
|
const provider = function(modelId, settings) {
|
270
305
|
if (new.target) {
|