AI 工具开发 高级

工具的工程质量:校验、超时、重试与可观察

工具是生产代码:输入校验、超时熔断、错误信息设计、幂等与留痕——让工具经得起模型"乱调"。

模型会"乱调"工具——这是默认假设

幻觉参数(不存在的 ID)、颠倒参数顺序、超范围取值、疯狂重试……工具实现必须把模型的每次调用都当作不可信输入来防御(与《Harness 安全边界》同源)。

五道工程防线

  1. 输入校验:类型、范围、格式逐项校验;失败返回{"error": "参数 start_date 格式应为 YYYY-MM-DD,收到 2024/1/1"}——错误信息要教模型怎么改
  2. 超时熔断:任何外部调用(HTTP/DB)设置超时,超时返回"操作超时,可稍后重试",绝不挂起整个 Agent;
  3. 幂等与防重:写操作支持幂等键,避免模型重试导致重复下单/重复发信;
  4. 限流与配额:昂贵工具(搜索、代码执行)加频次限制,返回"已达调用上限";
  5. 全程留痕:每次调用记录 参数/结果/耗时/是否成功——既是审计,也是下一课评测的数据源。

错误信息的"模型友好"写法

# ❌ 差:模型无从下手
raise ValueError("invalid input")

# ✓ 好:说清哪里错、期望什么
return {"error": "order_id ORD-12345 不存在。可先用 search_orders 查询有效订单号"}
经验法则:工具错误的理想效果是模型看到错误后下一次就调对——错误信息是工具的自我教学材料。

📝 课后练习

quiz-1 模型传错了工具参数(如日期格式不对),工具的最佳响应是?