工具(Tools)

工具是应用提供给智能体的外部能力,例如查订单、读文件或运行计算。模型选择工具,运行程序执行它,并把真实结果返回。

返回概念图谱 →

理解与应用

工具是智能体能够调用的程序接口。语言模型本身生成的是内容,工具让这些内容可以转成对外部环境的查询或操作。一个工具通常包含名称、用途、输入格式和返回结果;读取库存、计算税费、创建订单都是工具,但它们的执行方式和影响并不相同。

以库存查询为例,模型从用户的话里识别商品,调用 lookup_stock,传入 SKU。服务端查询库存系统后,返回仓库、数量和查询时间。工具描述需要让模型知道 SKU 是商品编号,而不是商品名称;结果也需要说明数量是实际库存还是可售库存。否则,即使参数格式正确,后续回答仍可能误解业务含义。

接口设计影响模型能否顺利使用工具。一个名为“处理数据”的工具很难让调用者判断用途;“查询指定商品的可售库存”则更清楚。把查询和下单拆开,能够让助手先回答库存问题,再在用户要求购买时处理订单。与此同时,拆得过细也会增加调用次数,工具的边界应围绕有实际意义的业务动作来划分。

模型生成的参数可能出错,也可能指向当前用户无权访问的对象。因此,参数校验和账户权限仍由执行程序检查。工具返回“未找到”与“服务暂时不可用”时,下一个动作应该不同;返回来源与时间也有助于判断库存是否需要刷新。读到的网页或文档可以提供事实,却不能借工具结果自行取得删除文件、发送消息等权限。

关系速览
智能体执行循环包含 →工具(Tools)

允许操作外部系统的循环需要工具执行环节;纯文本助手可以没有外部工具。

函数调用(Function Calling)应用于 →工具(Tools)

结构化调用描述为工具执行提供参数接口;应用仍负责校验和实际执行。

最小权限约束 →工具(Tools)

每个工具的能力范围应按任务缩小,而不是继承运行进程的所有权限。

人工确认约束 →工具(Tools)

有副作用的工具调用在提交前需要按风险政策判断是否等待确认。

看看如何配置:一份能用于库存查询的工具说明

示例字段来自虚构库存服务,用来说明工具需要传递哪些信息。时间说明结果是在何时查得,available_quantity 避免把可售库存与仓库总库存混淆;调用者不能仅靠填写 warehouse_id 获得访问权限。

以下为教学示意,未连接真实业务系统。

配置示意

工具名:lookup_stock
用途:查询指定商品在指定仓库的当前可售库存,只读。
输入:
  sku:商品 SKU,必填,例如 SKU-7
  warehouse_id:仓库编号,必填,例如 WH-2

成功结果:sku、warehouse_id、available_quantity、checked_at
可能失败:
  invalid_arguments:参数缺失或格式不符
  not_found:授权范围内没有该商品或仓库
  unavailable:库存服务暂时不可用

执行端另行检查:当前账户是否有权访问该仓库。

配置对应的行为

输入:sku=SKU-7,warehouse_id=WH-2
结果:available_quantity=4,checked_at=2026-06-12T09:30:00Z
回答:查询时该仓库可售库存为 4 件。

常见误区

  • 工具参数符合格式,不代表对象存在,也不代表当前账户有权访问。
  • 返回长篇原始日志却省略明确状态,会让模型难以区分操作成功、无数据和临时故障。

前置与延伸

建议先读

相关概念

参考与版本

Apollo 原创讲解与教学示例。参考资料用于核对技术定义;核验日不代表资料的发布日期。