Gemini API 支持工具组合后怎么设计调用链:函数调用、Google Search 与 Maps grounding 的取舍
把“查公开信息”和“查自己系统”塞进同一条 Agent 流程时,最容易出现的不是模型不会调用工具,而是工具之间的职责混在一起:搜索结果被当成库存事实,地点结果又直接写进订单。Gemini API 最近支持在一次交互里同时传入内置工具和自定义函数,适合把这条链路拆得更清楚。
建议先按数据归属分工:Google Search 负责公开网页信息,Google Maps 负责地点与空间信息,自定义函数只访问自己的业务数据;跨工具传递时保留每次工具调用的 ID,才能在异步流程里对上输入和结果。
- 内置工具与自定义函数可以放进同一个请求,但不代表所有工具都能读取同一份业务数据。
- 工具组合的价值在于减少外围编排,把“公开信息→内部核对”放进一次交互。
- 上下文传递要保留工具调用和响应,异步场景还要记录每个调用的唯一 ID。
- Google Maps grounding 适合地点、营业状态和通勤等空间问题,不能替代库存、价格或订单系统。
这次变化解决的是哪一段编排
Google 在 2026 年 3 月的 Gemini API 工具更新中明确提到,开发者可以在同一次请求里组合 Google Search、Google Maps 等内置工具和自定义函数。以前常见的做法是应用层先判断“该搜网页还是调后端”,再把第一步结果拼进第二次请求;现在可以把工具声明一起交给模型,让它根据任务在交互中切换。
这不是把后端数据库开放给搜索工具,也不是让模型自动获得订单写权限。它只是把工具选择和上下文流转的外围代码压薄,权限、参数校验和最终写入仍由业务服务负责。

从一个库存核对场景看工具怎么分工
假设采购助手收到一句话:“查今天热门的降噪耳机,再确认我们库存里有没有这些型号。”这个问题天然分成两段:热门型号属于公开信息,库存属于企业内部信息。前一段可以交给 google_search,后一段交给只读的 check_inventory 函数。
from google import genai
client = genai.Client()
check_inventory = {
"type": "function",
"name": "check_inventory",
"description": "Checks the internal inventory database for a product model.",
"parameters": {
"type": "object",
"properties": {"product_name": {"type": "string"}},
"required": ["product_name"]
}
}
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Search for three trending noise-canceling headphones today, then check our inventory.",
tools=[{"type": "google_search"}, check_inventory]
)
这段示例表达了一个重要边界:google_search 返回的是公开网页依据,check_inventory 才能返回内部库存。自定义函数的服务端实现仍应验证型号、租户和访问身份,不能因为模型给出了函数调用就直接执行高风险写操作。
上下文传递为什么比“再发一次请求”更稳
多步工具调用的麻烦在于第二个工具需要看到第一个工具的结果。例如模型先查到三个型号,再逐个调用库存函数。如果应用层只把一段自然语言摘要拼回去,容易丢掉来源、参数和原始响应。官方更新提到的 context circulation,会把工具调用及其响应保留在模型上下文里,让后续步骤能基于原始结果继续推理。
工程上仍然要做自己的审计记录。推荐至少记录请求 ID、工具名、参数摘要、调用开始和结束时间、返回状态,以及模型给出的工具响应 ID。这样当库存结果和搜索结果对不上时,可以知道是搜索结果变了、参数映射错了,还是内部函数返回了旧数据。

