@ai-sdk/google 4.0.49 → 4.0.51
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 +16 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1146 -558
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +146 -6
- package/dist/internal/index.js +43 -25
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +59 -0
- package/package.json +6 -6
- package/src/google-batch.ts +739 -0
- package/src/google-language-model.ts +58 -35
- package/src/google-provider.ts +7 -6
|
@@ -62,7 +62,7 @@ const configurableSafetySettingCategories = [
|
|
|
62
62
|
'HARM_CATEGORY_SEXUALLY_EXPLICIT',
|
|
63
63
|
] as const;
|
|
64
64
|
|
|
65
|
-
type
|
|
65
|
+
export type GoogleLanguageModelConfig = {
|
|
66
66
|
provider: string;
|
|
67
67
|
baseURL: string;
|
|
68
68
|
headers?: Resolvable<Record<string, string | undefined>>;
|
|
@@ -80,7 +80,7 @@ export class GoogleLanguageModel implements LanguageModelV4 {
|
|
|
80
80
|
|
|
81
81
|
readonly modelId: GoogleModelId;
|
|
82
82
|
|
|
83
|
-
private readonly config:
|
|
83
|
+
private readonly config: GoogleLanguageModelConfig;
|
|
84
84
|
private readonly generateId: () => string;
|
|
85
85
|
|
|
86
86
|
static [WORKFLOW_SERIALIZE](model: GoogleLanguageModel) {
|
|
@@ -92,12 +92,12 @@ export class GoogleLanguageModel implements LanguageModelV4 {
|
|
|
92
92
|
|
|
93
93
|
static [WORKFLOW_DESERIALIZE](options: {
|
|
94
94
|
modelId: string;
|
|
95
|
-
config:
|
|
95
|
+
config: GoogleLanguageModelConfig;
|
|
96
96
|
}) {
|
|
97
97
|
return new GoogleLanguageModel(options.modelId, options.config);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
constructor(modelId: GoogleModelId, config:
|
|
100
|
+
constructor(modelId: GoogleModelId, config: GoogleLanguageModelConfig) {
|
|
101
101
|
this.modelId = modelId;
|
|
102
102
|
this.config = config;
|
|
103
103
|
this.generateId = config.generateId ?? generateId;
|
|
@@ -111,7 +111,7 @@ export class GoogleLanguageModel implements LanguageModelV4 {
|
|
|
111
111
|
return this.config.supportedUrls?.() ?? {};
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
protected async getArgs(
|
|
115
115
|
{
|
|
116
116
|
prompt,
|
|
117
117
|
maxOutputTokens,
|
|
@@ -375,38 +375,19 @@ export class GoogleLanguageModel implements LanguageModelV4 {
|
|
|
375
375
|
};
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
378
|
+
protected convertGenerateContentResponse({
|
|
379
|
+
response,
|
|
380
|
+
warnings,
|
|
381
|
+
providerOptionsNames,
|
|
382
|
+
}: {
|
|
383
|
+
response: InferSchema<typeof responseSchema>;
|
|
384
|
+
warnings: SharedV4Warning[];
|
|
385
|
+
providerOptionsNames: readonly string[];
|
|
386
|
+
}): LanguageModelV4GenerateResult {
|
|
383
387
|
const wrapProviderMetadata = (payload: Record<string, unknown>) =>
|
|
384
388
|
Object.fromEntries(
|
|
385
389
|
providerOptionsNames.map(name => [name, payload]),
|
|
386
390
|
) as SharedV4ProviderMetadata;
|
|
387
|
-
|
|
388
|
-
const mergedHeaders = combineHeaders(
|
|
389
|
-
this.config.headers ? await resolve(this.config.headers) : undefined,
|
|
390
|
-
options.headers,
|
|
391
|
-
extraHeaders,
|
|
392
|
-
);
|
|
393
|
-
|
|
394
|
-
const {
|
|
395
|
-
responseHeaders,
|
|
396
|
-
value: response,
|
|
397
|
-
rawValue: rawResponse,
|
|
398
|
-
} = await postJsonToApi({
|
|
399
|
-
url: `${this.config.baseURL}/${getModelPath(
|
|
400
|
-
this.modelId,
|
|
401
|
-
)}:generateContent`,
|
|
402
|
-
headers: mergedHeaders,
|
|
403
|
-
body: args,
|
|
404
|
-
failedResponseHandler: googleFailedResponseHandler,
|
|
405
|
-
successfulResponseHandler: createJsonResponseHandler(responseSchema),
|
|
406
|
-
abortSignal: options.abortSignal,
|
|
407
|
-
fetch: this.config.fetch,
|
|
408
|
-
});
|
|
409
|
-
|
|
410
391
|
const candidate = response.candidates[0];
|
|
411
392
|
const content: Array<LanguageModelV4Content> = [];
|
|
412
393
|
|
|
@@ -566,10 +547,52 @@ export class GoogleLanguageModel implements LanguageModelV4 {
|
|
|
566
547
|
finishMessage: candidate.finishMessage ?? null,
|
|
567
548
|
serviceTier: usageMetadata?.serviceTier ?? null,
|
|
568
549
|
} satisfies GoogleProviderMetadata),
|
|
569
|
-
request: { body: args },
|
|
570
550
|
response: {
|
|
571
551
|
// TODO timestamp, model id
|
|
572
552
|
id: response.responseId ?? undefined,
|
|
553
|
+
},
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
async doGenerate(
|
|
558
|
+
options: LanguageModelV4CallOptions,
|
|
559
|
+
): Promise<LanguageModelV4GenerateResult> {
|
|
560
|
+
const { args, warnings, providerOptionsNames, extraHeaders } =
|
|
561
|
+
await this.getArgs(options);
|
|
562
|
+
|
|
563
|
+
const mergedHeaders = combineHeaders(
|
|
564
|
+
this.config.headers ? await resolve(this.config.headers) : undefined,
|
|
565
|
+
options.headers,
|
|
566
|
+
extraHeaders,
|
|
567
|
+
);
|
|
568
|
+
|
|
569
|
+
const {
|
|
570
|
+
responseHeaders,
|
|
571
|
+
value: response,
|
|
572
|
+
rawValue: rawResponse,
|
|
573
|
+
} = await postJsonToApi({
|
|
574
|
+
url: `${this.config.baseURL}/${getModelPath(
|
|
575
|
+
this.modelId,
|
|
576
|
+
)}:generateContent`,
|
|
577
|
+
headers: mergedHeaders,
|
|
578
|
+
body: args,
|
|
579
|
+
failedResponseHandler: googleFailedResponseHandler,
|
|
580
|
+
successfulResponseHandler: createJsonResponseHandler(responseSchema),
|
|
581
|
+
abortSignal: options.abortSignal,
|
|
582
|
+
fetch: this.config.fetch,
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
const result = this.convertGenerateContentResponse({
|
|
586
|
+
response,
|
|
587
|
+
warnings,
|
|
588
|
+
providerOptionsNames,
|
|
589
|
+
});
|
|
590
|
+
|
|
591
|
+
return {
|
|
592
|
+
...result,
|
|
593
|
+
request: { body: args },
|
|
594
|
+
response: {
|
|
595
|
+
...result.response,
|
|
573
596
|
headers: responseHeaders,
|
|
574
597
|
body: rawResponse,
|
|
575
598
|
},
|
|
@@ -1563,7 +1586,7 @@ export const getUrlContextMetadataSchema = () =>
|
|
|
1563
1586
|
.nullish(),
|
|
1564
1587
|
});
|
|
1565
1588
|
|
|
1566
|
-
const responseSchema = lazySchema(() =>
|
|
1589
|
+
export const responseSchema = lazySchema(() =>
|
|
1567
1590
|
zodSchema(
|
|
1568
1591
|
z.object({
|
|
1569
1592
|
responseId: z.string().nullish(),
|
package/src/google-provider.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
EmbeddingModelV4,
|
|
3
|
+
Experimental_BatchLanguageModelV4 as BatchLanguageModelV4,
|
|
3
4
|
Experimental_VideoModelV4,
|
|
4
5
|
FilesV4,
|
|
5
6
|
ImageModelV4,
|
|
@@ -21,7 +22,7 @@ import {
|
|
|
21
22
|
import { VERSION } from './version';
|
|
22
23
|
import { GoogleEmbeddingModel } from './google-embedding-model';
|
|
23
24
|
import type { GoogleEmbeddingModelId } from './google-embedding-model-options';
|
|
24
|
-
import {
|
|
25
|
+
import { GoogleBatchLanguageModel } from './google-batch';
|
|
25
26
|
import type { GoogleModelId } from './google-language-model-options';
|
|
26
27
|
import { googleTools } from './google-tools';
|
|
27
28
|
|
|
@@ -46,11 +47,11 @@ import { GoogleSpeechTranslationModel } from './speech-translation/google-speech
|
|
|
46
47
|
import type { GoogleSpeechTranslationModelId } from './speech-translation/google-speech-translation-model-options';
|
|
47
48
|
|
|
48
49
|
export interface GoogleProvider extends ProviderV4 {
|
|
49
|
-
(modelId: GoogleModelId):
|
|
50
|
+
(modelId: GoogleModelId): BatchLanguageModelV4;
|
|
50
51
|
|
|
51
|
-
languageModel(modelId: GoogleModelId):
|
|
52
|
+
languageModel(modelId: GoogleModelId): BatchLanguageModelV4;
|
|
52
53
|
|
|
53
|
-
chat(modelId: GoogleModelId):
|
|
54
|
+
chat(modelId: GoogleModelId): BatchLanguageModelV4;
|
|
54
55
|
|
|
55
56
|
/**
|
|
56
57
|
* Creates a model for image generation.
|
|
@@ -63,7 +64,7 @@ export interface GoogleProvider extends ProviderV4 {
|
|
|
63
64
|
/**
|
|
64
65
|
* @deprecated Use `chat()` instead.
|
|
65
66
|
*/
|
|
66
|
-
generativeAI(modelId: GoogleModelId):
|
|
67
|
+
generativeAI(modelId: GoogleModelId): BatchLanguageModelV4;
|
|
67
68
|
|
|
68
69
|
/**
|
|
69
70
|
* Creates a model for text embeddings.
|
|
@@ -240,7 +241,7 @@ export function createGoogle(
|
|
|
240
241
|
);
|
|
241
242
|
|
|
242
243
|
const createChatModel = (modelId: GoogleModelId) =>
|
|
243
|
-
new
|
|
244
|
+
new GoogleBatchLanguageModel(modelId, {
|
|
244
245
|
provider: providerName,
|
|
245
246
|
baseURL,
|
|
246
247
|
headers: getHeaders,
|