@ai-sdk/google 4.0.63 → 4.0.65

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.
@@ -1,6 +1,6 @@
1
1
  import type {
2
2
  EmbeddingModelV4,
3
- Experimental_BatchLanguageModelV4 as BatchLanguageModelV4,
3
+ Experimental_BatchV4 as BatchV4,
4
4
  Experimental_VideoModelV4,
5
5
  FilesV4,
6
6
  ImageModelV4,
@@ -23,7 +23,8 @@ import {
23
23
  import { VERSION } from './version';
24
24
  import { GoogleEmbeddingModel } from './google-embedding-model';
25
25
  import type { GoogleEmbeddingModelId } from './google-embedding-model-options';
26
- import { GoogleBatchLanguageModel } from './google-batch';
26
+ import { GoogleBatch } from './google-batch';
27
+ import { GoogleLanguageModel } from './google-language-model';
27
28
  import type { GoogleModelId } from './google-language-model-options';
28
29
  import { googleTools } from './google-tools';
29
30
 
@@ -54,11 +55,13 @@ const googleFilesUrlPattern =
54
55
  /^https:\/\/generativelanguage\.googleapis\.com\/v1beta\/files\/.*$/;
55
56
 
56
57
  export interface GoogleProvider extends ProviderV4 {
57
- (modelId: GoogleModelId): BatchLanguageModelV4;
58
+ (modelId: GoogleModelId): LanguageModelV4;
58
59
 
59
- languageModel(modelId: GoogleModelId): BatchLanguageModelV4;
60
+ languageModel(modelId: GoogleModelId): LanguageModelV4;
60
61
 
61
- chat(modelId: GoogleModelId): BatchLanguageModelV4;
62
+ chat(modelId: GoogleModelId): LanguageModelV4;
63
+
64
+ experimental_batch(): BatchV4<{ text: GoogleModelId }>;
62
65
 
63
66
  /**
64
67
  * Creates a model for image generation.
@@ -71,7 +74,7 @@ export interface GoogleProvider extends ProviderV4 {
71
74
  /**
72
75
  * @deprecated Use `chat()` instead.
73
76
  */
74
- generativeAI(modelId: GoogleModelId): BatchLanguageModelV4;
77
+ generativeAI(modelId: GoogleModelId): LanguageModelV4;
75
78
 
76
79
  /**
77
80
  * Creates a model for text embeddings.
@@ -258,35 +261,49 @@ export function createGoogle(
258
261
  `ai-sdk/google/${VERSION}`,
259
262
  );
260
263
 
264
+ const getSupportedUrls = (
265
+ modelId?: GoogleModelId,
266
+ includeExternalUrls = modelId == null || supportsExternalFileUrls(modelId),
267
+ ) => ({
268
+ '*': [
269
+ googleFilesUrlPattern,
270
+ new RegExp(`^${baseURL}/files/.*$`),
271
+ new RegExp(
272
+ `^https://(?:www\\.)?youtube\\.com/watch\\?v=[\\w-]+(?:&[\\w=&.-]*)?$`,
273
+ ),
274
+ new RegExp(`^https://youtu\\.be/[\\w-]+(?:\\?[\\w=&.-]*)?$`),
275
+ ],
276
+ ...(includeExternalUrls
277
+ ? Object.fromEntries(
278
+ supportedExternalUrlMediaTypes.map(mediaType => [
279
+ mediaType,
280
+ [externalHttpsUrlPattern],
281
+ ]),
282
+ )
283
+ : {}),
284
+ });
285
+
286
+ const languageModelConfig = {
287
+ provider: providerName,
288
+ baseURL,
289
+ headers: getHeaders,
290
+ generateId: options.generateId ?? generateId,
291
+ fetch: options.fetch,
292
+ };
293
+
261
294
  const createChatModel = (modelId: GoogleModelId) =>
262
- new GoogleBatchLanguageModel(modelId, {
263
- provider: providerName,
264
- baseURL,
265
- headers: getHeaders,
266
- generateId: options.generateId ?? generateId,
267
- supportedUrls: () => ({
268
- '*': [
269
- // Default Google Generative Language "files" endpoint
270
- // e.g. https://generativelanguage.googleapis.com/v1beta/files/...
271
- googleFilesUrlPattern,
272
- // Configured Google Generative Language "files" endpoint
273
- new RegExp(`^${baseURL}/files/.*$`),
274
- // YouTube URLs (public or unlisted videos)
275
- new RegExp(
276
- `^https://(?:www\\.)?youtube\\.com/watch\\?v=[\\w-]+(?:&[\\w=&.-]*)?$`,
277
- ),
278
- new RegExp(`^https://youtu\\.be/[\\w-]+(?:\\?[\\w=&.-]*)?$`),
279
- ],
280
- ...(supportsExternalFileUrls(modelId)
281
- ? Object.fromEntries(
282
- supportedExternalUrlMediaTypes.map(mediaType => [
283
- mediaType,
284
- [externalHttpsUrlPattern],
285
- ]),
286
- )
287
- : {}),
288
- }),
289
- fetch: options.fetch,
295
+ new GoogleLanguageModel(modelId, {
296
+ ...languageModelConfig,
297
+ supportedUrls: () => getSupportedUrls(modelId),
298
+ });
299
+
300
+ const createBatch = () =>
301
+ new GoogleBatch({
302
+ provider: `${providerName.replace(/\.generative-ai$/, '')}.batch`,
303
+ config: languageModelConfig,
304
+ // Batch prompt conversion happens before the model is available to the
305
+ // provider. Only advertise URL support shared by every batch model.
306
+ supportedUrls: getSupportedUrls(undefined, false),
290
307
  });
291
308
 
292
309
  const createEmbeddingModel = (modelId: GoogleEmbeddingModelId) =>
@@ -410,6 +427,7 @@ export function createGoogle(
410
427
  provider.languageModel = createChatModel;
411
428
  provider.chat = createChatModel;
412
429
  provider.generativeAI = createChatModel;
430
+ provider.experimental_batch = createBatch;
413
431
  provider.embedding = createEmbeddingModel;
414
432
  provider.embeddingModel = createEmbeddingModel;
415
433
  provider.textEmbedding = createEmbeddingModel;