Agent 工具出错处理策略

如果工具返回了错误结果,Agent应该怎么处理?

大厂二面问:如果工具返回了错误结果,Agent应该怎么处理?这题是真在考工程功底。别张口就说让模型再调一次。面试官立刻追问:你怎么知道错了?重试几次?前面状态怎么办?

核心链路

Agent拿到工具结果,要先过一层校验,判定 okretryfallback,再决定下一步。

第一步:识别错误

不能只看HTTP 200,要校验:

  • 字段完整性
  • Schema 合规
  • 值域范围
  • 空结果判定
  • 再让模型做语义判定

第二步:错误分类

错误类型描述处理路径
可重试的瞬时错网络抖动、服务暂时不可用指数退避重试
参数级的逻辑错入参格式不对、语义不匹配修正入参后重试
系统错彻底不可用、权限拒绝走降级

第三步:三种处理路径

瞬时错 → 重试

  • 指数退避 + 上限(最多三次)
  • 别让模型在失败工具上死循环烧 token

参数错 → 修正入参

  • 让模型重写输入参数,不是无脑重试
  • 把错误信息回灌上下文,告诉模型哪里错了,再调一次

系统错 → 降级

  • 准备 fallback 工具或备用链路
  • 搜索挂了用本地知识库
  • 宁可降质量也不能断

第四步:多步任务的事务一致性

  • 前面工具已执行的写操作必须能回滚
  • 要么做事务幂等,要么补偿动作
  • 别留脏数据

第五步:错误模式沉淀

  • 把错误模式写进 memory 或 few-shot
  • 下次遇到直接绕开
  • Agent 才能越用越稳

总结

这套题表面问的是工具出错怎么办,其实考的是你能不能把 Agent 做成可重试、可降级、可恢复的系统。


via 小王 · 大厂二面面经