Google 在文档中将此功能称为 Grounding with your search API。本指南中的适配器运行在你自己的 Google Cloud 项目中,其发起的搜索费用将计入你的 Firecrawl 账户。
工作原理
- 你发送给 Gemini 的请求中包含一个类型为
externalApi的检索工具,该工具指向你的适配器。 - 当 Gemini 需要信息时,会向适配器发送
POST {"query": "..."},并以?key=的形式附加你的 API 密钥。 - 适配器调用 Firecrawl
/v2/search,并返回一个由 object 组成的 JSON 数组,每个 object 都包含snippet和uri。空数组表示没有结果。 - Gemini 将这些 snippet 作为 grounding 来源,并在响应的
groundingMetadata中列出。
前提条件
- 一个 Firecrawl API 密钥
- 一个已启用计费、Vertex AI 和 Cloud Run 的 Google Cloud 项目,并已通过
gcloudCLI 登录 - 一个支持基于你的搜索 API 进行 grounding (接地) 的 Gemini 模型。Google 在上方链接的页面中列出了支持的模型,
gemini-2.5-flash就是其中之一。
构建适配器
创建一个文件夹,并在其中添加以下三个文件。?key= 读取密钥,并将其作为 Bearer 令牌发送给 Firecrawl,因此你提供给 Gemini 的 apiKeyString 就是你的 Firecrawl API 密钥。密钥缺失或被拒绝时,返回 401。Dockerfile 启动 gunicorn 时不启用访问日志,因为访问日志会记录 ?key= 的值。适配器也从不记录查询内容或密钥。
部署到 Cloud Run
/v0/search 即为你的端点。由于 Gemini 无法为此调用附加 Google 身份令牌,该服务需允许未经身份验证的请求,并依靠 ?key= 检查进行访问控制。
避免 Firecrawl API 密钥出现在 URL 中
Cloud Run 会为每个服务保留请求日志,其中会记录请求 URL。为避免 Firecrawl API 密钥被写入日志,请以 gateway 模式运行适配器:由您选择一个共享密钥供 Gemini 发送,适配器则从 Secret Manager 中读取 Firecrawl API 密钥。roles/secretmanager.secretAccessor 角色。在此模式下,apiKeyString 即为网关密钥,可通过 gcloud secrets versions access latest --secret grounding-gateway-key 读取。
检查端点
snippet 和 uri。如果请求中未带 ?key=,服务会返回 401。
为 Gemini 请求接入 grounding
YOUR_SERVICE_URL 替换为你的服务主机地址,将 YOUR_KEY 替换为你的 Firecrawl API 密钥;如果以 gateway 模式部署,则替换为 gateway 密钥。如需使用 global 以外的区域位置,请参照 Google 的参考文档,将主机设为 LOCATION-aiplatform.googleapis.com。
Gemini 所用的信息来源位于响应的 candidates[0].groundingMetadata.groundingChunks 下。在 REST 响应中,每个 chunk 的 retrievedContext 都包含你的适配器返回的 uri 和 snippet。
选项
请在 Cloud Run 服务上将以下选项设置为环境变量,例如:gcloud run services update firecrawl-grounding --update-env-vars RESULT_LIMIT=5。
选择 snippet
Gemini 以 snippet 文本作为回答依据,因此 snippet 的内容比链接更重要。默认使用 Firecrawl 搜索返回的描述。搜索默认会在该字段中返回与 query 相关的重点摘录,无法生成时则回退为页面的普通描述,因此每个 snippet 都是针对该 query 挑选出的段落。markdown 模式会截取每个结果正文的开头部分,而在某些网站上,这部分可能是文章前面的横幅或菜单,因此通常效果较差。此外,它还会让每个 Firecrawl 响应大幅增大。仅当你关注的结果缺少有用的描述时,才建议使用该模式。
限制与行为
- Google 允许单次生成请求最多使用 10 个 grounding 信息来源,你也可以将此工具与 Google Search 等其他工具搭配使用。
- Google 的页面未说明你的端点的最大响应大小或超时时间。请确保适配器响应迅速,并尽量缩短 snippet。在默认设置下,一个响应最多包含 10 个 snippet,每个不超过 1,200 个字符。
- Firecrawl 搜索支持最长 500 个字符的查询,超出部分会被适配器截断。
- 每个查询对应一次 Firecrawl 搜索请求,因此 Gemini 发起的每次搜索都会计入你的限流和计费。
- Gemini 每决定执行一次搜索,就会调用一次适配器;单个请求可能触发多次调用。

