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 查有序切片怎么判断命中:比较函数、插入点与重复值边界
-
- 科技周边 · 业界新闻 | 31分钟前 | 并发 · go · 运行时 · 版本发布 · 性能诊断 · 协程泄漏 goroutineleak runtime/pprof Go 1.27 并发排查
- Go 1.27 的 goroutineleak 正式可用:运行时如何识别无法唤醒的协程
- 244浏览 收藏
-
- 科技周边 · 业界新闻 | 6小时前 |
- Google Antigravity 2.0 桌面应用发布:多代理并行开发对团队流程意味着什么
- 315浏览 收藏
-
- 科技周边 · 业界新闻 | 9小时前 | go · 工具链 · microsoft · Go 1.27 · 企业开发 · Microsoft Build of Go Go 1.27.0-1 Go 工具链 企业镜像 平台加密后端
- Microsoft Build Go 1.27.0-1 发布后:企业镜像如何核对工具链来源
- 388浏览 收藏
-
- 科技周边 · 业界新闻 | 12小时前 | 云原生 · 容器 · kubernetes · 业界新闻 · 弹性伸缩 · HPA Kubernetes 1.37 scale to zero 外部指标 ScaledToZero
- Kubernetes 1.37 HPA 如何缩到 0 个 Pod:外部指标、ScaledToZero 与恢复条件
- 387浏览 收藏
-
- 科技周边 · 业界新闻 | 18小时前 | 云原生 · 运维 · kubernetes · 版本升级 · 兼容性 集群升级 Kubernetes v1.37 Garhwal
- Kubernetes v1.37 发布后:新集群升级时如何拆分稳定特性与兼容风险
- 314浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ljg-skills
- ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
- 5322次使用
-
- MELO音乐
- MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
- 4839次使用
-
- UniScribe
- UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
- 4786次使用
-
- 剧云
- 剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
- 5038次使用
-
- 万象有声
- 万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
- 4989次使用
-
- 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浏览
