@ai-sdk/google-vertex 5.0.0-beta.3 → 5.0.0-beta.30

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +226 -8
  2. package/README.md +65 -1
  3. package/dist/anthropic/edge/index.d.mts +60 -15
  4. package/dist/anthropic/edge/index.d.ts +60 -15
  5. package/dist/anthropic/edge/index.js +29 -7
  6. package/dist/anthropic/edge/index.js.map +1 -1
  7. package/dist/anthropic/edge/index.mjs +26 -4
  8. package/dist/anthropic/edge/index.mjs.map +1 -1
  9. package/dist/anthropic/index.d.mts +60 -15
  10. package/dist/anthropic/index.d.ts +60 -15
  11. package/dist/anthropic/index.js +28 -6
  12. package/dist/anthropic/index.js.map +1 -1
  13. package/dist/anthropic/index.mjs +25 -3
  14. package/dist/anthropic/index.mjs.map +1 -1
  15. package/dist/edge/index.d.mts +19 -19
  16. package/dist/edge/index.d.ts +19 -19
  17. package/dist/edge/index.js +8 -8
  18. package/dist/edge/index.js.map +1 -1
  19. package/dist/edge/index.mjs +5 -5
  20. package/dist/edge/index.mjs.map +1 -1
  21. package/dist/index.d.mts +19 -19
  22. package/dist/index.d.ts +19 -19
  23. package/dist/index.js +8 -8
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.mjs +5 -5
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/maas/edge/index.d.mts +76 -0
  28. package/dist/maas/edge/index.d.ts +76 -0
  29. package/dist/maas/edge/index.js +215 -0
  30. package/dist/maas/edge/index.js.map +1 -0
  31. package/dist/maas/edge/index.mjs +196 -0
  32. package/dist/maas/edge/index.mjs.map +1 -0
  33. package/dist/maas/index.d.mts +60 -0
  34. package/dist/maas/index.d.ts +60 -0
  35. package/dist/maas/index.js +125 -0
  36. package/dist/maas/index.js.map +1 -0
  37. package/dist/maas/index.mjs +101 -0
  38. package/dist/maas/index.mjs.map +1 -0
  39. package/docs/16-google-vertex.mdx +164 -6
  40. package/maas/edge.d.ts +1 -0
  41. package/maas/index.d.ts +1 -0
  42. package/package.json +19 -8
  43. package/src/anthropic/edge/google-vertex-anthropic-provider-edge.ts +1 -2
  44. package/src/anthropic/google-vertex-anthropic-provider-node.ts +1 -2
  45. package/src/anthropic/google-vertex-anthropic-provider.ts +32 -7
  46. package/src/edge/google-vertex-provider-edge.ts +1 -2
  47. package/src/google-vertex-embedding-model.ts +5 -5
  48. package/src/google-vertex-embedding-options.ts +2 -0
  49. package/src/google-vertex-image-model.ts +17 -17
  50. package/src/google-vertex-provider-node.ts +1 -2
  51. package/src/google-vertex-provider.ts +12 -12
  52. package/src/google-vertex-video-model.ts +7 -7
  53. package/src/maas/edge/google-vertex-maas-provider-edge.ts +65 -0
  54. package/src/maas/edge/index.ts +9 -0
  55. package/src/maas/google-vertex-maas-options.ts +15 -0
  56. package/src/maas/google-vertex-maas-provider-node.ts +64 -0
  57. package/src/maas/google-vertex-maas-provider.ts +111 -0
  58. package/src/maas/index.ts +9 -0
@@ -1,5 +1,5 @@
1
1
  import {
2
- EmbeddingModelV3,
2
+ EmbeddingModelV4,
3
3
  TooManyEmbeddingValuesForCallError,
4
4
  } from '@ai-sdk/provider';
