
AI SDK Google Provider 实战指南在 TypeScript 中接入 Google Gemini 全模态能力【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai本文是 AI SDK 官方 Google Providerai-sdk/google的完整使用指南。它覆盖从安装、Provider 实例配置到文本生成、工具调用、嵌入、图像、语音、实时会话与批量推理的全流程帮助你在 TypeScript 项目中以统一 API 调用 Google Generative AIGemini家族模型。读完本文你将掌握ai-sdk/google的配置项含义、providerOptions 的完整参数体系以及如何用内置工具为模型接入搜索、地图、文件检索等 grounding 能力。概览Google Provider 是什么Google Provider 是 AI SDK 官方维护的模型接入层为 Google Generative AI API 目录包名为ai-sdk/google依赖ai-sdk/provider与ai-sdk/provider-utils两个基础包见 package.json。它的核心价值在于你不需要直接拼接 Google 的 REST 请求而是通过 AI SDK 统一的generateText、streamText、embed、generateImage、generateSpeech等函数调用模型同时保留 Google 特有的能力思考过程、安全设置、grounding 工具、结构化输出等作为 provider 选项透传。README 中给出的最小示例即可说明这种一行接入的体验import { google } from ai-sdk/google; import { generateText } from ai; const { text } await generateText({ model: google(gemini-2.5-pro), prompt: Write a vegetarian lasagna recipe for 4 people., });安装与快速开始安装包Google Provider 发布在ai-sdk/google模块中安装命令npm i ai-sdk/google包本身是纯 ESM 模块type: moduleNode.js 引擎要求22见 package.json并需要同时安装 AI SDK 核心包ai。如果你使用 Claude Code、Cursor 等编码 Agent官方还建议在仓库中引入 AI SDK skillnpx skills add vercel/aiAPI Key 配置Provider 默认从环境变量GOOGLE_GENERATIVE_AI_API_KEY读取 API Key并通过x-goog-api-key请求头发送。这一点在 google-provider.ts 的getHeaders实现中可以看到它用loadApiKey读取环境变量并附加ai-sdk/google/${VERSION}的 User-Agent 后缀。你也可以在创建 Provider 实例时显式传入apiKey。第一个文本生成示例import { google } from ai-sdk/google; import { generateText } from ai; const { text } await generateText({ model: google(gemini-2.5-pro), prompt: Write a vegetarian lasagna recipe for 4 people., }); console.log(text);语言模型同样支持streamText流式输出并可通过Output结构化生成见仓库文档 content/providers/01-ai-sdk-providers/15-google.mdx 中的 Language Models 一节。Provider 实例默认实例与自定义配置默认实例直接导入默认的google实例即可使用import { google } from ai-sdk/google;该实例由createGoogle()无参数创建见 google-provider.ts默认 API 基础地址为https://generativelanguage.googleapis.com/v1beta默认 provider 名为google.generative-ai。自定义实例如果需要定制使用createGoogle创建带配置的实例import { createGoogle } from ai-sdk/google; const google createGoogle({ // custom settings });GoogleProviderSettings支持的配置项源码定义见 google-provider.ts配置项类型说明baseURLstringAPI 调用的 URL 前缀可用于代理服务器默认https://generativelanguage.googleapis.com/v1betaapiKeystring通过x-goog-api-key头发送的 API Key默认读GOOGLE_GENERATIVE_AI_API_KEY环境变量headersRecordstring, string \| undefined附加到每个请求的自定义请求头fetchFetchFunction自定义 fetch 实现可作中间件拦截请求或用于测试generateId() string为每个请求生成唯一 ID 的函数默认用 SDK 内置生成器webSocketWebSocketConstructor自定义 WebSocket 实现用于需要支持请求头的运行时或测试场景namestring自定义 provider 名称默认google.generative-ai创建出的 Provider 是一个可调用对象直接调用google(modelId)等价于google.languageModel(modelId)/google.chat(modelId)。源码 google-provider.ts 展示了它挂载的完整工厂方法embedding、image、video、speech、transcription、translation、experimental_batch、experimental_realtime、interactions、files、tools等并保留generativeAI、textEmbedding等向后兼容别名deprecated。包入口的导出清单见 src/index.ts。语言模型与 providerOptions 参数详解模型 ID 与调用方式创建语言模型时第一个参数是模型 ID例如gemini-3.8-flashconst model google(gemini-3.8-flash);google-language-model-options.ts 中列出了GoogleModelId联合类型包含gemini-2.0-flash、gemini-2.5-pro、gemini-2.5-flash-image、gemini-3-pro-preview、gemini-3.1-pro-preview、gemini-3.5-flash、gemini-3.6-flash、gemini-3.7-flash、gemini-3.8-flash、gemma-3-27b-it等稳定/实验模型以及gemini-pro-latest、gemini-flash-latest等-latest别名最终还允许任意字符串透传未知模型 ID。一个值得注意的兼容性设计README 与完整文档均有强调为保持向前兼容Provider 会把无法识别的gemini-*模型 ID 和-latest别名按最新的 Gemini 3 行为序列化请求包括 provider 定义工具与混合工具、thinkingLevel推理、多模态函数响应、thought 签名而已知的老一代模型 ID 保持其世代特有的请求行为。该默认行为只影响请求序列化模型本身仍需在 Google API 侧支持相应特性。通过 providerOptions.google 传递模型专属参数Google 模型有一些不在 AI SDK 标准调用设置中的专属选项通过providerOptions.google传入并用GoogleLanguageModelOptions类型做校验import { google, type GoogleLanguageModelOptions } from ai-sdk/google; const model google(gemini-3.8-flash); await generateText({ model, providerOptions: { google: { safetySettings: [ { category: HARM_CATEGORY_UNSPECIFIED, threshold: BLOCK_LOW_AND_ABOVE, }, ], } satisfies GoogleLanguageModelOptions, }, });完整参数体系定义在 google-language-model-options.ts 的 zod schema 中下面按用途分组说明内容与缓存cachedContentstring用于预测的缓存内容名称格式cachedContents/{cachedContent}配合显式缓存降低成本。structuredOutputsboolean是否启用结构化输出默认true。当 JSON Schema 含 Google 所用 OpenAPI schema 版本不支持的要素时可关闭详见下文Schema 限制。responseModalities(TEXT | IMAGE)[]响应模态不传时默认只返回文本图像模型内部即通过responseModalities: [IMAGE]实现。安全与合规safetySettings安全设置数组每项含category与threshold。category取值HARM_CATEGORY_UNSPECIFIED、HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_CIVIC_INTEGRITY。threshold取值HARM_BLOCK_THRESHOLD_UNSPECIFIED、BLOCK_LOW_AND_ABOVE、BLOCK_MEDIUM_AND_ABOVE、BLOCK_ONLY_HIGH、BLOCK_NONE、OFF。thresholdstring独立的阈值设置取值同safetySettings的 threshold可脱离safetySettings单独使用。labelsRecordstring, string账单报告中使用的标签仅 Vertex AI 可用。serviceTierstandard | flex | priority请求服务层。flex便宜 50% 但延迟更高priority超低延迟但有 75–100% 溢价且在负载下可优雅降级到standard实际运行层会反映在result.providerMetadata.google.serviceTier。sharedRequestType、requestType仅 Vertex AI通过请求头选择共享PayGo层。思考过程thinkingConfig{ thinkingLevel?: minimal | low | medium | high; thinkingBudget?: number; includeThoughts?: boolean }。Gemini 3 及以后用thinkingLevel控制推理深度Gemini 2.5 用thinkingBudget控制思考 token 数设为 0 可禁用思考includeThoughts: true时返回思考摘要推理过程合成版。媒体与图像audioTimestampboolean为纯音频文件启用时间戳理解。mediaResolution媒体分辨率取值MEDIA_RESOLUTION_UNSPECIFIED/MEDIA_RESOLUTION_LOW/MEDIA_RESOLUTION_MEDIUM/MEDIA_RESOLUTION_HIGH。imageConfig{ aspectRatio?: string; imageSize?: 1K | 2K | 4K | 512 }。aspectRatio支持1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9、1:8、8:1、1:4、4:1imageSize默认 1K。Vertex AI 下还支持personGeneration、prominentPeople、imageOutputOptionsmimeType 与压缩质量。Grounding 与流式函数调用retrievalConfig{ latLng?: { latitude: number; longitude: number } }为 Google Maps、Google Search 等 grounding 工具提供位置上下文。streamFunctionCallArgumentsboolean流式响应中通过partialArgs增量返回函数调用参数仅 Vertex AI 且仅 Gemini 3 模型支持。思考过程的两种用法Gemini 2.5 与 Gemini 3 及以后系列模型内置思考过程能显著提升复杂任务编码、高等数学、数据分析的推理与多步规划能力。按模型世代选择参数Gemini 3 及以后使用thinkingLevelimport { google, GoogleLanguageModelOptions } from ai-sdk/google; import { generateText } from ai; const model google(gemini-3.8-flash); const { text, reasoning } await generateText({ model: model, prompt: What is the sum of the first 10 prime numbers?, providerOptions: { google: { thinkingConfig: { thinkingLevel: high, includeThoughts: true, }, } satisfies GoogleLanguageModelOptions, }, }); console.log(text); console.log(reasoning); // Reasoning summaryGemini 2.5 模型使用thinkingBudgetimport { google, GoogleLanguageModelOptions } from ai-sdk/google; import { generateText } from ai; const model google(gemini-2.5-flash); const { text, reasoning } await generateText({ model: model, prompt: What is the sum of the first 10 prime numbers?, providerOptions: { google: { thinkingConfig: { thinkingBudget: 8192, includeThoughts: true, }, } satisfies GoogleLanguageModelOptions, }, });thinkingLevel的支持矩阵Gemini 3.1 Pro 支持low/medium/highGemini 3 Pro 支持low/highGemini 3 Flash 支持全部四个级别。文件输入与缓存文件与 URL 输入Google Provider 支持文件输入例如 PDFimport { google } from ai-sdk/google; import { generateText } from ai; const result await generateText({ model: google(gemini-3.8-flash), messages: [ { role: user, content: [ { type: text, text: What is an embedding model according to this document?, }, { type: file, data: fs.readFileSync(./data/ai.pdf), mediaType: application/pdf, }, ], }, ], });也支持直接传 YouTube 链接做视频理解每次请求一个 URLconst result await generateText({ model: google(gemini-3.8-flash), messages: [ { role: user, content: [ { type: text, text: Summarize this video }, { type: file, data: https://www.youtube.com/watch?vdQw4w9WgXcQ, mediaType: video/mp4, }, ], }, ], });需要注意除https://generativelanguage.googleapis.com/v1beta/files/与 YouTube 地址外AI SDK 会自动下载作为 data 传入的 URL更大的文件可走 Google Generative AI Files APIgoogle.files()上传。底层在 google-provider.ts 中实现了支持 URL 的白名单googleFilesUrlPattern、{baseURL}/files/.*、YouTube 两种链接格式以及按 MIME 类型text/html、application/pdf、image/jpeg、video/mp4 等 21 种匹配的外部 HTTPS URL 规则只有gemini-前缀且非gemini-2.0的模型 ID 才开放外部 URL 支持。缓存隐式与显式Gemini 模型对与前序请求共享前缀的内容提供约 75% 的 token 折扣。最大化隐式缓存命中率的方法请求开头保持内容一致、把易变内容如用户问题放在提示词末尾并满足最小 token 数要求Gemini 3 系列 4096、Gemini 2.5 系列 2048。缓存命中情况可从providerMetadata.google的usageMetadata.cachedContentTokenCount字段读取。显式缓存则先通过 Google SDK 创建缓存再以cachedContent引用import { google, type GoogleLanguageModelOptions } from ai-sdk/google; import { GoogleGenAI } from google/genai; import { generateText } from ai; const ai new GoogleGenAI({ apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY, }); const model gemini-3.8-flash; const cache await ai.caches.create({ model, config: { contents: [ { role: user, parts: [{ text: 1000 Lasagna Recipes... }] }, ], ttl: 300s, // Cache expires after 5 minutes }, }); const { text: veggieLasagnaRecipe } await generateText({ model: google(model), prompt: Write a vegetarian lasagna recipe for 4 people., providerOptions: { google: { cachedContent: cache.name, } satisfies GoogleLanguageModelOptions, }, });内置工具搜索、代码执行与 groundinggoogle.tools实现见 google-tools.ts提供了一组 Google 定义的 grounding 工具可在generateText的tools中直接挂载。Google Search让模型通过 Google Search 获取最新信息import { google } from ai-sdk/google; import { GoogleProviderMetadata } from ai-sdk/google; import { generateText } from ai; const { text, sources, providerMetadata } await generateText({ model: google(gemini-3.8-flash), tools: { google_search: google.tools.googleSearch({}), }, prompt: List the top 5 San Francisco news from the past week. You must include the date of each article., }); const metadata providerMetadata?.google as GoogleProviderMetadata | undefined; const groundingMetadata metadata?.groundingMetadata; const safetyRatings metadata?.safetyRatings;googleSearch可选配置searchTypes{ webSearch: {} }默认与{ imageSearch: {} }图像搜索 grounding可组合。timeRangeFilter{ startTime, endTime }ISO 8601 格式两者必填。google.tools.googleSearch({ searchTypes: { webSearch: {} }, timeRangeFilter: { startTime: 2025-01-01T00:00:00Z, endTime: 2025-12-31T23:59:59Z, }, });grounding 元数据通过providerMetadata.google.groundingMetadata暴露webSearchQueries实际检索的查询数组、searchEntryPoint.renderedContent入口内容、groundingSupports每个支持片段含segmenttext/startIndex/endIndex、groundingChunkIndices、confidenceScores0–1 置信度。URL Context让模型直接分析提示词中给出的指定 URLconst { text, sources, providerMetadata } await generateText({ model: google(gemini-3.8-flash), prompt: Based on the document: https://ai.google.dev/gemini-api/docs/url-context. Answer this question: How many links we can consume in one request?, tools: { url_context: google.tools.urlContext({}), }, });每次请求最多 20 个 URL仅 Gemini 2.0 Flash 及以上模型支持。可同时挂google_search与url_context组合使用。相关元数据在providerMetadata.google.urlContextMetadataurlMetadata数组含retrievedUrl与urlRetrievalStatus同时也会返回groundingMetadata。Google Maps Grounding为位置感知查询提供本地数据与地理上下文import { google, type GoogleLanguageModelOptions } from ai-sdk/google; import { GoogleProviderMetadata } from ai-sdk/google; import { generateText } from ai; const { text, sources, providerMetadata } await generateText({ model: google(gemini-3.8-flash), tools: { google_maps: google.tools.googleMaps({}), }, providerOptions: { google: { retrievalConfig: { latLng: { latitude: 34.090199, longitude: -117.881081 }, }, } satisfies GoogleLanguageModelOptions, }, prompt: What are the best Italian restaurants within a 15-minute walk from here?, });响应中sources指向 Google Maps URLgroundingMetadata.groundingChunks中会带maps块uri、title、placeId。Gemini 2.0 及更新模型支持。File Search从你已在 File Search store 中索引的文档检索上下文Provider 对 Gemini 2.5 与 Gemini 3 及以后的模型 ID 自动启用含未识别的未来 Gemini IDconst { text, sources } await generateText({ model: google(gemini-3.8-flash), tools: { file_search: google.tools.fileSearch({ fileSearchStoreNames: [ projects/my-project/locations/us/fileSearchStores/my-store, ], metadataFilter: author Robert Graves, topK: 8, }), }, prompt: Summarise the key themes of I, Claudius., });Code Execution让模型生成并执行 Python 代码完成计算import { google } from ai-sdk/google; import { generateText } from ai; const { text, toolCalls, toolResults } await generateText({ model: google(gemini-3.8-flash), tools: { code_execution: google.tools.codeExecution({}) }, prompt: Use python to calculate the 20th fibonacci number., });Vertex 专属工具enterpriseWebSearch合规导向的 web 索引面向金融、医疗、公共部门等强监管行业仅 Vertex AI 可用需使用ai-sdk/google-vertex的createGoogleVertex与vertex.tools.enterpriseWebSearch({})要求 Gemini 2.0 及以上。vertexRagStore通过 Vertex RAG Engine 检索自定义知识库仅 Vertex 模型可用。必需参数ragCorpus格式projects/{project}/locations/{location}/ragCorpora/{rag_corpus}可选topK。返回的groundingChunks含retrievedContexturi/title/textgroundingSupports说明片段支持关系。模型能力矩阵content/providers/01-ai-sdk-providers/15-google.mdx 中给出了常用模型的能力对照表gemini-3.8-flash、gemini-3.5-flash、gemini-3.1-pro-preview、gemini-3-pro-preview、gemini-2.5-pro、gemini-2.5-flash、gemini-2.0-flash等统一标注了 Image Input、Object Generation、Tool Usage、Tool Streaming、Google Search、URL Context 六项能力。表上方的说明强调完整模型列表请查阅 Google 官方文档表内只是常用模型任何可用的 provider 模型 ID 都可作为字符串直接传入。其他模型类型嵌入模型Embedding通过.embedding()工厂创建AI SDK 的embed/embedMany使用import { google, type GoogleEmbeddingModelOptions } from ai-sdk/google; import { embed } from ai; const model google.embedding(gemini-embedding-001); const { embedding } await embed({ model, value: sunny day at the beach, providerOptions: { google: { outputDimensionality: 512, // optional, number of dimensions taskType: SEMANTIC_SIMILARITY, // optional, task type } satisfies GoogleEmbeddingModelOptions, }, });底层实现google-embedding-model.ts会根据调用方式自动选择端点单值embed()走:embedContent通常限流更高embedMany()或多值走:batchEmbedContents。可选 providerOptionsoutputDimensionalitynumber输出维度降维超出的尾部截断。taskTypestringSEMANTIC_SIMILARITY、CLASSIFICATION、CLUSTERING、RETRIEVAL_DOCUMENT、RETRIEVAL_QUERY、QUESTION_ANSWERING、FACT_VERIFICATION、CODE_RETRIEVAL_QUERY。contentarray多模态内容按索引与 values 一一对应null表示纯文本条目部件可为{ text }、{ inlineData: { mimeType, data } }base64或{ fileData: { fileUri, mimeType } }HTTP URL 或gs://GCS URI。仅gemini-embedding-2-preview支持。嵌入模型能力表gemini-embedding-001默认 3072 维支持自定义维度不支持多模态、gemini-embedding-2与gemini-embedding-2-preview均支持多模态。图像模型Image通过.image()工厂创建用于generateImage()import { google } from ai-sdk/google; import { generateImage } from ai; const { image } await generateImage({ model: google.image(gemini-2.5-flash-image), prompt: A photorealistic image of a cat wearing a wizard hat, aspectRatio: 1:1, });Gemini 图像模型gemini-2.5-flash-image、gemini-3-pro-image-preview、gemini-3.1-flash-image-preview本质是多模态输出语言模型内部通过responseModalities: [IMAGE]调用语言模型 API。支持图像编辑传输入图像支持 base64 或 URL、Google Search groundingproviderOptions.google.googleSearch可传{ searchTypes: { imageSearch: {} } }基于参考图 grounding。注意不支持size与n参数用aspectRatio代替不支持基于 mask 的 inpainting。若需要文本与图像混合输出或更细粒度控制可直接用generateText()配合图像模型见 Image Outputs 一节。语音模型Speech通过.speech()工厂创建用于generateSpeech()import { generateSpeech } from ai; import { google } from ai-sdk/google; const result await generateSpeech({ model: google.speech(gemini-2.5-flash-preview-tts), text: Hello, world!, voice: Kore, // Gemini voice name });voice可选 Google 预置音色如Kore、Puck、Zephyr、Charon区分大小写默认Kore。默认返回可播放的 WAVaudio/wav设outputFormat: pcm可拿到 16-bit 小端单声道 PCM 原始字节采样率在result.providerMetadata.google.sampleRate。instructions会前置到朗读文本实现自然语言风格引导。多说话人对话通过providerOptions.google.multiSpeakerVoiceConfig配置覆盖顶层voice。TTS 模型不支持speed与language选项。可用模型gemini-2.5-flash-preview-tts、gemini-2.5-pro-preview-tts、gemini-3.1-flash-tts-preview。转录、翻译与实时模型google.transcription(modelId)语音转文本。一元模型如gemini-3.5-transcribe转录音频文件live 模型gemini-3.5-transcribe-live经 Gemini Live API WebSocket 通过experimental_streamTranscribe流式转录。google.translation(modelId)服务端流式语音翻译仅流式配experimental_streamTranslate使用。Gemini Live API 自动检测源语言始终输出 24kHz 16-bit PCM 音频。gemini-3.5-live-translate-preview支持 Translated Audio / Translated Text / Source Transcript。google.experimental_realtime(modelId)调用 Gemini Live API 的实时会话模型如gemini-3.1-flash-live-preview。浏览器端会话需要服务端用google.experimental_realtime.getToken()签发短期 token。Google 特有生命周期信号以自定义事件rawType为goAway、sessionResumptionUpdate、generationComplete暴露。Live Translation 可在 token 的sessionConfig.providerOptions.google.translationConfig中设置targetLanguageCodeBCP-47默认en与echoTargetLanguage。批量推理Batchexperimental_startBatch配合 Google Batch API 做异步文本生成import { google } from ai-sdk/google; import { experimental_startBatch as startBatch } from ai; const model gemini-3.6-flash; const batch await startBatch({ provider: google, requests: [ { id: capital-france, type: text, model, prompt: What is the capital of France? }, { id: capital-germany, type: text, model, prompt: What is the capital of Germany? }, ], webhookUrl: https://example.com/api/google-batch-webhook, });Google 要求同一批次内所有文本请求使用相同模型否则会在提交前抛错。可传webhookUrl在批次到达终态时接收通知需自行校验 Google 的动态 webhook 签名之后用持久化的批次引用调getBatchStatus/getBatchResults。序列化后的批次请求体小于 20 MB 时内联发送达到 20 MB 及以上则通过 Gemini Files API 上传 JSONL 输入文件。该能力是实验性的API 可能在补丁版本中变化。Interactions APIgoogle.interactions(...)通往独立的POST /v1beta/interactions端点支持服务端状态、统一内容块、一等公民内置工具、Agent 预设、运行在沙箱 Linux 环境中的托管 Agent以及原生多模态图像/视频输出。三种入参形态模型 ID 字符串、{ agent: name }Gemini Agent 预设如deep-research-pro-preview-12-2025、{ managedAgent: name }你在 Google 侧通过/v1beta/agents创建的自定义 Agent。关键特性有状态链式对话默认store: true服务端保留上一轮上下文下一轮只需传新消息与previousInteractionId取自providerMetadata.google.interactionIdstore: false则每轮重发完整消息历史。Provider 选项previousInteractionId、store、agent、agentConfig如{ type: deep-research, ... }、thinkingLevel、thinkingSummaries、responseFormat可精确控制文本/图像/音频/视频输出如{ type: image, aspectRatio: 16:9, imageSize: 4K }、mediaResolution、serviceTier、systemInstruction、background后台运行SDK 内部轮询GET /interactions/{id}、environment托管 Agent 沙箱remote新建、environment_id复用、对象形态支持sources预载文件与network出站限制、pollingTimeoutMs默认 30 分钟。Agentic 视频理解processing: agentic让模型动态导航视频时间线通过google.processing_call/google.processing_result自定义内容块暴露处理过程static则配合裁剪与帧率选项。内置工具google.tools.*映射到 Interactions 工具描述符google_search、code_execution、url_context、file_search、google_maps等AI SDKtool(...)定义的函数工具翻译为function类型其他工具类型会告警并丢弃。图像输出在responseFormat加{ type: image }条目即可让图像能力模型返回result.files中的图片无需工具包装结合previousInteractionId可实现迭代式图像编辑。注意google(...)走标准的:generateContent/:streamGenerateContent端点google.interactions(...)走 Interactions 端点两者请求体与 SSE 事件词汇不同一个模型实例只能选其一。Gemma 模型gemma-3-27b-it、gemma-3-12b-it可用 Google Generative AI API 直接调用。Gemma 原生不支持systemInstruction参数Provider 会自动把系统指令前置拼接到首条用户消息因此generateText中的instructions可无缝使用。结构化输出与故障排查Google Generative AI API 使用的是 OpenAPI 3.0 schema 子集不支持 union 等特性。开启结构化输出且 schema 含不兼容要素时典型报错形如GenerateContentRequest.generation_config.response_schema.properties[occupation].type: must be specified默认情况下结构化输出是开启的工具调用场景必需。对对象生成可用structuredOutputs: false作为绕过方案const { output } await generateText({ model: google(gemini-3.8-flash), providerOptions: { google: { structuredOutputs: false, } satisfies GoogleLanguageModelOptions, }, output: Output.object({ schema: z.object({ name: z.string(), age: z.number(), contact: z.union([ z.object({ type: z.literal(email), value: z.string() }), z.object({ type: z.literal(phone), value: z.string() }), ]), }), }), prompt: Generate an example person for testing., });已知与 Google 不兼容的 Zod 特性z.union与z.record。安全评分与元数据Google 会在providerMetadata.google.safetyRatings返回每个响应内容的安全评分包含category、probability如NEGLIGIBLE/HIGH、probabilityScore、severity、severityScore以及命中时置为true的blocked字段。完整的评分字段说明见仓库文档的 Safety Ratings 小节。进一步阅读包级说明与安装指引packages/google/README.md完整的 Google Provider 官方文档本包发布时会被prepack复制进包的 docs 目录见 package.json 的 prepack 脚本content/providers/01-ai-sdk-providers/15-google.mdxProvider 工厂与配置项源码packages/google/src/google-provider.ts语言模型 providerOptions schema 源码packages/google/src/google-language-model-options.ts内置工具目录源码packages/google/src/google-tools.ts包导出清单packages/google/src/index.ts仓库内examples/目录还提供了 next-openai、next-fastapi 等多个可运行示例可作为将 Google Provider 集成进 Next.js 等框架时的参考若需在 Vertex AI 上使用可查阅packages/google-vertex包。【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考