@ai-sdk/google 4.0.0-beta.44 → 4.0.0-beta.45

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 (28) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +4 -4
  3. package/dist/index.d.ts +33 -33
  4. package/dist/index.js +46 -55
  5. package/dist/index.js.map +1 -1
  6. package/dist/internal/index.d.ts +9 -9
  7. package/dist/internal/index.js +22 -25
  8. package/dist/internal/index.js.map +1 -1
  9. package/docs/{15-google-generative-ai.mdx → 15-google.mdx} +36 -36
  10. package/package.json +4 -4
  11. package/src/{convert-google-generative-ai-usage.ts → convert-google-usage.ts} +6 -6
  12. package/src/{convert-to-google-generative-ai-messages.ts → convert-to-google-messages.ts} +14 -14
  13. package/src/{google-generative-ai-embedding-model.ts → google-embedding-model.ts} +10 -16
  14. package/src/{google-generative-ai-embedding-options.ts → google-embedding-options.ts} +1 -1
  15. package/src/{google-generative-ai-files.ts → google-files.ts} +3 -3
  16. package/src/{google-generative-ai-image-model.ts → google-image-model.ts} +16 -20
  17. package/src/{google-generative-ai-image-settings.ts → google-image-settings.ts} +2 -2
  18. package/src/{google-generative-ai-language-model.ts → google-language-model.ts} +28 -34
  19. package/src/{google-generative-ai-options.ts → google-options.ts} +2 -2
  20. package/src/google-prepare-tools.ts +3 -3
  21. package/src/google-prompt.ts +82 -0
  22. package/src/google-provider.ts +42 -46
  23. package/src/{google-generative-ai-video-model.ts → google-video-model.ts} +5 -5
  24. package/src/{google-generative-ai-video-settings.ts → google-video-settings.ts} +1 -1
  25. package/src/index.ts +28 -10
  26. package/src/internal/index.ts +2 -2
  27. package/src/{map-google-generative-ai-finish-reason.ts → map-google-finish-reason.ts} +1 -1
  28. package/src/google-generative-ai-prompt.ts +0 -82
@@ -34,24 +34,24 @@ import {
34
34
  } from '@ai-sdk/provider-utils';
35
35
  import { z } from 'zod/v4';
36
36
  import {
37
- convertGoogleGenerativeAIUsage,
38
- GoogleGenerativeAIUsageMetadata,
39
- } from './convert-google-generative-ai-usage';
37
+ convertGoogleUsage,
38
+ GoogleUsageMetadata,
39
+ } from './convert-google-usage';
40
40
  import { convertJSONSchemaToOpenAPISchema } from './convert-json-schema-to-openapi-schema';
41
- import { convertToGoogleGenerativeAIMessages } from './convert-to-google-generative-ai-messages';
41
+ import { convertToGoogleMessages } from './convert-to-google-messages';
42
42
  import { getModelPath } from './get-model-path';
43
43
  import { googleFailedResponseHandler } from './google-error';
44
44
  import {
45
- GoogleGenerativeAIModelId,
45
+ GoogleModelId,
46
46
  googleLanguageModelOptions,
47
47
  VertexServiceTierMap,
48
- } from './google-generative-ai-options';
49
- import { GoogleGenerativeAIProviderMetadata } from './google-generative-ai-prompt';
48
+ } from './google-options';
49
+ import { GoogleProviderMetadata } from './google-prompt';
50
50
  import { prepareTools } from './google-prepare-tools';
51
51
  import { GoogleJSONAccumulator, PartialArg } from './google-json-accumulator';
52
- import { mapGoogleGenerativeAIFinishReason } from './map-google-generative-ai-finish-reason';
52
+ import { mapGoogleFinishReason } from './map-google-finish-reason';
53
53
 
