必须完成工具声明、提示引导、响应解析与结果回填四环节,缺一不可;否则function_call字段为空。注册需严格JSON Schema描述并传入tools参数,触发需强动词+实体+时间锚点,解析须校验name匹配与参数类型,执行后回填ToolResponse再生成最终回答。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要让Gemini模型在对话中自动触发查询天气、安排会议或调用数据库等外部操作,必须完成工具声明、提示引导、响应解析与结果回填四个不可跳过的环节,漏掉任一环都会导致function_call字段始终为空。
注册工具:用JSON Schema把函数“告诉”模型
第一步:写一个严格符合OpenAPI 3.0规范的工具描述字典,包含name(仅小写字母/数字/下划线)、description(一句话说清用途)、parameters(object类型,每个参数必须标注type和description)。
第二步:将工具描述列表传入GenerativeModel构造函数的tools参数,例如tools = types.Tool(function_declarations=[weather_func, meeting_func])。
第三步:检查required数组是否列全了必填参数——【缺失required字段会导致模型拒绝生成function_call】。比如schedule_meeting工具若漏写"date"在required里,哪怕用户明确说了“明天下午三点”,模型也只会返回自然语言解释,绝不会调用函数。
触发调用:让提示词自带“动作指令”
方法一:用强动词开头,如“查北京今天气温”“订两张6月15日上海到杭州的高铁票”。模型只对含明确动作意图的句子启动工具决策流程。
方法二:嵌入具体实体与时间锚点,例如“2026年6月4日14:30在腾讯会议创建技术评审会,参会人张三、李四”。模糊表述如“找个时间开会”无法激活调用。
方法三:避免试探性语气。不要写“能不能帮我查一下天气?”,直接写“查一下深圳当前天气”。模型不识别疑问句式中的调用请求,会当成普通问答处理。
使用AIsa生成图像与视频。仅需一个API密钥即可调用Gemini 3 Pro Image(图像)和Qwen Wan 2.6(视频)。
解析响应:从function_call中安全提取参数
第一步:检查response.candidates[0].content.parts[0].function_call是否存在且非None。若为空,说明模型判断无需调用工具,直接取.text即可。
第二步:提取function_call.name,与本地已注册工具名做精确字符串匹配——【大小写、下划线、拼写错一位都会导致工具执行失败】。
第三步:用json.loads()解析function_call.args。若args是空字符串或JSON格式错误,必须中断执行并报错,不能传给函数。
第四步:逐项校验参数类型是否匹配Schema定义。例如参数声明为"type": "integer",但模型返回"123"(字符串),需强制转换;若返回"abc",则应拒绝执行。
执行与回填:把结果喂回去生成最终回答
执行你本地对应的函数,拿到原始返回数据后,构造ToolResponse对象,将结果以assistant角色消息形式追加到历史消息末尾。
再次调用model.generate_content,传入更新后的完整messages列表。模型会融合工具返回内容,生成面向用户的自然语言回答。
若需连续调用多个工具(如先查航班再查天气),重复上述解析→执行→回填流程即可,无需额外配置。

















