gemini需单次响应完成查资料→写报告→发邮件全链路:注册search/docs/gmail三工具并规范命名与参数,用强动词提示触发多工具调用,按顺序执行function_call并传入tool_response,最终显式提取并拼接data_url、document_id、message_id生成结果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Gemini一次性完成“查资料→写报告→发邮件”整条链路,而不是分三次提问、手动粘贴结果。这要求模型在单次响应中识别多意图、按逻辑顺序调用不同工具,并将前序工具结果作为后续输入。
注册并配置三类工具函数
第一步:在初始化GenerativeModel时,把search、docs、gmail三类工具的JSON Schema全部传入tools参数。缺一不可——【缺少任一工具定义,Gemini将无法生成对应function_call】。
第二步:确保每个工具name字段全小写、无空格,例如"google_search"、"create_google_doc"、"send_gmail_message"。命名不规范会导致解析失败且无报错提示。
第三步:为gmail工具的parameters明确声明to、subject、body三个required字段;docs工具必须包含title和content;search工具则需query字段。少一个required项,args解析就会中断。
构造能触发多工具链的提示词
用动词驱动动作链条:“先搜索2026年Q1全球AI芯片出货量数据,再用这些数据生成一份两页的市场简报文档,最后把文档链接通过邮件发给张经理”。
不要拆成三句提问,也不要加“请依次”“麻烦你”等弱化指令强度的措辞。Gemini只对强动作动词+实体+结果指向敏感。
提示词中必须出现具体对象名称(如“张经理”)和可验证结果(如“两页”“文档链接”),否则模型会跳过工具调用,直接用幻觉内容填充。
解析并执行多轮function_call
方法一:监听响应中的content.parts列表,逐项检查是否含function_call字典。只要出现,就立即提取tool_name与args。
方法二:遇到多个function_call时,按parts索引顺序执行。Gemini严格按输出顺序排列调用请求,【不可自行重排执行顺序】——例如第一个call是search,第二个是docs,第三个是gmail,就必须search→docs→gmail串行执行。
方法三:每次工具执行后,把原始返回结果封装为tool_response,调用model.generate_content()传入上一轮的response + 新的tool_response。重复此过程直到content中不再含function_call。
注意:若某次tool_response格式错误(如未用字符串包裹JSON),整个链路将卡死在该步,后续调用永不触发。
组装最终输出并注入上下文
当最后一轮generate_content返回纯text内容(无function_call),说明所有工具已执行完毕。此时需从历史交互中提取三个关键ID:search返回的data_url、docs创建的document_id、gmail发送成功的message_id。
将这三个ID拼入最终回复,例如:“已查得Q1出货量为23.7B美元(来源),简报文档已生成(链接),邮件已发送至zhang@company.com(ID: msg_8a9f2)”。
这一步不能靠模型自动生成——它不会主动回溯历史ID。你必须在代码中显式提取并拼接。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











