如何通过@openrouter/ai-sdk-provider启用Gemini的URL Context与Google Search Grounding
问题描述
我通过@openrouter/ai-sdk-provider借助OpenRouter调用Gemini模型,Gemini的URL Context和Google Search Grounding功能在Google AI Studio里能正常使用,但通过这个SDK却无法启用。当我提供Reddit帖子这类URL并询问内容时,模型没法把网页作为上下文使用,显然这些功能没激活。
已尝试操作
我参考了该库文档及Google原生实现,尝试通过extraBody在模型设置中传递配置:
import { generateText } from 'ai'; import { openrouter } from '@openrouter/ai-sdk-provider'; // 尝试1:工具数组置于顶层 const result1 = await generateText({ model: openrouter('gemini/gemini-pro', { extraBody: { tools: [{ urlContext: {} }] // 也尝试过{ googleSearch: {} } } }), prompt: "总结这个Reddit帖子:https://reddit.com/r/example..." }); // 尝试2:嵌套在'config'下,与Google文档格式一致 const result2 = await generateText({ model: openrouter('gemini/gemini-pro', { extraBody: { config: { tools: [{ urlContext: {} }] } } }), prompt: "和上面一样的提示..." });
具体疑问
在@openrouter/ai-sdk-provider中,激活Gemini这些功能的准确配置格式是什么?
解决方案
OpenRouter对Gemini的专属工具配置有特定的嵌套要求,需要将Google原生格式的配置包裹在google_generative_ai字段下,同时指定工具调用模式才能触发功能。
启用URL Context的正确配置
import { generateText } from 'ai'; import { openrouter } from '@openrouter/ai-sdk-provider'; const result = await generateText({ model: openrouter('gemini/gemini-pro', { extraBody: { google_generative_ai: { tools: [{ urlContext: {} }], toolConfig: { functionCallingConfig: { mode: "AUTO" // 让模型自动判断是否调用工具 } } } } }), prompt: "总结这个Reddit帖子:https://reddit.com/r/example..." });
启用Google Search Grounding的配置
只需将urlContext替换为googleSearch即可:
tools: [{ googleSearch: {} }]
关键说明
- 所有Gemini专属配置必须嵌套在
google_generative_ai字段内,这是OpenRouter适配多模型的统一规则。 toolConfig是必填项,设置mode: "AUTO"才能让模型自动触发工具调用逻辑。- 确保使用的Gemini模型版本支持对应工具(如gemini-pro、gemini-1.5-pro),且你的OpenRouter API密钥有权限调用带工具的模型。
内容的提问来源于stack exchange,提问作者adyingdeath
相关产品推荐
相关产品推荐

