DOCAI · 概念 · L2
什么是工具调用
一句话定义
模型不直接执行,而是输出「调哪个函数、传什么参数」,由你的程序执行后把结果回传。
开发者更新 2026-11-13核验 2026-11-13 · docai 编辑部
它是什么
你先把可用函数的清单给模型:名字、用途、参数结构。
模型需要时,不直接回答问题,而是返回一个结构化请求:函数名 + 参数。你的程序执行它,把结果发回去,模型再继续。
执行权始终在你的代码里,模型只负责决定调用什么。
一次完整回合
- 请求里带上工具定义。
- 模型返回「调用
get_weather,参数{"city": "上海"}」。 - 你的程序执行,得到结果。
- 把结果作为新消息发回。
- 模型基于结果给出最终回答,或继续调用下一个工具。
什么时候该用
- 需要实时数据:天气、库存、订单状态。
- 需要精确计算:交给代码,不靠模型心算。
- 需要产生副作用:发邮件、建工单——这类必须加人工确认。
不需要时别加:工具定义占上下文,也增加出错面。
三个常见误解
- 「模型会自己执行函数」:不会。它只输出调用意图,执行是你的程序做的。
- 「工具越多越好」:不是。工具越多,选错的概率越高。按场景给最小集合。
- 「参数一定合法」:不保证。执行前要校验,尤其是要写数据的工具。
和相邻概念对比
| 概念 | 关系 |
|---|---|
| 工具调用 | 单次的「决定 + 执行 + 回传」机制 |
| Agent | 把工具调用放进循环,自主完成多步任务 |
| MCP | 把工具接入标准化的协议 |