什么是 工具使用?

工具使用(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、幂等、未知结果对账、取消和预算限制真实影响
  • 双向不可信上下文:定义与结果都需要来源、校验、脱敏和大小限制
  • 轨迹评测:联合测试选择、参数、策略、副作用、结果、停止、成本与用户结果

常见用途

  1. 通过授权只读 API 获取实时或私有信息
  2. 运行确定性计算、校验、编译或测试工具
  3. 为人工审批准备高后果操作但不直接提交
  4. 以用户身份授权和幂等机制执行有界业务操作
  5. 通过受控 Host 发现并调用已批准 MCP Tool
  6. 没有更窄接口时使用隔离的浏览器、桌面、Shell 或代码环境

示例

loading...
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?

使用代表性和对抗性轨迹,联合评分工具选择、无用调用、参数、授权、副作用、结果处理、停止、延迟、成本和最终环境状态。流畅答案不能抵消越权或重复动作。

相关术语

相关文章