跳到主要内容

工具调用链路追踪

1. 定义与边界​

工具调用链路追踪记录 Agent 从决定调用工具、生成参数、权限检查、执行请求、处理返回到继续推理的完整链路。它关注的是行动路径,而不是单个工具服务的 API 日志。

2. 为什么重要​

生产事故常见于工具层:选错工具、参数错、权限错、工具超时、返回脏数据、Agent 把错误返回当成功。链路追踪能把“Agent 回答错了”拆成可修复原因。

3. 核心机制​

4. 工程实现​

工具调用事件:

{
"event": "tool_call_requested",
"trace_id": "tr_001",
"span_id": "sp_tool_req_1",
"tool_name": "update_customer_note",
"tool_schema_version": "2026-05-01",
"risk_level": "write_low",
"args_schema_valid": true,
"args_hash": "sha256:...",
"policy_decision": "allow",
"user_confirmed": true
}

工具返回要标准化:

{
"ok": false,
"error_code": "RATE_LIMITED",
"retryable": true,
"safe_to_show_user": false,
"message": "rate limit"
}

5. 生产实践​

  • 使用工具网关统一记录、鉴权、限流、脱敏和幂等。
  • 参数记录使用摘要和关键业务字段,避免保存完整敏感载荷。
  • 高风险写工具必须记录用户确认、策略版本和调用者身份。
  • 工具错误码要可机器处理,便于 Agent 正确重试或转人工。

6. 常见反模式​

  • Agent 直接调用多个后端服务,绕过统一审计。
  • 工具返回自然语言错误,Agent 难以区分可重试和不可重试。
  • 只记录工具服务日志,不记录 Agent 为什么调用。
  • 工具 schema 变更未版本化,导致旧评测无法解释。

7. 评测方法​

指标解释
Tool Success Rate工具实际执行成功率
Policy Denial Rate被策略拒绝的调用比例
Argument Validation Failure参数校验失败比例
Retryable Error Recovery可重试错误恢复成功率
Irreversible Action Audit Coverage不可逆动作审计覆盖率

8. 安全与治理​

工具是 Agent 权限边界。应采用最小权限、显式 allowlist、参数校验、用户确认、幂等键、速率限制和审计日志。外部内容不得直接提升工具权限。

9. 权威资料​

15. 主控验收清单​

  • 是否每个工具调用都能关联 Agent run。
  • 是否记录策略决策和审批 ID。
  • 是否记录幂等键或业务事实 ID。
  • 是否记录下游 HTTP 状态和重试次数。
  • 是否对工具参数做 hash 或脱敏。
  • 是否识别 forbidden tool call。
  • 是否能按工具版本比较错误率。
  • 是否有工具超时和下游故障告警。
  • 是否能区分工具失败和模型误用工具。
  • 是否把工具调用失败加入评测集。
  • 是否对外部不可信内容打标。
  • 是否有副作用工具回放替身。
  • 是否检查 tool schema 变更对 trace 字段的影响。
  • 是否限制高危工具 trace 的访问权限。
  • 是否监控重复副作用为 0。
  • 是否把工具调用成本归因到 run。

10. 二次精修:工具链路 trace 示例​

工具调用链路要覆盖模型决策、权限检查、工具入参、下游调用、结果处理和副作用确认。

Span关键字段失败分析用途
tool.policy_checkpolicy.version、decision、reason是否越权
tool.calltool.name、args_hash、idempotency_key是否重复/错参
tool.downstreamhttp.status_code、retry_count下游可靠性
tool.result_normalizeresult_size、schema_valid结果契约
tool.side_effect_confirmbusiness_id、ledger_status副作用确认

11. 工具调用事件结构​

{
"event_name": "agent.tool_call.completed",
"tool": {
"name": "issue_refund",
"version": "1.4.0",
"args_hash": "sha256:abc",
"idempotency_key": "refund:A123:v1"
},
"policy": {"version": "refund_policy_v2", "decision": "needs_approval"},
"downstream": {"status_code": 200, "duration_ms": 480},
"result": {"schema_valid": true, "business_id": "refund_789"},
"safety": {"risk_level": "high", "approval_id": "apv_456"}
}

12. 告警与指标​

指标告警建议
Tool Error Rate单工具 5 分钟高于基线
Tool Timeout Rate影响 TSR 时告警
Forbidden Tool Call任意出现即安全告警
Missing Approval Rate高危工具目标为 0
Duplicate Side Effect目标为 0
Tool Cost Spike成本环比异常

13. 安全与治理​

  • 工具参数默认只记录 hash;排障需要明文时走受控调试环境。
  • 外部内容触发的工具调用要标记 untrusted_input=true。
  • 高危工具的 trace 必须记录审批 ID、审批结果和业务事实 ID。
  • tool adapter 要统一注入 traceparent,不能每个工具各自实现。
  • 工具失败回放必须使用 fixture,避免调试时重复产生副作用。

14. 补充权威资料​