Appearance
17. 工具调用失败时,Agent 应该怎么处理?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:工具调用失败时,Agent 应该怎么处理?
🙋♂️我:报错给用户,或者重试一下。
👔面试官:太简单了。重试几次?什么错误可以重试,什么不该重试?失败后是继续、终止还是转人工?这些都要有策略。
🙋♂️我:那就网络错误重试,业务错误终止?
👔面试官:对,但要更系统:区分错误类型(可重试 vs 不可重试)、重试策略(次数、间隔、退避)、失败兜底(默认值、替代工具、转人工)。你能讲清楚吗?
💡 简要回答
工具调用失败的三层处理:
| 层级 | 策略 |
|---|---|
| 错误分类 | 可重试(网络超时、限流)vs 不可重试(参数错误、权限不足) |
| 重试策略 | 次数上限、指数退避、熔断 |
| 失败兜底 | 默认值、替代工具、转人工、优雅降级 |
原则:不要让用户看到原始错误堆栈,要给友好的反馈和后续路径。
📝 详细解析
错误分类
可重试错误:
- 网络超时
- 服务暂时不可用(503)
- 限流(429)
不可重试错误:
- 参数格式错误(400)
- 权限不足(403)
- 资源不存在(404)
重试策略
次数上限:
- 最多重试 3 次,避免无限循环
指数退避:
- 第 1 次:1秒后重试
- 第 2 次:2秒后重试
- 第 3 次:4秒后重试
熔断机制:
- 连续失败 N 次后,短时间内不再调用
- 避免压垮下游服务
失败兜底
返回默认值:
- 查询天气失败,返回"无法获取天气信息"
替代工具:
- 主搜索失败,切换到备用搜索
转人工:
- 关键操作失败,不要自动重试,转人工审核
优雅降级:
- 工具不可用,用 Prompt 回答(虽然效果差,但不中断)
给用户的反馈
不要:
- 直接暴露错误堆栈
- 说"系统错误"然后卡住
要:
- "查询服务暂时不可用,我稍后为您重试"
- "这个操作需要人工协助,为您转接客服"
- "虽然没有实时数据,但根据历史信息..."
🎯 面试总结
三层处理:分类(可重试/不可重试)→ 重试策略 → 兜底方案。关键是给用户友好反馈,不是暴露错误。