@ai-sdk/google 4.0.86 → 4.0.88
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 +22 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -30
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +2 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +67 -25
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +10 -10
- package/package.json +3 -3
- package/src/google-language-model.ts +79 -4
- package/src/google-provider.ts +13 -7
- package/src/google-speech-api.ts +1 -0
- package/src/google-speech-model.ts +3 -0
- package/src/transcription/google-transcription-model.ts +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @ai-sdk/google
|
|
2
2
|
|
|
3
|
+
## 4.0.88
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2959d35: feat: rename `evaluate` to `decide`
|
|
8
|
+
- 59116e6: fix(groq,google): use JSON response tool for structured outputs with tool calling
|
|
9
|
+
- Updated dependencies [2959d35]
|
|
10
|
+
- Updated dependencies [59116e6]
|
|
11
|
+
- @ai-sdk/provider@4.0.22
|
|
12
|
+
- @ai-sdk/provider-utils@5.0.54
|
|
13
|
+
|
|
14
|
+
## 4.0.87
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 8c65988: feat(ai): add telemetry to speech generation and transcription, including
|
|
19
|
+
provider usage propagation and experimental streaming lifecycle callbacks
|
|
20
|
+
- Updated dependencies [8c65988]
|
|
21
|
+
- Updated dependencies [527a163]
|
|
22
|
+
- @ai-sdk/provider@4.0.21
|
|
23
|
+
- @ai-sdk/provider-utils@5.0.53
|
|
24
|
+
|
|
3
25
|
## 4.0.86
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchFunction, InferSchema, Resolvable, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, WebSocketConstructor, createToolNameMapping } from "@ai-sdk/provider-utils";
|
|
2
|
-
import { EmbeddingModelV4, Experimental_BatchV4,
|
|
2
|
+
import { EmbeddingModelV4, Experimental_BatchV4, Experimental_DecisionModelV4, Experimental_RealtimeFactoryV4, Experimental_RealtimeModelV4, Experimental_RealtimeModelV4ClientEvent, Experimental_RealtimeModelV4ClientSecretOptions, Experimental_RealtimeModelV4ClientSecretResult, Experimental_RealtimeModelV4ServerEvent, Experimental_RealtimeModelV4SessionConfig, Experimental_SpeechTranslationModelV4, Experimental_SpeechTranslationModelV4StreamOptions, Experimental_TranscriptionModelV4StreamOptions, Experimental_VideoModelV4, FilesV4, ImageModelV4, JSONObject, LanguageModelV4, ProviderV4, SpeechModelV4, TranscriptionModelV4 } from "@ai-sdk/provider";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
4
|
//#region src/google-error.d.ts
|
|
5
5
|
declare const googleErrorDataSchema: import("@ai-sdk/provider-utils").LazySchema<{
|
|
@@ -621,8 +621,12 @@ interface GoogleProvider extends ProviderV4 {
|
|
|
621
621
|
(modelId: GoogleModelId): LanguageModelV4;
|
|
622
622
|
languageModel(modelId: GoogleModelId): LanguageModelV4;
|
|
623
623
|
chat(modelId: GoogleModelId): LanguageModelV4;
|
|
624
|
-
/** Creates an experimental Choice/Score/Boolean
|
|
625
|
-
|
|
624
|
+
/** Creates an experimental Choice/Score/Boolean decision model using Gemini. */
|
|
625
|
+
decisionModel(modelId: GoogleModelId): Experimental_DecisionModelV4;
|
|
626
|
+
/** @deprecated Use `decisionModel` instead. */
|
|
627
|
+
evaluationModel(modelId: GoogleModelId): Experimental_DecisionModelV4 & {
|
|
628
|
+
doEvaluate: Experimental_DecisionModelV4['doDecide'];
|
|
629
|
+
};
|
|
626
630
|
experimental_batch(): Experimental_BatchV4<{
|
|
627
631
|
text: GoogleModelId;
|
|
628
632
|
image: GoogleImageModelId;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["DecisionModelV4","BatchV4","SpeechTranslationModelV4","RealtimeFactoryV4","RealtimeModelV4ClientSecretOptions","RealtimeModelV4ClientSecretResult","RealtimeModelV4ServerEvent","RealtimeModelV4ClientEvent","RealtimeModelV4","RealtimeModelV4SessionConfig","TranscriptionModelV4StreamOptions","SpeechTranslationModelV4StreamOptions","SpeechTranslationModelV4"],"sources":["../src/google-error.ts","../src/google-language-model-options.ts","../src/google-language-model.ts","../src/google-prompt.ts","../src/tool/google-search.ts","../src/google-image-model-options.ts","../src/google-embedding-model-options.ts","../src/google-video-model-options.ts","../src/google-video-settings.ts","../src/google-speech-model-options.ts","../src/google-files.ts","../src/interactions/google-interactions-language-model-options.ts","../src/interactions/google-interactions-provider-metadata.ts","../src/interactions/google-interactions-agent.ts","../src/google-tools.ts","../src/google-image-settings.ts","../src/transcription/google-transcription-model-options.ts","../src/speech-translation/google-speech-translation-model-options.ts","../src/google-provider.ts","../src/realtime/google-realtime-model.ts","../src/realtime/google-realtime-model-options.ts","../src/transcription/google-transcription-model.ts","../src/speech-translation/google-speech-translation-model.ts","../src/version.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EXPERIMENTAL_EMBEDDING_MODEL_PROVIDER_OPTIONS_TRANSFORMER, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, connectToWebSocket, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertInlineFileDataToUint8Array, convertToBase64, convertUint8ArrayToBase64, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonLinesResponseHandler, createJsonResponseHandler, createNullLanguageModelUsage, createProviderExecutedToolFactory, createProviderStreamError, createToolNameMapping, delay, detectMediaType, downloadBlob, generateId, getFromApi, getRuntimeEnvironmentUserAgent, getTopLevelMediaType, isAbortError, isCustomReasoning, isFullMediaType, isRecord, isSameOrigin, isUrlSupported, lazySchema, loadApiKey, mapReasoningToProviderBudget, mapReasoningToProviderEffort, normalizeBatchRequestCounts, parseProviderOptions, postJsonToApi, postToApi, resolve, resolveFullMediaType, resolveProviderReference, safeParseJSON, safeValidateTypes, secureJsonParse, serializeModelOptions, waitForWebSocketBufferDrain, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
|
|
2
|
-
import {
|
|
1
|
+
import { EXPERIMENTAL_EMBEDDING_MODEL_PROVIDER_OPTIONS_TRANSFORMER, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, connectToWebSocket, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertInlineFileDataToUint8Array, convertJsonResponseToolStream, convertToBase64, convertUint8ArrayToBase64, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonLinesResponseHandler, createJsonResponseHandler, createNullLanguageModelUsage, createProviderExecutedToolFactory, createProviderStreamError, createToolNameMapping, delay, detectMediaType, downloadBlob, generateId, getFromApi, getRuntimeEnvironmentUserAgent, getTopLevelMediaType, isAbortError, isCustomReasoning, isFullMediaType, isRecord, isSameOrigin, isUrlSupported, lazySchema, loadApiKey, mapReasoningToProviderBudget, mapReasoningToProviderEffort, normalizeBatchRequestCounts, parseProviderOptions, postJsonToApi, postToApi, resolve, resolveFullMediaType, resolveProviderReference, safeParseJSON, safeValidateTypes, secureJsonParse, serializeModelOptions, waitForWebSocketBufferDrain, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
|
|
2
|
+
import { Experimental_DecisionLanguageModel } from "@ai-sdk/provider-utils/experimental-decision";
|
|
3
3
|
import { AISDKError, InvalidArgumentError, InvalidResponseDataError, TooManyEmbeddingValuesForCallError, UnsupportedFunctionalityError } from "@ai-sdk/provider";
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
5
|
//#region src/version.ts
|
|
6
|
-
const VERSION = "4.0.
|
|
6
|
+
const VERSION = "4.0.88";
|
|
7
7
|
//#endregion
|
|
8
8
|
//#region src/google-error.ts
|
|
9
9
|
const googleErrorDataSchema = lazySchema(() => zodSchema(z.object({ error: z.object({
|
|
@@ -1546,15 +1546,38 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1546
1546
|
toolNameMapping
|
|
1547
1547
|
};
|
|
1548
1548
|
}
|
|
1549
|
-
getArgs(options, { isStreaming = false } = {}) {
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1549
|
+
async getArgs(options, { isStreaming = false } = {}) {
|
|
1550
|
+
const { responseFormat, tools, toolChoice } = options;
|
|
1551
|
+
let jsonResponseTool;
|
|
1552
|
+
if (responseFormat?.type === "json" && responseFormat.schema != null && tools?.some((tool) => tool.type === "function") && /(^|\/)gemini-/i.test(this.modelId) && (!getGoogleModelCapabilities(this.modelId).usesGemini3Features || toolChoice?.type === "required" || toolChoice?.type === "tool")) {
|
|
1553
|
+
let name = "json";
|
|
1554
|
+
for (let suffix = 1; tools.some((tool) => tool.name === name); suffix++) name = `json_${suffix}`;
|
|
1555
|
+
jsonResponseTool = {
|
|
1556
|
+
type: "function",
|
|
1557
|
+
name,
|
|
1558
|
+
description: responseFormat.description ?? "Respond with a JSON object.",
|
|
1559
|
+
inputSchema: responseFormat.schema
|
|
1560
|
+
};
|
|
1561
|
+
}
|
|
1562
|
+
return {
|
|
1563
|
+
...await GoogleLanguageModel.prepareRequest({
|
|
1564
|
+
modelId: this.modelId,
|
|
1565
|
+
config: this.config,
|
|
1566
|
+
options: jsonResponseTool == null ? options : {
|
|
1567
|
+
...options,
|
|
1568
|
+
responseFormat: void 0,
|
|
1569
|
+
tools: [...tools ?? [], jsonResponseTool],
|
|
1570
|
+
toolChoice: toolChoice?.type === "tool" ? toolChoice : toolChoice?.type === "none" ? {
|
|
1571
|
+
type: "tool",
|
|
1572
|
+
toolName: jsonResponseTool.name
|
|
1573
|
+
} : { type: "required" }
|
|
1574
|
+
},
|
|
1575
|
+
isStreaming
|
|
1576
|
+
}),
|
|
1577
|
+
jsonResponseToolName: jsonResponseTool?.name
|
|
1578
|
+
};
|
|
1556
1579
|
}
|
|
1557
|
-
static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping }) {
|
|
1580
|
+
static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName }) {
|
|
1558
1581
|
const wrapProviderMetadata = (payload) => Object.fromEntries(providerOptionsNames.map((name) => [name, payload]));
|
|
1559
1582
|
const candidate = response.candidates?.[0];
|
|
1560
1583
|
const promptBlockReason = response.promptFeedback?.blockReason;
|
|
@@ -1586,6 +1609,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1586
1609
|
}
|
|
1587
1610
|
});
|
|
1588
1611
|
else if ("text" in part && part.text != null) {
|
|
1612
|
+
if (jsonResponseToolName != null && part.thought !== true) continue;
|
|
1589
1613
|
const thoughtSignatureMetadata = part.thoughtSignature ? wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) : void 0;
|
|
1590
1614
|
if (part.text.length === 0) {
|
|
1591
1615
|
if (thoughtSignatureMetadata != null && content.length > 0) {
|
|
@@ -1597,14 +1621,23 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1597
1621
|
text: part.text,
|
|
1598
1622
|
providerMetadata: thoughtSignatureMetadata
|
|
1599
1623
|
});
|
|
1600
|
-
} else if ("functionCall" in part && part.functionCall.name != null)
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1624
|
+
} else if ("functionCall" in part && part.functionCall.name != null) {
|
|
1625
|
+
if (part.functionCall.name === jsonResponseToolName) {
|
|
1626
|
+
content.push({
|
|
1627
|
+
type: "text",
|
|
1628
|
+
text: typeof part.functionCall.args === "string" ? part.functionCall.args : JSON.stringify(part.functionCall.args ?? {}),
|
|
1629
|
+
...part.thoughtSignature ? { providerMetadata: wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) } : {}
|
|
1630
|
+
});
|
|
1631
|
+
continue;
|
|
1632
|
+
}
|
|
1633
|
+
content.push({
|
|
1634
|
+
type: "tool-call",
|
|
1635
|
+
toolCallId: part.functionCall.id || config.generateId(),
|
|
1636
|
+
toolName: part.functionCall.name,
|
|
1637
|
+
input: JSON.stringify(part.functionCall.args ?? {}),
|
|
1638
|
+
providerMetadata: part.thoughtSignature ? wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) : void 0
|
|
1639
|
+
});
|
|
1640
|
+
} else if ("inlineData" in part) {
|
|
1608
1641
|
const hasThought = part.thought === true;
|
|
1609
1642
|
const hasThoughtSignature = !!part.thoughtSignature;
|
|
1610
1643
|
content.push({
|
|
@@ -1682,7 +1715,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1682
1715
|
};
|
|
1683
1716
|
}
|
|
1684
1717
|
async doGenerate(options) {
|
|
1685
|
-
const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping } = await this.getArgs(options);
|
|
1718
|
+
const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping, jsonResponseToolName } = await this.getArgs(options);
|
|
1686
1719
|
const mergedHeaders = combineHeaders(this.config.headers ? await resolve(this.config.headers) : void 0, options.headers, extraHeaders);
|
|
1687
1720
|
const { responseHeaders, value: response, rawValue: rawResponse } = await postJsonToApi({
|
|
1688
1721
|
url: `${this.config.baseURL}/${getModelPath(this.modelId)}:generateContent`,
|
|
@@ -1698,7 +1731,8 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1698
1731
|
response,
|
|
1699
1732
|
warnings,
|
|
1700
1733
|
providerOptionsNames,
|
|
1701
|
-
toolNameMapping
|
|
1734
|
+
toolNameMapping,
|
|
1735
|
+
jsonResponseToolName
|
|
1702
1736
|
});
|
|
1703
1737
|
return {
|
|
1704
1738
|
...result,
|
|
@@ -1711,7 +1745,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1711
1745
|
};
|
|
1712
1746
|
}
|
|
1713
1747
|
async doStream(options) {
|
|
1714
|
-
const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping } = await this.getArgs(options, { isStreaming: true });
|
|
1748
|
+
const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping, jsonResponseToolName } = await this.getArgs(options, { isStreaming: true });
|
|
1715
1749
|
const wrapProviderMetadata = (payload) => Object.fromEntries(providerOptionsNames.map((name) => [name, payload]));
|
|
1716
1750
|
const headers = combineHeaders(this.config.headers ? await resolve(this.config.headers) : void 0, options.headers, extraHeaders);
|
|
1717
1751
|
const { responseHeaders, value: response } = await postJsonToApi({
|
|
@@ -1768,7 +1802,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1768
1802
|
});
|
|
1769
1803
|
hasToolCalls = true;
|
|
1770
1804
|
};
|
|
1771
|
-
|
|
1805
|
+
const result = {
|
|
1772
1806
|
stream: response.pipeThrough(new TransformStream({
|
|
1773
1807
|
start(controller) {
|
|
1774
1808
|
controller.enqueue({
|
|
@@ -2100,6 +2134,10 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
2100
2134
|
response: { headers: responseHeaders },
|
|
2101
2135
|
request: { body: args }
|
|
2102
2136
|
};
|
|
2137
|
+
return {
|
|
2138
|
+
...result,
|
|
2139
|
+
stream: jsonResponseToolName == null ? result.stream : result.stream.pipeThrough(convertJsonResponseToolStream(jsonResponseToolName))
|
|
2140
|
+
};
|
|
2103
2141
|
}
|
|
2104
2142
|
};
|
|
2105
2143
|
function getMaxOutputTokensForGemini25Model() {
|
|
@@ -3617,10 +3655,13 @@ const googleOperationSchema = z.object({
|
|
|
3617
3655
|
* encoded audio in the first inline-data part (WAV by default on Gemini 3.8,
|
|
3618
3656
|
* raw PCM on older models).
|
|
3619
3657
|
*/
|
|
3620
|
-
const googleSpeechResponseSchema = lazySchema(() => zodSchema(z.object({
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3658
|
+
const googleSpeechResponseSchema = lazySchema(() => zodSchema(z.object({
|
|
3659
|
+
candidates: z.array(z.object({ content: z.object({ parts: z.array(z.object({ inlineData: z.object({
|
|
3660
|
+
mimeType: z.string().nullish(),
|
|
3661
|
+
data: z.string().nullish()
|
|
3662
|
+
}).nullish() })).nullish() }).nullish() })).nullish(),
|
|
3663
|
+
usageMetadata: z.record(z.string(), z.json()).nullish()
|
|
3664
|
+
})));
|
|
3624
3665
|
//#endregion
|
|
3625
3666
|
//#region src/google-speech-input.ts
|
|
3626
3667
|
/**
|
|
@@ -3861,6 +3902,7 @@ var GoogleSpeechModel = class GoogleSpeechModel {
|
|
|
3861
3902
|
return {
|
|
3862
3903
|
audio,
|
|
3863
3904
|
warnings,
|
|
3905
|
+
...response.usageMetadata != null && { usage: response.usageMetadata },
|
|
3864
3906
|
request: { body: JSON.stringify(requestBody) },
|
|
3865
3907
|
response: {
|
|
3866
3908
|
timestamp: currentDate,
|
|
@@ -7270,6 +7312,7 @@ var GoogleTranscriptionModel = class GoogleTranscriptionModel {
|
|
|
7270
7312
|
language: void 0,
|
|
7271
7313
|
durationInSeconds: void 0,
|
|
7272
7314
|
warnings,
|
|
7315
|
+
...response.usage != null && { usage: response.usage },
|
|
7273
7316
|
response: {
|
|
7274
7317
|
timestamp: currentDate,
|
|
7275
7318
|
modelId: this.modelId,
|
|
@@ -7389,6 +7432,7 @@ function createGoogleLiveTranscriptionStream({ webSocket, url, headers, setup, i
|
|
|
7389
7432
|
segments: [],
|
|
7390
7433
|
language,
|
|
7391
7434
|
durationInSeconds: void 0,
|
|
7435
|
+
usage: usageMetadata,
|
|
7392
7436
|
...usageMetadata != null ? { providerMetadata: { google: { usageMetadata } } } : {}
|
|
7393
7437
|
});
|
|
7394
7438
|
controller.close();
|
|
@@ -7557,7 +7601,7 @@ const googleInteractionsTranscriptionResponseSchema = z.object({
|
|
|
7557
7601
|
annotations: z.array(googleInteractionsWordAnnotationSchema).nullish()
|
|
7558
7602
|
})).nullish()
|
|
7559
7603
|
})).nullish(),
|
|
7560
|
-
usage: z.record(z.string(), z.
|
|
7604
|
+
usage: z.record(z.string(), z.json()).nullish()
|
|
7561
7605
|
});
|
|
7562
7606
|
//#endregion
|
|
7563
7607
|
//#region src/speech-translation/google-speech-translation-model-options.ts
|
|
@@ -8048,10 +8092,11 @@ function createGoogle(options = {}) {
|
|
|
8048
8092
|
provider.languageModel = createChatModel;
|
|
8049
8093
|
provider.chat = createChatModel;
|
|
8050
8094
|
provider.generativeAI = createChatModel;
|
|
8051
|
-
provider.
|
|
8095
|
+
provider.decisionModel = (modelId) => new Experimental_DecisionLanguageModel({
|
|
8052
8096
|
model: createChatModel(modelId),
|
|
8053
|
-
provider: `${providerName.replace(/\.generative-ai$/, "")}.
|
|
8097
|
+
provider: `${providerName.replace(/\.generative-ai$/, "")}.decision`
|
|
8054
8098
|
});
|
|
8099
|
+
provider.evaluationModel = provider.decisionModel;
|
|
8055
8100
|
provider.experimental_batch = createBatch;
|
|
8056
8101
|
provider.embedding = createEmbeddingModel;
|
|
8057
8102
|
provider.embeddingModel = createEmbeddingModel;
|