简单来说,Tool Calling(工具调用)就是让 AI 模型能够“使用工具”来完成它自己做不到的事情。
大语言模型本身只会“说话”——它只能根据输入的文字,生成文字回复。它不能查实时天气、不能算复杂的数学题、不能查数据库、不能发邮件。但有了 Tool Calling,模型就可以在需要的时候,主动请求调用一个外部函数或 API,然后把返回结果整合进自己的回答里。
假设你问 AI:“北京现在天气怎么样?”
没有 Tool Calling 时:模型只能根据训练数据回答,可能说“我无法获取实时天气”或者胡编一个温度。
有 Tool Calling 时,流程是这样的:
1、你问:“北京现在天气怎么样?”
2、模型判断自己需要调用一个天气查询工具,于是输出一个结构化的调用请求,
比如:
{
"tool": "get_weather",
"arguments": { "city": "北京" }
}
3、你的程序收到这个请求,真正去调用天气 API,拿到结果 {"temp": 25, "condition": "晴"}。
4、程序把结果返回给模型。
5、模型根据这个结果,生成最终回答:“北京现在 25 度,天气晴朗。”
关键点:模型自己并没有去查天气,它只是“决定要调用哪个工具、传什么参数”。真正执行的是你的代码。模型负责的是决策,不是执行。
因为模型有三个天生短板:
Tool Calling 就是给模型装上了一双“手”,让它能借助外部能力弥补这些短板。
主流做法是:在调用模型 API 时,除了传用户消息,还传一份工具定义列表,告诉模型“你有这些工具可用,每个工具叫什么、干什么、需要哪些参数”。模型如果觉得需要,就会返回一个结构化的工具调用请求,而不是普通文本。
比如 OpenAI、Anthropic、Google 的 API 都支持这种机制。工具的定义通常用 JSON Schema 描述参数格式,模型据此生成合法的调用参数。
Function Calling:基本是同一个东西,OpenAI 最早叫 Function Calling,后来更广义地叫 Tool Calling。工具不一定是个函数,也可能是个 API、检索器、代码执行器等。
MCP(Model Context Protocol):可以理解为“工具调用的标准化协议”。Tool Calling 是能力,MCP 是让不同模型和不同工具之间能统一对接的规范。
Agent(智能体):Agent 通常会大量使用 Tool Calling。一个 Agent 就是一个能反复“思考→调工具→看结果→再思考”的循环系统,Tool Calling 是它的核心动作。
Tool Calling 让模型从“只会聊天”变成“能办事”——模型负责判断该用什么工具、怎么传参数,实际执行交给外部程序,最后模型再把结果组织成自然语言回答你。
有个问题在面试中经常被问到,总有人在此问题上翻车。面试题是这样的:模型自己执行函数吗?
正确答案是:不执行。
面试里必须讲清楚的一点:模型只是生成“调用意图”和参数,真正执行的是你的应用程序。这个设计保证了安全性——模型无法绕过你的代码直接操作系统。
评论专区
评论加载中...登录后即可发表评论