Google Maps grounding 该放在什么问题里
如果问题换成“找出某个区域步行可达、当前营业的三家门店”,Google Maps grounding 的职责就比普通网页搜索更明确:它提供地点、营业信息、通勤时间和位置相关数据。官方文章说明,这项能力扩展到 Gemini 3 家族,并可与内部库存 API 组合。
但“附近有店”不等于“这家店有货”。可靠的链路仍是先用 Maps 得到地点候选,再把标准化后的门店标识交给内部库存或门店系统。地址、营业状态和库存状态要分别展示,避免把一个工具的结论伪装成另一个系统的事实。
工具组合上线前先做四个检查
公开数据和内部数据有没有越权
给每个工具写清数据范围。搜索工具只负责公开网页,Maps 只负责空间信息,自定义函数按租户和角色访问业务库。不要把数据库连接、内部 URL 或密钥放进工具描述。
函数参数是否能被服务端重新校验
模型传来的型号、地点和数量都当作不可信输入。服务端要做长度、格式、租户归属和权限校验;只读查询和写入动作最好拆成不同函数,避免一个描述模糊的函数拥有过大权限。
异步回调能否对上原始调用
官方示例展示了为工具调用提供唯一 id 的做法。你的日志系统也要把这个 ID 贯穿请求、函数回调和最终回答,尤其是并行函数调用时,不能用数组顺序猜对应关系。
失败时能否停在安全状态
搜索超时、Maps 没有结果、库存服务返回旧版本数据,都不应该自动触发订单创建。先返回“公开信息已取到、内部库存未确认”这样的明确状态,再让用户决定是否重试或转人工。
它适合哪些团队,不适合哪些调用
如果团队已经有稳定的内部函数接口,且流程确实需要公开信息与业务数据交叉判断,工具组合能减少胶水代码。原型阶段可以先做只读场景,观察工具选择准确率、函数失败率、上下文长度和人工接管比例。
如果业务只有一个简单函数调用,或者每一步都要求固定、可审计的顺序,显式编排反而更容易测试。新闻里的“能组合”是能力边界,不是所有场景都应该交给模型自由决定。
相关问题
Google Search 能直接查企业内部库存吗?
不能。库存应由企业自己的函数或服务返回,搜索结果最多提供公开型号、评测或网页信息。
Google Maps grounding 能代替门店数据库吗?
不能。Maps 负责地点和空间相关信息,实时库存、内部价格和订单状态仍要从业务系统核对。
工具调用 ID 只用于调试吗?
它首先帮助调试和异步结果映射,也可以作为审计链的一部分,但仍要结合权限、请求 ID 和业务日志保存。
落地时先从只读闭环开始
第一版可以只实现“公开信息检索→内部库存查询→带来源的回答”,暂不允许模型直接创建订单或修改库存。把每次工具选择、参数校验、响应 ID 和失败状态记下来,跑过一轮真实数据后,再决定是否增加 Maps 或写操作。这样才能判断工具组合减少的到底是编排代码,还是只是把复杂度挪到了更难排查的地方。
Go httptrace.ClientTrace 怎么定位 DNS 到首字节延迟:HTTP 请求链路的观测边界
- 上一篇
- Go httptrace.ClientTrace 怎么定位 DNS 到首字节延迟:HTTP 请求链路的观测边界
- 下一篇
- Go sort.Find 查有序切片怎么判断命中:比较函数、插入点与重复值边界
-
- 科技周边 · 业界新闻 | 1天前 | 人工智能 · 业界新闻 · 开发实践 Stack Overflow Survey AI信任 代码助手
- Stack Overflow 2026 调查中的 AI 信任与开发实践
- 120浏览 收藏
-
- 科技周边 · 业界新闻 | 1天前 |
- DeepSeek 与华为 Ascend 工具开源后的算力协作模式
- 145浏览 收藏
-
- 科技周边 · 业界新闻 | 1天前 |
- Google 开源周报中的 MCP Dev Summit 议题变化
- 273浏览 收藏
-
- 科技周边 · 业界新闻 | 1天前 | 云原生 · MySQL · postgresql · 业界新闻 · mysql PostgreSQL AI应用 混合云 开源数据库 All Things Open 2026 DocumentDB
- 微软 All Things Open 2026 展示的开源数据库方向
- 366浏览 收藏
-
- 科技周边 · 业界新闻 | 1天前 | python · typescript · 开发工具 · AI编程 · 工程实践 · 业界新闻 · TypeScript Python 开源生态 开发者工具 GitHub Octoverse AI开发工具
- GitHub Octoverse 2026 透露的 AI 开发工具变化
- 169浏览 收藏
-
- 科技周边 · 业界新闻 | 2天前 |
- Python 3.15 lazy imports 对启动时间的工程意义
- 181浏览 收藏
-
- 科技周边 · 业界新闻 | 2天前 |
- Python 3.15 UTF-8 默认编码迁移时的兼容重点
- 243浏览 收藏
-
- 科技周边 · 业界新闻 | 2天前 | Redis · 开源软件 · Redis OSS AWS Marketplace Amazon EC2 Redis Cloud AMI 自主管理
- Redis OSS 上架 AWS Marketplace 后的部署选择
- 228浏览 收藏
-
- 科技周边 · 业界新闻 | 2天前 |
- Redis 8.10 Compact Hash 对内存型数据结构的影响
- 180浏览 收藏
-
- 科技周边 · 业界新闻 | 2天前 |
- Google EnvHarness 开源后 AI 评测沙箱的设计方向
- 246浏览 收藏
-
- 科技周边 · 业界新闻 | 2天前 | go ·
- Go 1.27 平台无关 SIMD API 的适用架构范围
- 101浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 441次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 513次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 529次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 471次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 299次使用
-
- CodeGeeX for Jetbrains IDEs正式上线!
- 2023-01-17 284浏览
-
- 技术阿里云实现ocr批量图片和pdf文件表格图片转换excel文档/支持票据图片提取/普通图片文字提取处理
- 2023-01-18 387浏览
-
- 直播预告|FeatureStore Meetup V2
- 2023-01-10 328浏览
-
- 深入浅出特征工程 – 基于 OpenMLDB 的实践指南(上)
- 2023-02-25 426浏览
-
- 开源机器学习数据库OpenMLDB v0.4.0产品介绍
- 2023-01-10 147浏览

