跳到正文

工具调用

Tool Calling

中级通用

工具调用(Tool Calling)是让模型在对话中提出调用某个工具的请求,由应用执行后再把结果交还给模型的机制。它解决了模型无法直接查询实时数据或操作外部系统的问题,比如让客服助手查询订单状态。

你可能会说:「我想让 AI 查到真实的订单状态,再根据查到的结果回答用户,而不是自己猜。」

读之前建议先了解

动手看看

提问用户问题用户客服应用模型订单工具
1

用户问订单发货了吗。客服应用把问题交给模型,但模型手里没有实时订单状态。

要点

  1. 1

    先告诉模型有哪些工具

    我们会把可用工具的名称、用途和参数告诉模型。比如查询订单需要订单号,这样模型才能判断何时调用它、该传什么;工具背后连接的数据库和权限仍由应用控制。

  2. 2

    模型提出请求,应用负责执行

    模型输出的是调用哪个工具、传入什么参数,不是它自己连上了数据库。应用收到请求后会检查参数和权限,执行查询,再把结果送回对话,让模型据此回答。

  3. 3

    工具结果不等于最终回答

    查询工具可能只返回状态码、时间等原始数据。模型拿到结果后还可以继续组织语言,或决定是否需要下一次调用。如果工具报错,我们也能把错误交还给模型处理,而不是假装查询成功。

  4. 4

    有副作用的操作要单独把关

    读取订单和取消订单不是一回事。因为工具调用可能触发真实操作,所以我们会在应用侧限制可用工具、校验权限;遇到付款、删除等动作,还可以先让用户确认再执行。

容易混淆的地方

工具调用和 API 不一样:API 是系统对外提供的接口,工具调用是模型提出使用某项能力、由应用执行并回传结果的过程,工具背后可以接 API。它也不等于结构化输出:模型给出符合格式的 JSON,不代表应用已经执行了其中写的操作。

什么时候用

适合用

  • 做客服助手时,根据用户提供的订单号查询后台,再用查到的物流状态回答。
  • 做开发 Agent 时,让它读取项目文件、运行测试,再根据真实报错修改代码。
  • 做运营后台助手时,让它查询指定日期的销售数据,再解释数据变化。

不适合用

  • 只是想让 AI 改写一段已提供的产品文案,没有外部数据或操作要接入,直接在对话中完成即可。
  • 页面只需按固定条件展示数据库记录,不需要模型判断调用时机,用普通后端查询更直接。
  • 只想规定 AI 回复的字段和格式,没有动作要执行,用结构化输出即可。

练一练

你在做一个退款助手。用户问「我的退款到哪一步了?」系统有查询退款进度的接口。怎样设计才算合理地使用工具调用?

让 AI 帮你做

请为退款助手接入工具调用:提供按退款单号查询进度的工具定义,由应用校验参数和当前用户权限后执行查询,并把结果返回给模型。模型只根据查询结果回答;查询失败时说明未查到,不猜测进度。

接下来学什么