@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.
- package/CHANGELOG.md +20 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.js +205 -129
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +10 -3
- package/dist/internal/index.js +104 -57
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +37 -13
- package/package.json +3 -3
- package/src/convert-json-schema-to-openapi-schema.ts +10 -0
- package/src/google-batch.ts +61 -35
- package/src/google-image-model.ts +3 -0
- package/src/google-language-model.ts +84 -36
- package/src/google-provider.ts +52 -34
package/src/google-provider.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
EmbeddingModelV4,
|
|
3
|
-
|
|
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 {
|
|
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):
|
|
58
|
+
(modelId: GoogleModelId): LanguageModelV4;
|
|
58
59
|
|
|
59
|
-
languageModel(modelId: GoogleModelId):
|
|
60
|
+
languageModel(modelId: GoogleModelId): LanguageModelV4;
|
|
60
61
|
|
|
61
|
-
chat(modelId: GoogleModelId):
|
|
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):
|
|
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
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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;
|