54
- type GoogleGenerativeAIConfig = {
54
+ type GoogleConfig = {
55
55
  provider: string;
56
56
  baseURL: string;
57
57
  headers?: Resolvable<Record<string, string | undefined>>;
@@ -64,15 +64,15 @@ type GoogleGenerativeAIConfig = {
64
64
  supportedUrls?: () => LanguageModelV4['supportedUrls'];
65
65
  };
66
66
 
67
- export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
67
+ export class GoogleLanguageModel implements LanguageModelV4 {
68
68
  readonly specificationVersion = 'v4';
69
69
 
70
- readonly modelId: GoogleGenerativeAIModelId;
70
+ readonly modelId: GoogleModelId;
71
71
 
72
- private readonly config: GoogleGenerativeAIConfig;
72
+ private readonly config: GoogleConfig;
73
73
  private readonly generateId: () => string;
74
74
 
75
- static [WORKFLOW_SERIALIZE](model: GoogleGenerativeAILanguageModel) {
75
+ static [WORKFLOW_SERIALIZE](model: GoogleLanguageModel) {
76
76
  return serializeModelOptions({
77
77
  modelId: model.modelId,
78
78
  config: model.config,
@@ -81,15 +81,12 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
81
81
 
82
82
  static [WORKFLOW_DESERIALIZE](options: {
83
83
  modelId: string;
84
- config: GoogleGenerativeAIConfig;
84
+ config: GoogleConfig;
85
85
  }) {
86
- return new GoogleGenerativeAILanguageModel(options.modelId, options.config);
86
+ return new GoogleLanguageModel(options.modelId, options.config);
87
87
  }
88
88
 
89
- constructor(
90
- modelId: GoogleGenerativeAIModelId,
91
- config: GoogleGenerativeAIConfig,
92
- ) {
89
+ constructor(modelId: GoogleModelId, config: GoogleConfig) {
93
90
  this.modelId = modelId;
94
91
  this.config = config;
95
92
  this.generateId = config.generateId ?? generateId;
@@ -179,14 +176,11 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
179
176
  const isGemmaModel = this.modelId.toLowerCase().startsWith('gemma-');
180
177
  const supportsFunctionResponseParts = this.modelId.startsWith('gemini-3');
181
178
 
182
- const { contents, systemInstruction } = convertToGoogleGenerativeAIMessages(
183
- prompt,
184
- {
185
- isGemmaModel,
186
- providerOptionsName,
187
- supportsFunctionResponseParts,
188
- },
189
- );
179
+ const { contents, systemInstruction } = convertToGoogleMessages(prompt, {
180
+ isGemmaModel,
181
+ providerOptionsName,
182
+ supportsFunctionResponseParts,
183
+ });
190
184
 
191
185
  const {
192
186
  tools: googleTools,
@@ -469,7 +463,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
469
463
  return {
470
464
  content,
471
465
  finishReason: {
472
- unified: mapGoogleGenerativeAIFinishReason({
466
+ unified: mapGoogleFinishReason({
473
467
  finishReason: candidate.finishReason,
474
468
  // Only count client-executed tool calls for finish reason determination.
475
469
  hasToolCalls: content.some(
@@ -478,7 +472,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
478
472
  }),
479
473
  raw: candidate.finishReason ?? undefined,
480
474
  },
481
- usage: convertGoogleGenerativeAIUsage(usageMetadata),
475
+ usage: convertGoogleUsage(usageMetadata),
482
476
  warnings,
483
477
  providerMetadata: {
484
478
  [providerOptionsName]: {
@@ -489,7 +483,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
489
483
  usageMetadata: usageMetadata ?? null,
490
484
  finishMessage: candidate.finishMessage ?? null,
491
485
  serviceTier: response.serviceTier ?? null,
492
- } satisfies GoogleGenerativeAIProviderMetadata,
486
+ } satisfies GoogleProviderMetadata,
493
487
  },
494
488
  request: { body: args },
495
489
  response: {
@@ -529,7 +523,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
529
523
  unified: 'other',
530
524
  raw: undefined,
531
525
  };
532
- let usage: GoogleGenerativeAIUsageMetadata | undefined = undefined;
526
+ let usage: GoogleUsageMetadata | undefined = undefined;
533
527
  let providerMetadata: SharedV4ProviderMetadata | undefined = undefined;
534
528
  let lastGroundingMetadata: GroundingMetadataSchema | null = null;
535
529
  let lastUrlContextMetadata: UrlContextMetadataSchema | null = null;
@@ -965,7 +959,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
965
959
 
966
960
  if (candidate.finishReason != null) {
967
961
  finishReason = {
968
- unified: mapGoogleGenerativeAIFinishReason({
962
+ unified: mapGoogleFinishReason({
969
963
  finishReason: candidate.finishReason,
970
964
  hasToolCalls,
971
965
  }),
@@ -981,7 +975,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
981
975
  usageMetadata: usageMetadata ?? null,
982
976
  finishMessage: candidate.finishMessage ?? null,
983
977
  serviceTier,
984
- } satisfies GoogleGenerativeAIProviderMetadata,
978
+ } satisfies GoogleProviderMetadata,
985
979
  };
986
980
  }
987
981
  },
@@ -1003,7 +997,7 @@ export class GoogleGenerativeAILanguageModel implements LanguageModelV4 {
1003
997
  controller.enqueue({
1004
998
  type: 'finish',
1005
999
  finishReason,
1006
- usage: convertGoogleGenerativeAIUsage(usage),
1000
+ usage: convertGoogleUsage(usage),
1007
1001
  providerMetadata,
1008
1002
  });
1009
1003
  },
@@ -1,7 +1,7 @@
1
1
  import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';
2
2
  import { z } from 'zod/v4';
3
3
 
4
- export type GoogleGenerativeAIModelId =
4
+ export type GoogleModelId =
5
5
  // Stable models
6
6
  // https://ai.google.dev/gemini-api/docs/models/gemini
7
7
  | 'gemini-2.0-flash'
@@ -73,7 +73,7 @@ export const googleLanguageModelOptions = lazySchema(() =>
73
73
  *
74
74
  * This is useful when the JSON Schema contains elements that are
75
75
  * not supported by the OpenAPI schema version that
76
- * Google Generative AI uses. You can use this to disable
76
+ * Google uses. You can use this to disable
77
77
  * structured outputs if you need to.
78
78
  */
79
79
  structuredOutputs: z.boolean().optional(),
@@ -4,7 +4,7 @@ import {
4
4
  UnsupportedFunctionalityError,
5
5
  } from '@ai-sdk/provider';
6
6
  import { convertJSONSchemaToOpenAPISchema } from './convert-json-schema-to-openapi-schema';
7
- import { GoogleGenerativeAIModelId } from './google-generative-ai-options';
7
+ import { GoogleModelId } from './google-options';
8
8
 
9
9
  export function prepareTools({
10
10
  tools,
@@ -13,7 +13,7 @@ export function prepareTools({
13
13
  }: {
14
14
  tools: LanguageModelV4CallOptions['tools'];
15
15
  toolChoice?: LanguageModelV4CallOptions['toolChoice'];
16
- modelId: GoogleGenerativeAIModelId;
16
+ modelId: GoogleModelId;
17
17
  }): {
18
18
  tools:
19
19
  | Array<
@@ -49,7 +49,7 @@ export function prepareTools({
49
49
  'gemini-flash-latest',
50
50
  'gemini-flash-lite-latest',
51
51
  'gemini-pro-latest',
52
- ] as const satisfies GoogleGenerativeAIModelId[]
52
+ ] as const satisfies GoogleModelId[]
53
53
  ).some(id => id === modelId);
54
54
  const isGemini2orNewer =
55
55
  modelId.includes('gemini-2') ||
@@ -0,0 +1,82 @@
1
+ import {
2
+ GroundingMetadataSchema,
3
+ PromptFeedbackSchema,
4
+ UrlContextMetadataSchema,
5
+ type SafetyRatingSchema,
6
+ UsageMetadataSchema,
7
+ } from './google-language-model';
8
+
9
+ export type GooglePrompt = {
10
+ systemInstruction?: GoogleSystemInstruction;
11
+ contents: Array<GoogleContent>;
12
+ };
13
+
14
+ export type GoogleSystemInstruction = {
15
+ parts: Array<{ text: string }>;
16
+ };
17
+
18
+ export type GoogleContent = {
19
+ role: 'user' | 'model';
20
+ parts: Array<GoogleContentPart>;
21
+ };
22
+
23
+ export type GoogleContentPart =
24
+ | { text: string; thought?: boolean; thoughtSignature?: string }
25
+ | {
26
+ inlineData: { mimeType: string; data: string };
27
+ thought?: boolean;
28
+ thoughtSignature?: string;
29
+ }
30
+ | { functionCall: { name: string; args: unknown }; thoughtSignature?: string }
31
+ | {
32
+ functionResponse: {
33
+ name: string;
34
+ response: unknown;
35
+ parts?: Array<GoogleFunctionResponsePart>;
36
+ };
37
+ }
38
+ | {
39
+ fileData: { mimeType: string; fileUri: string };
40
+ thought?: boolean;
41
+ thoughtSignature?: string;
42
+ }
43
+ | {
44
+ toolCall: {
45
+ toolType: string;
46
+ args?: unknown;
47
+ id: string;
48
+ };
49
+ thoughtSignature?: string;
50
+ }
51
+ | {
52
+ toolResponse: {
53
+ toolType: string;
54
+ response?: unknown;
55
+ id: string;
56
+ };
57
+ thoughtSignature?: string;
58
+ };
59
+
60
+ export type GoogleFunctionResponsePart = {
61
+ inlineData: { mimeType: string; data: string };
62
+ };
63
+
64
+ export type GoogleGroundingMetadata = GroundingMetadataSchema;
65
+
66
+ export type GoogleUrlContextMetadata = UrlContextMetadataSchema;
67
+
68
+ export type GoogleSafetyRating = SafetyRatingSchema;
69
+
70
+ export type GooglePromptFeedback = PromptFeedbackSchema;
71
+
72
+ export type GoogleUsageMetadata = UsageMetadataSchema;
73
+
74
+ export interface GoogleProviderMetadata {
75
+ promptFeedback: GooglePromptFeedback | null;
76
+ groundingMetadata: GoogleGroundingMetadata | null;
77
+ urlContextMetadata: GoogleUrlContextMetadata | null;
78
+ safetyRatings: GoogleSafetyRating[] | null;
79
+ usageMetadata: GoogleUsageMetadata | null;
80
+ finishMessage: string | null;
81
+ serviceTier: string | null;
82
+ }
@@ -14,81 +14,77 @@ import {
14
14
  withUserAgentSuffix,
15
15
  } from '@ai-sdk/provider-utils';
16
16
  import { VERSION } from './version';
17
- import { GoogleGenerativeAIEmbeddingModel } from './google-generative-ai-embedding-model';
18
- import { GoogleGenerativeAIEmbeddingModelId } from './google-generative-ai-embedding-options';
19
- import { GoogleGenerativeAILanguageModel } from './google-generative-ai-language-model';
20
- import { GoogleGenerativeAIModelId } from './google-generative-ai-options';
17
+ import { GoogleEmbeddingModel } from './google-embedding-model';
18
+ import { GoogleEmbeddingModelId } from './google-embedding-options';
19
+ import { GoogleLanguageModel } from './google-language-model';
20
+ import { GoogleModelId } from './google-options';
21
21
  import { googleTools } from './google-tools';
22
22
 
23
23
  import {
24
- GoogleGenerativeAIImageSettings,
25
- GoogleGenerativeAIImageModelId,
26
- } from './google-generative-ai-image-settings';
27
- import { GoogleGenerativeAIImageModel } from './google-generative-ai-image-model';
28
- import { GoogleGenerativeAIFiles } from './google-generative-ai-files';
29
- import { GoogleGenerativeAIVideoModel } from './google-generative-ai-video-model';
30
- import { GoogleGenerativeAIVideoModelId } from './google-generative-ai-video-settings';
24
+ GoogleImageSettings,
25
+ GoogleImageModelId,
26
+ } from './google-image-settings';
27
+ import { GoogleImageModel } from './google-image-model';
28
+ import { GoogleFiles } from './google-files';
29
+ import { GoogleVideoModel } from './google-video-model';
30
+ import { GoogleVideoModelId } from './google-video-settings';
31
31
 
32
- export interface GoogleGenerativeAIProvider extends ProviderV4 {
33
- (modelId: GoogleGenerativeAIModelId): LanguageModelV4;
32
+ export interface GoogleProvider extends ProviderV4 {
33
+ (modelId: GoogleModelId): LanguageModelV4;
34
34
 
35
- languageModel(modelId: GoogleGenerativeAIModelId): LanguageModelV4;
35
+ languageModel(modelId: GoogleModelId): LanguageModelV4;
36
36
 
37
- chat(modelId: GoogleGenerativeAIModelId): LanguageModelV4;
37
+ chat(modelId: GoogleModelId): LanguageModelV4;
38
38
 
39
39
  /**
40
40
  * Creates a model for image generation.
41
41
  */
42
42
  image(
43
- modelId: GoogleGenerativeAIImageModelId,
44
- settings?: GoogleGenerativeAIImageSettings,
43
+ modelId: GoogleImageModelId,
44
+ settings?: GoogleImageSettings,
45
45
  ): ImageModelV4;
46
46
 
47
47
  /**
48
48
  * @deprecated Use `chat()` instead.
49
49
  */
50
- generativeAI(modelId: GoogleGenerativeAIModelId): LanguageModelV4;
50
+ generativeAI(modelId: GoogleModelId): LanguageModelV4;
51
51
 
52
52
  /**
53
53
  * Creates a model for text embeddings.
54
54
  */
55
- embedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV4;
55
+ embedding(modelId: GoogleEmbeddingModelId): EmbeddingModelV4;
56
56
 
57
57
  /**
58
58
  * Creates a model for text embeddings.
59
59
  */
60
- embeddingModel(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV4;
60
+ embeddingModel(modelId: GoogleEmbeddingModelId): EmbeddingModelV4;
61
61
 
62
62
  /**
63
63
  * @deprecated Use `embedding` instead.
64
64
  */
65
- textEmbedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV4;
65
+ textEmbedding(modelId: GoogleEmbeddingModelId): EmbeddingModelV4;
66
66
 
67
67
  /**
68
68
  * @deprecated Use `embeddingModel` instead.
69
69
  */
70
- textEmbeddingModel(
71
- modelId: GoogleGenerativeAIEmbeddingModelId,
72
- ): EmbeddingModelV4;
70
+ textEmbeddingModel(modelId: GoogleEmbeddingModelId): EmbeddingModelV4;
73
71
 
74
72
  /**
75
73
  * Creates a model for video generation.
76
74
  */
77
- video(modelId: GoogleGenerativeAIVideoModelId): Experimental_VideoModelV4;
75
+ video(modelId: GoogleVideoModelId): Experimental_VideoModelV4;
78
76
 
79
77
  /**
80
78
  * Creates a model for video generation.
81
79
  */
82
- videoModel(
83
- modelId: GoogleGenerativeAIVideoModelId,
84
- ): Experimental_VideoModelV4;
80
+ videoModel(modelId: GoogleVideoModelId): Experimental_VideoModelV4;
85
81
 
86
82
  files(): FilesV4;
87
83
 
88
84
  tools: typeof googleTools;
89
85
  }
90
86
 
91
- export interface GoogleGenerativeAIProviderSettings {
87
+ export interface GoogleProviderSettings {
92
88
  /**
93
89
  * Use a different URL prefix for API calls, e.g. to use proxy servers.
94
90
  * The default prefix is `https://generativelanguage.googleapis.com/v1beta`.
@@ -125,11 +121,11 @@ export interface GoogleGenerativeAIProviderSettings {
125
121
  }
126
122
 
127
123
  /**
128
- * Create a Google Generative AI provider instance.
124
+ * Create a Google provider instance.
129
125
  */
130
- export function createGoogleGenerativeAI(
131
- options: GoogleGenerativeAIProviderSettings = {},
132
- ): GoogleGenerativeAIProvider {
126
+ export function createGoogle(
127
+ options: GoogleProviderSettings = {},
128
+ ): GoogleProvider {
133
129
  const baseURL =
134
130
  withoutTrailingSlash(options.baseURL) ??
135
131
  'https://generativelanguage.googleapis.com/v1beta';
@@ -149,8 +145,8 @@ export function createGoogleGenerativeAI(
149
145
  `ai-sdk/google/${VERSION}`,
150
146
  );
151
147
 
152
- const createChatModel = (modelId: GoogleGenerativeAIModelId) =>
153
- new GoogleGenerativeAILanguageModel(modelId, {
148
+ const createChatModel = (modelId: GoogleModelId) =>
149
+ new GoogleLanguageModel(modelId, {
154
150
  provider: providerName,
155
151
  baseURL,
156
152
  headers: getHeaders,
@@ -170,8 +166,8 @@ export function createGoogleGenerativeAI(
170
166
  fetch: options.fetch,
171
167
  });
172
168
 
173
- const createEmbeddingModel = (modelId: GoogleGenerativeAIEmbeddingModelId) =>
174
- new GoogleGenerativeAIEmbeddingModel(modelId, {
169
+ const createEmbeddingModel = (modelId: GoogleEmbeddingModelId) =>
170
+ new GoogleEmbeddingModel(modelId, {
175
171
  provider: providerName,
176
172
  baseURL,
177
173
  headers: getHeaders,
@@ -179,10 +175,10 @@ export function createGoogleGenerativeAI(
179
175
  });
180
176
 
181
177
  const createImageModel = (
182
- modelId: GoogleGenerativeAIImageModelId,
183
- settings: GoogleGenerativeAIImageSettings = {},
178
+ modelId: GoogleImageModelId,
179
+ settings: GoogleImageSettings = {},
184
180
  ) =>
185
- new GoogleGenerativeAIImageModel(modelId, settings, {
181
+ new GoogleImageModel(modelId, settings, {
186
182
  provider: providerName,
187
183
  baseURL,
188
184
  headers: getHeaders,
@@ -190,15 +186,15 @@ export function createGoogleGenerativeAI(
190
186
  });
191
187
 
192
188
  const createFiles = () =>
193
- new GoogleGenerativeAIFiles({
189
+ new GoogleFiles({
194
190
  provider: providerName,
195
191
  baseURL,
196
192
  headers: getHeaders,
197
193
  fetch: options.fetch,
198
194
  });
199
195
 
200
- const createVideoModel = (modelId: GoogleGenerativeAIVideoModelId) =>
201
- new GoogleGenerativeAIVideoModel(modelId, {
196
+ const createVideoModel = (modelId: GoogleVideoModelId) =>
197
+ new GoogleVideoModel(modelId, {
202
198
  provider: providerName,
203
199
  baseURL,
204
200
  headers: getHeaders,
@@ -206,7 +202,7 @@ export function createGoogleGenerativeAI(
206
202
  generateId: options.generateId ?? generateId,
207
203
  });
208
204
 
209
- const provider = function (modelId: GoogleGenerativeAIModelId) {
205
+ const provider = function (modelId: GoogleModelId) {
210
206
  if (new.target) {
211
207
  throw new Error(
212
208
  'The Google Generative AI model function cannot be called with the new keyword.',
@@ -231,10 +227,10 @@ export function createGoogleGenerativeAI(
231
227
  provider.files = createFiles;
232
228
  provider.tools = googleTools;
233
229
 
234
- return provider as GoogleGenerativeAIProvider;
230
+ return provider as GoogleProvider;
235
231
  }
236
232
 
237
233
  /**
238
234
  * Default Google Generative AI provider instance.
239
235
  */
240
- export const google = createGoogleGenerativeAI();
236
+ export const google = createGoogle();
@@ -19,7 +19,7 @@ import {
19
19
  } from '@ai-sdk/provider-utils';
20
20
  import { z } from 'zod/v4';
21
21
  import { googleFailedResponseHandler } from './google-error';
22
- import type { GoogleGenerativeAIVideoModelId } from './google-generative-ai-video-settings';
22
+ import type { GoogleVideoModelId } from './google-video-settings';
23
23
 
24
24
  export type GoogleVideoModelOptions = {
25
25
  // Polling configuration
@@ -39,7 +39,7 @@ export type GoogleVideoModelOptions = {
39
39
  [key: string]: unknown; // For passthrough
40
40
  };
41
41
 
42
- interface GoogleGenerativeAIVideoModelConfig {
42
+ interface GoogleVideoModelConfig {
43
43
  provider: string;
44
44
  baseURL: string;
45
45
  headers?: Resolvable<Record<string, string | undefined>>;
@@ -50,7 +50,7 @@ interface GoogleGenerativeAIVideoModelConfig {
50
50
  };
51
51
  }
52
52
 
53
- export class GoogleGenerativeAIVideoModel implements Experimental_VideoModelV4 {
53
+ export class GoogleVideoModel implements Experimental_VideoModelV4 {
54
54
  readonly specificationVersion = 'v4';
55
55
 
56
56
  get provider(): string {
@@ -63,8 +63,8 @@ export class GoogleGenerativeAIVideoModel implements Experimental_VideoModelV4 {
63
63
  }
64
64
 
65
65
  constructor(
66
- readonly modelId: GoogleGenerativeAIVideoModelId,
67
- private readonly config: GoogleGenerativeAIVideoModelConfig,
66
+ readonly modelId: GoogleVideoModelId,
67
+ private readonly config: GoogleVideoModelConfig,
68
68
  ) {}
69
69
 
70
70
  async doGenerate(
@@ -1,4 +1,4 @@
1
- export type GoogleGenerativeAIVideoModelId =
1
+ export type GoogleVideoModelId =
2
2
  | 'veo-3.1-fast-generate-preview'
3
3
  | 'veo-3.1-generate-preview'
4
4
  | 'veo-3.1-generate'
package/src/index.ts CHANGED
@@ -3,28 +3,46 @@ export type {
3
3
  GoogleLanguageModelOptions,
4
4
  /** @deprecated Use `GoogleLanguageModelOptions` instead. */
5
5
  GoogleLanguageModelOptions as GoogleGenerativeAIProviderOptions,
6
- } from './google-generative-ai-options';
7
- export type { GoogleGenerativeAIProviderMetadata } from './google-generative-ai-prompt';
6
+ } from './google-options';
7
+ export type {
8
+ GoogleProviderMetadata,
9
+ /** @deprecated Use `GoogleProviderMetadata` instead. */
10
+ GoogleProviderMetadata as GoogleGenerativeAIProviderMetadata,
11
+ } from './google-prompt';
8
12
  export type {
9
13
  GoogleImageModelOptions,
10
14
  /** @deprecated Use `GoogleImageModelOptions` instead. */
11
15
  GoogleImageModelOptions as GoogleGenerativeAIImageProviderOptions,
12
- } from './google-generative-ai-image-model';
16
+ } from './google-image-model';
13
17
  export type {
14
18
  GoogleEmbeddingModelOptions,
15
19
  /** @deprecated Use `GoogleEmbeddingModelOptions` instead. */
16
20
  GoogleEmbeddingModelOptions as GoogleGenerativeAIEmbeddingProviderOptions,
17
- } from './google-generative-ai-embedding-options';
21
+ } from './google-embedding-options';
18
22
  export type {
19
23
  GoogleVideoModelOptions,
20
24
  /** @deprecated Use `GoogleVideoModelOptions` instead. */
21
25
  GoogleVideoModelOptions as GoogleGenerativeAIVideoProviderOptions,
22
- } from './google-generative-ai-video-model';
23
- export type { GoogleGenerativeAIVideoModelId } from './google-generative-ai-video-settings';
24
- export type { GoogleFilesUploadOptions } from './google-generative-ai-files';
25
- export { createGoogleGenerativeAI, google } from './google-provider';
26
+ } from './google-video-model';
27
+ export type {
28
+ GoogleVideoModelId,
29
+ /** @deprecated Use `GoogleVideoModelId` instead. */
30
+ GoogleVideoModelId as GoogleGenerativeAIVideoModelId,
31
+ } from './google-video-settings';
32
+ export type { GoogleFilesUploadOptions } from './google-files';
33
+ export {
34
+ createGoogle,
35
+ google,
36
+ /** @deprecated Use `createGoogle` instead. */
37
+ createGoogle as createGoogleGenerativeAI,
38
+ } from './google-provider';
26
39
  export type {
27
- GoogleGenerativeAIProvider,
28
- GoogleGenerativeAIProviderSettings,
40
+ GoogleProvider,
41
+ GoogleProviderSettings,
42
+ /** @deprecated Use `GoogleProvider` instead. */
43
+ GoogleProvider as GoogleGenerativeAIProvider,
44
+ /** @deprecated Use `GoogleProviderSettings` instead. */
45
+ GoogleProviderSettings as GoogleGenerativeAIProviderSettings,
29
46
  } from './google-provider';
47
+
30
48
  export { VERSION } from './version';
@@ -1,3 +1,3 @@
1
- export * from '../google-generative-ai-language-model';
1
+ export * from '../google-language-model';
2
2
  export { googleTools } from '../google-tools';
3
- export type { GoogleGenerativeAIModelId } from '../google-generative-ai-options';
3
+ export type { GoogleModelId } from '../google-options';
@@ -1,6 +1,6 @@
1
1
  import { LanguageModelV4FinishReason } from '@ai-sdk/provider';
2
2
 
3
- export function mapGoogleGenerativeAIFinishReason({
3
+ export function mapGoogleFinishReason({
4
4
  finishReason,
5
5
  hasToolCalls,
6
6
  }: {
@@ -1,82 +0,0 @@
1
- import {
2
- GroundingMetadataSchema,
3
- PromptFeedbackSchema,
4
- UrlContextMetadataSchema,
5
- type SafetyRatingSchema,
6
- UsageMetadataSchema,
7
- } from './google-generative-ai-language-model';
8
-
9
- export type GoogleGenerativeAIPrompt = {
10
- systemInstruction?: GoogleGenerativeAISystemInstruction;
11
- contents: Array<GoogleGenerativeAIContent>;
12
- };
13
-
14
- export type GoogleGenerativeAISystemInstruction = {
15
- parts: Array<{ text: string }>;
16
- };
17
-
18
- export type GoogleGenerativeAIContent = {
19
- role: 'user' | 'model';
20
- parts: Array<GoogleGenerativeAIContentPart>;
21
- };
22
-
23
- export type GoogleGenerativeAIContentPart =
24
- | { text: string; thought?: boolean; thoughtSignature?: string }
25
- | {
26
- inlineData: { mimeType: string; data: string };
27
- thought?: boolean;
28
- thoughtSignature?: string;
29
- }
30
- | { functionCall: { name: string; args: unknown }; thoughtSignature?: string }
31
- | {
32
- functionResponse: {
33
- name: string;
34
- response: unknown;
35
- parts?: Array<GoogleGenerativeAIFunctionResponsePart>;
36
- };
37
- }
38
- | {
39
- fileData: { mimeType: string; fileUri: string };
40
- thought?: boolean;
41
- thoughtSignature?: string;
42
- }
43
- | {
44
- toolCall: {
45
- toolType: string;
46
- args?: unknown;
47
- id: string;
48
- };
49
- thoughtSignature?: string;
50
- }
51
- | {
52
- toolResponse: {
53
- toolType: string;
54
- response?: unknown;
55
- id: string;
56
- };
57
- thoughtSignature?: string;
58
- };
59
-
60
- export type GoogleGenerativeAIFunctionResponsePart = {
61
- inlineData: { mimeType: string; data: string };
62
- };
63
-
64
- export type GoogleGenerativeAIGroundingMetadata = GroundingMetadataSchema;
65
-
66
- export type GoogleGenerativeAIUrlContextMetadata = UrlContextMetadataSchema;
67
-
68
- export type GoogleGenerativeAISafetyRating = SafetyRatingSchema;
69
-
70
- export type GoogleGenerativeAIPromptFeedback = PromptFeedbackSchema;
71
-
72
- export type GoogleGenerativeAIUsageMetadata = UsageMetadataSchema;
73
-
74
- export interface GoogleGenerativeAIProviderMetadata {
75
- promptFeedback: GoogleGenerativeAIPromptFeedback | null;
76
- groundingMetadata: GoogleGenerativeAIGroundingMetadata | null;
77
- urlContextMetadata: GoogleGenerativeAIUrlContextMetadata | null;
78
- safetyRatings: GoogleGenerativeAISafetyRating[] | null;
79
- usageMetadata: GoogleGenerativeAIUsageMetadata | null;
80
- finishMessage: string | null;
81
- serviceTier: string | null;
82
- }