什么是 工具使用?
工具使用(Tool Use)是模型选择或提出外部能力、可信运行时代码校验并执行请求,再把有界结果返回下一轮模型或应用结果的系统模式。模型生成的 Tool Call 只是提案,不能证明权限、真实执行、成功或事实正确。
快速了解
| 全称 | LLM 与 AI Agent 工具使用 |
|---|---|
| 规范文档 | 官方规范 |
工作原理
Tool Use 为 LLM 工作流接入检索、计算、代码执行、数据库读取、工单更新或浏览器控制。典型 Client Tool 循环包含五个边界:暴露经过审阅的 Tool Catalog;接收模型生成的 Tool Name 与 Argument;根据可信身份和当前资源状态校验与授权;通过有界 Adapter 执行;规范化 Tool Result 后再放回模型上下文。系统随后可以继续循环、停止、请求输入或升级人工。 Function Calling 是模型输出提案的一种接口。不同 Provider 的请求字段、Call ID、并行规则、Result Message、Strict Schema、Built-in Tool 和 Server-executed Tool 并不相同。MCP 标准化 Client 与 Server 之间的工具发现、调用、Schema 与 Structured Result,但不替代 Provider Adapter 或应用授权。Computer Use 则通过用户界面行动,可靠性与隔离边界不同于窄业务 API。 符合 Schema 的参数只能证明形状,不能证明权限或业务有效性。Actor、Tenant、Role、Resource Ownership、Policy Version、Approval、Price、Quota 与 Current State 必须来自可信系统,不能相信模型字段。只暴露必要工具和最小下游凭证,优先使用 `create_refund_proposal` 等窄操作,避免开放 Shell、SQL、任意 URL Fetch 或管理工具。高后果调用的审批应绑定精确 Tool Version、Resource、Argument Digest、Policy、Approver 与 Expiry。 写操作需要稳定 Operation Key 与 Effect Journal。派发后超时可能意味着副作用已提交但运行时没有收到响应;应标记 `outcome_unknown`,向下游对账,禁止盲目重试。只有相互独立或安全幂等的调用才能并行。Cancellation、Step、Wall-clock、Token、Cost、Result Size 与 Repetition Budget 应确定性终止循环。 Tool Definition 与 Tool Result 都是不可信上下文。第三方 Description 可能污染工具选择;Result 可能包含间接 Prompt Injection、Secret、超大内容、异常结构或试图改变 Policy 的指令。应固定已审阅定义、验证 Output Schema、脱敏并限制结果大小、区分数据与指令,禁止返回文本扩大权限或批准另一项副作用。 评测对象是完整 Trajectory,而不只是最终答案。覆盖正确选 Tool、无用调用、参数有效性、授权拒绝、No-op 与 Abstention、结果处理、依赖故障、重复投递、派发后超时、取消、预算耗尽和源系统最终状态。记录模型提案、Policy Decision、Operation Key、Effect Status、脱敏 Result Digest、Latency、Cost 与 Release Identity,不存储隐藏思维链或不必要的私密载荷。
主要特点
- 提案与执行分离:模型提出请求,可信代码授权并执行
- 协议形态多样:Function Calling、Built-in Tool、Server Tool、MCP 与 Computer Use 契约不同
- 完整中介:每次调用都校验身份、租户、资源、策略、审批和业务状态
- 副作用安全:Operation Key、幂等、未知结果对账、取消和预算限制真实影响
- 双向不可信上下文:定义与结果都需要来源、校验、脱敏和大小限制
- 轨迹评测:联合测试选择、参数、策略、副作用、结果、停止、成本与用户结果
常见用途
- 通过授权只读 API 获取实时或私有信息
- 运行确定性计算、校验、编译或测试工具
- 为人工审批准备高后果操作但不直接提交
- 以用户身份授权和幂等机制执行有界业务操作
- 通过受控 Host 发现并调用已批准 MCP Tool
- 没有更窄接口时使用隔离的浏览器、桌面、Shell 或代码环境
示例
Loading code...常见问题
LLM 返回 Tool Call 时是否已经执行工具?
不一定。对于 Client Tool,模型只返回提案,应用必须解析、授权、执行并回传结果。部分 Provider 也提供服务端执行的 Built-in Tool,但执行位置、权限、数据流与结果契约由 Provider 定义。
Tool Use 与 Function Calling 有什么区别?
Tool Use 是完整能力与控制循环;Function Calling 是模型提出结构化调用的一种接口。Tool Use 还包含发现、运行时执行、授权、结果、重复步骤、状态、副作用、观测与评测。
JSON Schema 能让工具调用安全吗?
不能。Schema 可以约束语法和类型,但不能证明身份、所有权、同意、当前业务状态或权限。可信运行时和下游服务必须独立校验并授权每次调用。
工具调用失败后可以自动重试吗?
只有确认错误可重试,而且操作只读或安全幂等时才可以。派发后超时可能掩盖已提交写入;应先标记未知结果、完成对账,并复用相同 Operation Key。
应该如何评测 Tool Use?
使用代表性和对抗性轨迹,联合评分工具选择、无用调用、参数、授权、副作用、结果处理、停止、延迟、成本和最终环境状态。流畅答案不能抵消越权或重复动作。