5
5
  import {
@@ -17,8 +17,8 @@ import {
17
17
  } from './google-vertex-embedding-options';
18
18
  import { GoogleVertexConfig } from './google-vertex-config';
19
19
 
20
- export class GoogleVertexEmbeddingModel implements EmbeddingModelV3 {
21
- readonly specificationVersion = 'v3';
20
+ export class GoogleVertexEmbeddingModel implements EmbeddingModelV4 {
21
+ readonly specificationVersion = 'v4';
22
22
  readonly modelId: GoogleVertexEmbeddingModelId;
23
23
  readonly maxEmbeddingsPerCall = 2048;
24
24
  readonly supportsParallelCalls = true;
@@ -42,8 +42,8 @@ export class GoogleVertexEmbeddingModel implements EmbeddingModelV3 {
42
42
  headers,
43
43
  abortSignal,
44
44
  providerOptions,
45
- }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<
46
- Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>
45
+ }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<
46
+ Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>
47
47
  > {
48
48
  let googleOptions = await parseProviderOptions({
49
49
  provider: 'vertex',
@@ -10,6 +10,8 @@ export type GoogleVertexEmbeddingModelId =
10
10
  | 'text-multilingual-embedding-002'
11
11
  | 'text-embedding-004'
12
12
  | 'text-embedding-005'
13
+ | 'gemini-embedding-001'
14
+ | 'gemini-embedding-2-preview'
13
15
  | (string & {});
14
16
 
15
17
  export const googleVertexEmbeddingModelOptions = z.object({
@@ -1,10 +1,10 @@
1
1
  import type { GoogleLanguageModelOptions } from '@ai-sdk/google';
2
2
  import { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';
3
3
  import {
4
- ImageModelV3,
5
- ImageModelV3File,
6
- LanguageModelV3Prompt,
7
- SharedV3Warning,
4
+ ImageModelV4,
5
+ ImageModelV4File,
6
+ LanguageModelV4Prompt,
7
+ SharedV4Warning,
8
8
  } from '@ai-sdk/provider';
9
9
  import {
10
10
  Resolvable,
@@ -33,8 +33,8 @@ interface GoogleVertexImageModelConfig {
33
33
  }
34
34
 
35
35
  // https://cloud.google.com/vertex-ai/generative-ai/docs/image/generate-images
36
- export class GoogleVertexImageModel implements ImageModelV3 {
37
- readonly specificationVersion = 'v3';
36
+ export class GoogleVertexImageModel implements ImageModelV4 {
37
+ readonly specificationVersion = 'v4';
38
38
 
39
39
  get maxImagesPerCall(): number {
40
40
  if (isGeminiModel(this.modelId)) {
@@ -53,8 +53,8 @@ export class GoogleVertexImageModel implements ImageModelV3 {
53
53
  ) {}
54
54
 
55
55
  async doGenerate(
56
- options: Parameters<ImageModelV3['doGenerate']>[0],
57
- ): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>> {
56
+ options: Parameters<ImageModelV4['doGenerate']>[0],
57
+ ): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>> {
58
58
  if (isGeminiModel(this.modelId)) {
59
59
  return this.doGenerateGemini(options);
60
60
  }
@@ -72,10 +72,10 @@ export class GoogleVertexImageModel implements ImageModelV3 {
72
72
  abortSignal,
73
73
  files,
74
74
  mask,
75
- }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<
76
- Awaited<ReturnType<ImageModelV3['doGenerate']>>
75
+ }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<
76
+ Awaited<ReturnType<ImageModelV4['doGenerate']>>
77
77
  > {
78
- const warnings: Array<SharedV3Warning> = [];
78
+ const warnings: Array<SharedV4Warning> = [];
79
79
 
80
80
  if (size != null) {
81
81
  warnings.push({
@@ -212,10 +212,10 @@ export class GoogleVertexImageModel implements ImageModelV3 {
212
212
  abortSignal,
213
213
  files,
214
214
  mask,
215
- }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<
216
- Awaited<ReturnType<ImageModelV3['doGenerate']>>
215
+ }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<
216
+ Awaited<ReturnType<ImageModelV4['doGenerate']>>
217
217
  > {
218
- const warnings: Array<SharedV3Warning> = [];
218
+ const warnings: Array<SharedV4Warning> = [];
219
219
 
220
220
  if (mask != null) {
221
221
  throw new Error(
@@ -268,7 +268,7 @@ export class GoogleVertexImageModel implements ImageModelV3 {
268
268
  }
269
269
  }
270
270
 
271
- const languageModelPrompt: LanguageModelV3Prompt = [
271
+ const languageModelPrompt: LanguageModelV4Prompt = [
272
272
  { role: 'user', content: userContent },
273
273
  ];
274
274
 
@@ -433,9 +433,9 @@ export type GoogleVertexImageModelOptions = z.infer<
433
433
  >;
434
434
 
435
435
  /**
436
- * Helper to convert ImageModelV3File data to base64 string
436
+ * Helper to convert ImageModelV4File data to base64 string
437
437
  */
438
- function getBase64Data(file: ImageModelV3File): string {
438
+ function getBase64Data(file: ImageModelV4File): string {
439
439
  if (file.type === 'url') {
440
440
  throw new Error(
441
441
  'URL-based images are not supported for Google Vertex image editing. Please provide the image data directly.',
@@ -7,8 +7,7 @@ import {
7
7
  GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,
8
8
  } from './google-vertex-provider';
9
9
 
10
- export interface GoogleVertexProviderSettings
11
- extends GoogleVertexProviderSettingsOriginal {
10
+ export interface GoogleVertexProviderSettings extends GoogleVertexProviderSettingsOriginal {
12
11
  /**
13
12
  * Optional. The Authentication options provided by google-auth-library.
14
13
  * Complete list of authentication options is documented in the
@@ -1,9 +1,9 @@
1
1
  import { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';
2
2
  import {
3
- Experimental_VideoModelV3,
4
- ImageModelV3,
5
- LanguageModelV3,
6
- ProviderV3,
3
+ Experimental_VideoModelV4,
4
+ ImageModelV4,
5
+ LanguageModelV4,
6
+ ProviderV4,
7
7
  } from '@ai-sdk/provider';
8
8
  import {
9
9
  FetchFunction,
@@ -47,23 +47,23 @@ function createExpressModeFetch(
47
47
  };
48
48
  }
49
49
 
50
- export interface GoogleVertexProvider extends ProviderV3 {
50
+ export interface GoogleVertexProvider extends ProviderV4 {
51
51
  /**
52
52
  * Creates a model for text generation.
53
53
  */
54
- (modelId: GoogleVertexModelId): LanguageModelV3;
54
+ (modelId: GoogleVertexModelId): LanguageModelV4;
55
55
 
56
- languageModel: (modelId: GoogleVertexModelId) => LanguageModelV3;
56
+ languageModel: (modelId: GoogleVertexModelId) => LanguageModelV4;
57
57
 
58
58
  /**
59
59
  * Creates a model for image generation.
60
60
  */
61
- image(modelId: GoogleVertexImageModelId): ImageModelV3;
61
+ image(modelId: GoogleVertexImageModelId): ImageModelV4;
62
62
 
63
63
  /**
64
64
  * Creates a model for image generation.
65
65
  */
66
- imageModel(modelId: GoogleVertexImageModelId): ImageModelV3;
66
+ imageModel(modelId: GoogleVertexImageModelId): ImageModelV4;
67
67
 
68
68
  tools: typeof googleVertexTools;
69
69
 
@@ -77,12 +77,12 @@ export interface GoogleVertexProvider extends ProviderV3 {
77
77
  /**
78
78
  * Creates a model for video generation.
79
79
  */
80
- video(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV3;
80
+ video(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV4;
81
81
 
82
82
  /**
83
83
  * Creates a model for video generation.
84
84
  */
85
- videoModel(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV3;
85
+ videoModel(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV4;
86
86
  }
87
87
 
88
88
  export interface GoogleVertexProviderSettings {
@@ -231,7 +231,7 @@ export function createVertex(
231
231
  return createChatModel(modelId);
232
232
  };
233
233
 
234
- provider.specificationVersion = 'v3' as const;
234
+ provider.specificationVersion = 'v4' as const;
235
235
  provider.languageModel = createChatModel;
236
236
  provider.embeddingModel = createEmbeddingModel;
237
237
  provider.textEmbeddingModel = createEmbeddingModel;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AISDKError,
3
- type Experimental_VideoModelV3,
4
- type SharedV3Warning,
3
+ type Experimental_VideoModelV4,
4
+ type SharedV4Warning,
5
5
  } from '@ai-sdk/provider';
6
6
  import {
7
7
  combineHeaders,
@@ -53,8 +53,8 @@ interface GoogleVertexVideoModelConfig {
53
53
  };
54
54
  }
55
55
 
56
- export class GoogleVertexVideoModel implements Experimental_VideoModelV3 {
57
- readonly specificationVersion = 'v3';
56
+ export class GoogleVertexVideoModel implements Experimental_VideoModelV4 {
57
+ readonly specificationVersion = 'v4';
58
58
 
59
59
  get provider(): string {
60
60
  return this.config.provider;
@@ -71,10 +71,10 @@ export class GoogleVertexVideoModel implements Experimental_VideoModelV3 {
71
71
  ) {}
72
72
 
73
73
  async doGenerate(
74
- options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],
75
- ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {
74
+ options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],
75
+ ): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {
76
76
  const currentDate = this.config._internal?.currentDate?.() ?? new Date();
77
- const warnings: SharedV3Warning[] = [];
77
+ const warnings: SharedV4Warning[] = [];
78
78
 
79
79
  const vertexOptions = (await parseProviderOptions({
80
80
  provider: 'vertex',
@@ -0,0 +1,65 @@
1
+ import { FetchFunction, resolve } from '@ai-sdk/provider-utils';
2
+ import {
3
+ generateAuthToken,
4
+ GoogleCredentials,
5
+ } from '../../edge/google-vertex-auth-edge';
6
+ import {
7
+ createVertexMaas as createVertexMaasOriginal,
8
+ GoogleVertexMaasProvider,
9
+ GoogleVertexMaasProviderSettings as GoogleVertexMaasProviderSettingsOriginal,
10
+ } from '../google-vertex-maas-provider';
11
+
12
+ export type { GoogleVertexMaasProvider };
13
+
14
+ export interface GoogleVertexMaasProviderSettings extends GoogleVertexMaasProviderSettingsOriginal {
15
+ /**
16
+ * Optional. The Google credentials for the Google Cloud service account. If
17
+ * not provided, the Google Vertex provider will use environment variables to
18
+ * load the credentials.
19
+ */
20
+ googleCredentials?: GoogleCredentials;
21
+ }
22
+
23
+ /**
24
+ * Create a Google Vertex AI MaaS (Model as a Service) provider instance for Edge runtimes.
25
+ * Uses the OpenAI-compatible Chat Completions API for partner and open models.
26
+ * Automatically handles Google Cloud authentication.
27
+ *
28
+ * @see https://cloud.google.com/vertex-ai/generative-ai/docs/maas/use-open-models
29
+ */
30
+ export function createVertexMaas(
31
+ options: GoogleVertexMaasProviderSettings = {},
32
+ ): GoogleVertexMaasProvider {
33
+ // Create a custom fetch wrapper that adds auth headers
34
+ const customFetch: FetchFunction = async (url, init) => {
35
+ const token = await generateAuthToken(options.googleCredentials);
36
+ const resolvedHeaders = await resolve(options.headers);
37
+ const authHeaders = {
38
+ ...resolvedHeaders,
39
+ Authorization: `Bearer ${token}`,
40
+ };
41
+
42
+ // Merge auth headers with existing headers from init
43
+ const fetchInit = {
44
+ ...init,
45
+ headers: {
46
+ ...init?.headers,
47
+ ...authHeaders,
48
+ },
49
+ };
50
+
51
+ // Call the original fetch or user's custom fetch
52
+ return (options.fetch ?? fetch)(url, fetchInit);
53
+ };
54
+
55
+ return createVertexMaasOriginal({
56
+ ...options,
57
+ fetch: customFetch,
58
+ headers: undefined, // Don't pass headers, we handle them in fetch
59
+ });
60
+ }
61
+
62
+ /**
63
+ * Default Google Vertex AI MaaS provider instance for Edge runtimes.
64
+ */
65
+ export const vertexMaas = createVertexMaas();
@@ -0,0 +1,9 @@
1
+ export {
2
+ createVertexMaas,
3
+ vertexMaas,
4
+ } from './google-vertex-maas-provider-edge';
5
+ export type {
6
+ GoogleVertexMaasProvider,
7
+ GoogleVertexMaasProviderSettings,
8
+ } from './google-vertex-maas-provider-edge';
9
+ export type { GoogleVertexMaasModelId } from '../google-vertex-maas-options';
@@ -0,0 +1,15 @@
1
+ // https://cloud.google.com/vertex-ai/generative-ai/docs/maas/use-open-models
2
+ export type GoogleVertexMaasModelId =
3
+ | 'deepseek-ai/deepseek-r1-0528-maas'
4
+ | 'deepseek-ai/deepseek-v3.1-maas'
5
+ | 'deepseek-ai/deepseek-v3.2-maas'
6
+ | 'openai/gpt-oss-120b-maas'
7
+ | 'openai/gpt-oss-20b-maas'
8
+ | 'meta/llama-4-maverick-17b-128e-instruct-maas'
9
+ | 'meta/llama-4-scout-17b-16e-instruct-maas'
10
+ | 'minimax/minimax-m2-maas'
11
+ | 'qwen/qwen3-coder-480b-a35b-instruct-maas'
12
+ | 'qwen/qwen3-next-80b-a3b-instruct-maas'
13
+ | 'qwen/qwen3-next-80b-a3b-thinking-maas'
14
+ | 'moonshotai/kimi-k2-thinking-maas'
15
+ | (string & {});
@@ -0,0 +1,64 @@
1
+ import { FetchFunction, resolve } from '@ai-sdk/provider-utils';
2
+ import { GoogleAuthOptions } from 'google-auth-library';
3
+ import { generateAuthToken } from '../google-vertex-auth-google-auth-library';
4
+ import {
5
+ createVertexMaas as createVertexMaasOriginal,
6
+ GoogleVertexMaasProvider,
7
+ GoogleVertexMaasProviderSettings as GoogleVertexMaasProviderSettingsOriginal,
8
+ } from './google-vertex-maas-provider';
9
+
10
+ export type { GoogleVertexMaasProvider };
11
+
12
+ export interface GoogleVertexMaasProviderSettings extends GoogleVertexMaasProviderSettingsOriginal {
13
+ /**
14
+ * Optional. The Authentication options provided by google-auth-library.
15
+ * Complete list of authentication options is documented in the
16
+ * GoogleAuthOptions interface:
17
+ * https://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.
18
+ */
19
+ googleAuthOptions?: GoogleAuthOptions;
20
+ }
21
+
22
+ /**
23
+ * Create a Google Vertex AI MaaS (Model as a Service) provider instance for Node.js.
24
+ * Uses the OpenAI-compatible Chat Completions API for partner and open models.
25
+ * Automatically handles Google Cloud authentication.
26
+ *
27
+ * @see https://cloud.google.com/vertex-ai/generative-ai/docs/maas/use-open-models
28
+ */
29
+ export function createVertexMaas(
30
+ options: GoogleVertexMaasProviderSettings = {},
31
+ ): GoogleVertexMaasProvider {
32
+ // Create a custom fetch wrapper that adds auth headers
33
+ const customFetch: FetchFunction = async (url, init) => {
34
+ const token = await generateAuthToken(options.googleAuthOptions);
35
+ const resolvedHeaders = await resolve(options.headers);
36
+ const authHeaders = {
37
+ ...resolvedHeaders,
38
+ Authorization: `Bearer ${token}`,
39
+ };
40
+
41
+ // Merge auth headers with existing headers from init
42
+ const fetchInit = {
43
+ ...init,
44
+ headers: {
45
+ ...init?.headers,
46
+ ...authHeaders,
47
+ },
48
+ };
49
+
50
+ // Call the original fetch or user's custom fetch
51
+ return (options.fetch ?? fetch)(url, fetchInit);
52
+ };
53
+
54
+ return createVertexMaasOriginal({
55
+ ...options,
56
+ fetch: customFetch,
57
+ headers: undefined, // Don't pass headers, we handle them in fetch
58
+ });
59
+ }
60
+
61
+ /**
62
+ * Default Google Vertex AI MaaS provider instance for Node.js.
63
+ */
64
+ export const vertexMaas = createVertexMaas();
@@ -0,0 +1,111 @@
1
+ import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
2
+ import type { OpenAICompatibleProvider } from '@ai-sdk/openai-compatible';
3
+ import {
4
+ FetchFunction,
5
+ loadOptionalSetting,
6
+ loadSetting,
7
+ Resolvable,
8
+ withoutTrailingSlash,
9
+ } from '@ai-sdk/provider-utils';
10
+ import type { GoogleVertexMaasModelId } from './google-vertex-maas-options';
11
+
12
+ export interface GoogleVertexMaasProvider extends OpenAICompatibleProvider<
13
+ GoogleVertexMaasModelId,
14
+ string,
15
+ string,
16
+ string
17
+ > {}
18
+
19
+ export interface GoogleVertexMaasProviderSettings {
20
+ /**
21
+ * Google Cloud project ID. Defaults to the value of the `GOOGLE_VERTEX_PROJECT` environment variable.
22
+ */
23
+ project?: string;
24
+
25
+ /**
26
+ * Google Cloud location/region. Defaults to the value of the `GOOGLE_VERTEX_LOCATION` environment variable.
27
+ * Use 'global' for the global endpoint.
28
+ */
29
+ location?: string;
30
+
31
+ /**
32
+ * Base URL for the API calls. If not provided, will be constructed from project and location.
33
+ */
34
+ baseURL?: string;
35
+
36
+ /**
37
+ * Headers to use for requests. Can be:
38
+ * - A headers object
39
+ * - A Promise that resolves to a headers object
40
+ * - A function that returns a headers object
41
+ * - A function that returns a Promise of a headers object
42
+ */
43
+ headers?: Resolvable<Record<string, string | undefined>>;
44
+
45
+ /**
46
+ * Custom fetch implementation. You can use it as a middleware to intercept requests,
47
+ * or to provide a custom fetch implementation for e.g. testing.
48
+ */
49
+ fetch?: FetchFunction;
50
+ }
51
+
52
+ /**
53
+ * Create a Google Vertex AI MaaS (Model as a Service) provider instance.
54
+ * Uses the OpenAI-compatible Chat Completions API for partner and open models.
55
+ *
56
+ * @see https://cloud.google.com/vertex-ai/generative-ai/docs/maas/use-open-models
57
+ */
58
+ export function createVertexMaas(
59
+ options: GoogleVertexMaasProviderSettings = {},
60
+ ): GoogleVertexMaasProvider {
61
+ // Lazy-load settings to support loading from environment variables at runtime
62
+ const loadLocation = () =>
63
+ loadOptionalSetting({
64
+ settingValue: options.location,
65
+ environmentVariableName: 'GOOGLE_VERTEX_LOCATION',
66
+ });
67
+
68
+ const loadProject = () =>
69
+ loadSetting({
70
+ settingValue: options.project,
71
+ settingName: 'project',
72
+ environmentVariableName: 'GOOGLE_VERTEX_PROJECT',
73
+ description: 'Google Vertex project',
74
+ });
75
+
76
+ // Construct base URL: https://aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/openapi
77
+ const constructBaseURL = () => {
78
+ const projectId = loadProject();
79
+ const location = loadLocation() ?? 'global';
80
+
81
+ return `https://aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/endpoints/openapi`;
82
+ };
83
+
84
+ const loadBaseURL = () =>
85
+ withoutTrailingSlash(options.baseURL ?? '') || constructBaseURL();
86
+
87
+ let cachedProvider: GoogleVertexMaasProvider | undefined;
88
+ const getProvider = () =>
89
+ (cachedProvider ??= createOpenAICompatible({
90
+ name: 'vertex.maas',
91
+ baseURL: loadBaseURL(),
92
+ fetch: options.fetch,
93
+ }));
94
+
95
+ const provider = (modelId: GoogleVertexMaasModelId) => getProvider()(modelId);
96
+
97
+ provider.specificationVersion = 'v4' as const;
98
+ provider.languageModel = (modelId: GoogleVertexMaasModelId) =>
99
+ getProvider().languageModel(modelId);
100
+ provider.chatModel = (modelId: GoogleVertexMaasModelId) =>
101
+ getProvider().chatModel(modelId);
102
+ provider.completionModel = (modelId: string) =>
103
+ getProvider().completionModel(modelId);
104
+ provider.embeddingModel = (modelId: string) =>
105
+ getProvider().embeddingModel(modelId);
106
+ provider.textEmbeddingModel = (modelId: string) =>
107
+ getProvider().textEmbeddingModel(modelId);
108
+ provider.imageModel = (modelId: string) => getProvider().imageModel(modelId);
109
+
110
+ return provider as GoogleVertexMaasProvider;
111
+ }
@@ -0,0 +1,9 @@
1
+ export {
2
+ createVertexMaas,
3
+ vertexMaas,
4
+ } from './google-vertex-maas-provider-node';
5
+ export type {
6
+ GoogleVertexMaasProvider,
7
+ GoogleVertexMaasProviderSettings,
8
+ } from './google-vertex-maas-provider-node';
9
+ export type { GoogleVertexMaasModelId } from './google-vertex-maas-options';