Agent 工具出错处理策略
如果工具返回了错误结果,Agent应该怎么处理?
大厂二面问:如果工具返回了错误结果,Agent应该怎么处理?这题是真在考工程功底。别张口就说让模型再调一次。面试官立刻追问:你怎么知道错了?重试几次?前面状态怎么办?
核心链路
Agent拿到工具结果,要先过一层校验,判定 ok、retry、fallback,再决定下一步。
第一步:识别错误
不能只看HTTP 200,要校验:
- 字段完整性
- Schema 合规
- 值域范围
- 空结果判定
- 再让模型做语义判定
第二步:错误分类
| 错误类型 | 描述 | 处理路径 |
|---|---|---|
| 可重试的瞬时错 | 网络抖动、服务暂时不可用 | 指数退避重试 |
| 参数级的逻辑错 | 入参格式不对、语义不匹配 | 修正入参后重试 |
| 系统错 | 彻底不可用、权限拒绝 | 走降级 |
第三步:三种处理路径
瞬时错 → 重试
- 指数退避 + 上限(最多三次)
- 别让模型在失败工具上死循环烧 token
参数错 → 修正入参
- 让模型重写输入参数,不是无脑重试
- 把错误信息回灌上下文,告诉模型哪里错了,再调一次
系统错 → 降级
- 准备 fallback 工具或备用链路
- 搜索挂了用本地知识库
- 宁可降质量也不能断
第四步:多步任务的事务一致性
- 前面工具已执行的写操作必须能回滚
- 要么做事务幂等,要么补偿动作
- 别留脏数据
第五步:错误模式沉淀
- 把错误模式写进 memory 或 few-shot
- 下次遇到直接绕开
- Agent 才能越用越稳
总结
这套题表面问的是工具出错怎么办,其实考的是你能不能把 Agent 做成可重试、可降级、可恢复的系统。
via 小王 · 大厂二面面经