工具调用
Tool Calling
中级通用工具调用(Tool Calling)是让模型在对话中提出调用某个工具的请求,由应用执行后再把结果交还给模型的机制。它解决了模型无法直接查询实时数据或操作外部系统的问题,比如让客服助手查询订单状态。
你可能会说:「我想让 AI 查到真实的订单状态,再根据查到的结果回答用户,而不是自己猜。」
动手看看客服助手查询订单状态
1
用户问订单发货了吗。客服应用把问题交给模型,但模型手里没有实时订单状态。
要点一次工具调用是怎么完成的?
- 1
先告诉模型有哪些工具
我们会把可用工具的名称、用途和参数告诉模型。比如查询订单需要订单号,这样模型才能判断何时调用它、该传什么;工具背后连接的数据库和权限仍由应用控制。
- 2
模型提出请求,应用负责执行
模型输出的是调用哪个工具、传入什么参数,不是它自己连上了数据库。应用收到请求后会检查参数和权限,执行查询,再把结果送回对话,让模型据此回答。
- 3
工具结果不等于最终回答
查询工具可能只返回状态码、时间等原始数据。模型拿到结果后还可以继续组织语言,或决定是否需要下一次调用。如果工具报错,我们也能把错误交还给模型处理,而不是假装查询成功。
- 4
有副作用的操作要单独把关
读取订单和取消订单不是一回事。因为工具调用可能触发真实操作,所以我们会在应用侧限制可用工具、校验权限;遇到付款、删除等动作,还可以先让用户确认再执行。
容易混淆的地方
工具调用和 API 不一样:API 是系统对外提供的接口,工具调用是模型提出使用某项能力、由应用执行并回传结果的过程,工具背后可以接 API。它也不等于结构化输出:模型给出符合格式的 JSON,不代表应用已经执行了其中写的操作。
什么时候用
适合用
- 做客服助手时,根据用户提供的订单号查询后台,再用查到的物流状态回答。
- 做开发 Agent 时,让它读取项目文件、运行测试,再根据真实报错修改代码。
- 做运营后台助手时,让它查询指定日期的销售数据,再解释数据变化。
不适合用
- 只是想让 AI 改写一段已提供的产品文案,没有外部数据或操作要接入,直接在对话中完成即可。
- 页面只需按固定条件展示数据库记录,不需要模型判断调用时机,用普通后端查询更直接。
- 只想规定 AI 回复的字段和格式,没有动作要执行,用结构化输出即可。
练一练选一个答案,看看解释
你在做一个退款助手。用户问「我的退款到哪一步了?」系统有查询退款进度的接口。怎样设计才算合理地使用工具调用?
让 AI 帮你做复制给 AI Agent 直接用
请为退款助手接入工具调用:提供按退款单号查询进度的工具定义,由应用校验参数和当前用户权限后执行查询,并把结果返回给模型。模型只根据查询结果回答;查询失败时说明未查到,不猜测进度。