工具调用 Tool Calling 为什么模型说要调用,却没有真正执行
Tool Calling 不是模型自己在你的服务器上执行函数。模型通常只返回“要调用哪个工具以及参数”,真正执行工具的是你的应用,然后还要把工具结果回传给模型,让它继续完成回答。
Tool Calling 不是模型自己在你的服务器上执行函数。模型通常只返回“要调用哪个工具以及参数”,真正执行工具的是你的应用,然后还要把工具结果回传给模型,让它继续完成回答。
一、为什么会出现这个问题

- SDK 版本、接口版本、模型名称和示例代码并不匹配。
- Python 的 base_url 与 Node.js 的 baseURL 等配置写法不同。
- 旧教程仍使用旧接口,而当前服务只实现其中一部分。
- 异常被 SDK 包装后,只看最后一行会丢掉响应状态码和原始响应体。
二、推荐的排查顺序
1. 锁定版本和接口
记录 Node/Python、SDK 版本、base URL、模型名和 endpoint。不要把 2023 年旧博客的参数直接复制到当前 SDK。
2. 先跑最小请求
只保留 model + 简单 input。最小请求成功后,再逐个加 stream、tools、JSON schema 等复杂能力。
3. 保留原始响应
遇到异常时记录 status code、content-type、body 前几百字符和 request id,避免 SDK 把关键信息包装掉。
三、可以直接复制的排查示例
tools = {'get_weather': get_weather, 'query_order': query_order}
while True:
response = call_model(messages, tool_schema)
if response.tool_call:
name = response.tool_call.name
args = response.tool_call.arguments
result = tools[name](**args)
messages.append({'role':'tool','name':name,'content':str(result)})
continue
print(response.text)
break
四、使用建议
任何写数据库、删文件、发邮件、支付类工具都不要把模型参数直接执行,必须做参数校验和权限检查。
相关文章
Codex 执行 rm、git reset、数据库迁移前,应该加什么安全规则
Agent 能执行命令后效率很高,但删除文件、清库、生产部署、Terraform destroy、修改 DNS 等都应被视为高风险操作。成熟做法是 human-in-the-loop,而不是无限授权。
Codex 输出中文乱码怎么办?终端编码和字体配置教程
这篇文章继续给大家整理 Codex 的实用教程。很多朋友使用 Codex 的时候,不是不会用 AI,而是卡在安装、配置、环境、模型、网络、项目上下文这些细节上。今天这篇就围绕 **Codex 输出中文乱码怎么办?终端编码和字体配置教程*...
GPT-5.6 Sol、Terra、Luna 怎么选?一篇讲清三个模型的区别
GPT-5.6 不再用一个模型覆盖所有场景,而是分成 Sol、Terra 和 Luna 三个能力层级。很多用户看到三个名字后的第一反应是:是不是 Sol 永远最好?实际上,模型选择的关键不是“谁最强”,而是“这个任务值不值得使用最强模型”。
Codex 环境变量不生效怎么办?常见原因和解决方案
这篇文章是 Codex 中文网「配置教程」栏目里的完整教程,主题是 **Codex 环境变量不生效怎么办?常见原因和解决方案**。我会尽量用实战视角讲清楚:这个问题是什么、为什么会出现、应该怎么操作、遇到问题怎么排查,以及新手最容易踩哪...