2025年全球百万富翁数量因市场表现强劲激增至200万
2026-06-05 3342391
2026-06-05 0
必须建立可传递结构化数据的执行路径:先配API密钥并安装新版SDK(须卸载旧版),再定义工具Schema并注册;提示词需用明确动词、具体实体和清晰时间;响应中严格解析function_call并验证参数;耗时任务通过Redis异步解耦。

要让Gemini API自动完成从文本分析、图像生成到内容分发的整条链路,必须建立可传递结构化数据的执行路径,不能依赖人工复制粘贴中间结果。
打开 Google AI Studio → 登录账号 → 点击左侧「Get API Key」→ 创建新密钥 → 复制并保存到安全位置。这一步漏掉或泄露密钥会导致后续所有调用失败且无权限恢复。
安装新版SDK:pip install google-genai。注意【必须卸载旧版google-generativeai,否则会因模块冲突导致function_call解析失败】。
新建Python文件,写入基础初始化代码:
from google import genai
client = genai.Client(api_key="your_api_key_here")
方法一:用JSON Schema声明天气查询工具
{
"name": "get_weather",
"description": "获取指定城市当前天气和温度",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称,如北京、上海"}
},
"required": ["city"]
}
}
方法二:注册本地代码执行工具(仅限开发测试环境)
注意:此工具在生产环境必须禁用,【启用后Gemini可能直接执行任意shell命令,造成系统被控】。
将两个工具Schema放入列表,传给GenerativeModel构造函数的tools参数。
第一步:明确动词指令,不加解释性语句
“查上海今天气温,再用这个温度值生成一幅‘夏日热浪’风格的图,最后把图片URL发到我的Telegram频道。”
第二步:避免使用“能不能”“是否可以”等试探性表达
错误示范:“能不能帮我查一下天气?” → 模型不会调用工具。
正确写法:“查上海今天气温。”
第三步:确保实体名称具体、时间范围清晰
“上海”比“这里”可靠,“今天”比“最近”更易解析。模型对模糊指代基本无处理能力,会直接跳过工具调用环节。
① 检查response.candidates[0].content.parts中是否存在function_call字段
② 若存在,提取tool_name字符串,严格匹配你注册过的工具名(大小写、下划线必须完全一致)
③ 用json.loads()解析args,传入对应工具函数执行
④ 将工具返回结果封装为ToolResponse对象,再次提交给同一model实例,触发下一轮推理
这一步不能跳过验证:如果args里出现未声明的字段,必须中断流程并报错,否则可能传入恶意参数触发非预期行为。
当工作流涉及耗时操作(如图像生成、大文件处理),直接同步等待会导致超时。改用Redis作为中间缓存:
在第一次调用返回function_call后,不立即执行工具,而是将tool_name和args序列化为JSON,推入Redis list队列。
另起一个worker进程监听该队列,取出任务→执行→将结果存入Redis hash,以request_id为key。
主流程通过request_id轮询hash字段,直到status变为"done",再取result字段继续下一步。