Agent 可靠性工程:失败、重试与降级
【摘要】 结论:Agent 的失败是常态而非例外——模型会超时、工具会挂、返回会不合规。可靠性不是"让失败不发生",而是"失败发生时,系统仍能给出可接受的结果"。一、失败要分类,不同类不同处理失败类型例子处理策略瞬时故障网络抖动、超时指数退避重试语义失败输出不合 schema校验后重生成,限次数工具失败第三方 API 5xx重试 / 换工具 / 降级决策失败选错工具、跑偏触发重规划或人工介入不可恢复权...
结论:Agent 的失败是常态而非例外——模型会超时、工具会挂、返回会不合规。可靠性不是"让失败不发生",而是"失败发生时,系统仍能给出可接受的结果"。
一、失败要分类,不同类不同处理
| 失败类型 | 例子 | 处理策略 |
|---|---|---|
| 瞬时故障 | 网络抖动、超时 | 指数退避重试 |
| 语义失败 | 输出不合 schema | 校验后重生成,限次数 |
| 工具失败 | 第三方 API 5xx | 重试 / 换工具 / 降级 |
| 决策失败 | 选错工具、跑偏 | 触发重规划或人工介入 |
| 不可恢复 | 权限不足、资源不存在 | 快速失败,明确报错 |
把不可恢复的错误当瞬时错误去重试,是最常见的浪费;把瞬时错误当致命错误直接放弃,是最常见的脆弱。
二、重试的三条纪律
-
只重试幂等操作:非幂等动作(发消息、扣款)重试会产生重复副作用,必须先做幂等键或去重。
-
指数退避 + 抖动:固定间隔重试会制造重试风暴。
-
有上限:重试次数、总耗时都要封顶,超限就升级处理。
三、降级路径
每一条关键链路都应提前想好"退一步怎么办":换备用模型、换备用工具、返回缓存结果、缩小任务范围、转人工。没有降级路径的强依赖,等于把系统绑在单一故障点上。
四、超时与熔断
-
每一次外部调用都要有超时,不能无限等待。
-
连续失败达到阈值时熔断,暂时跳过故障依赖,避免雪崩。
-
熔断后要有半开探测,恢复后自动接回。
五、常见误区
-
把所有错误都重试;非幂等操作无脑重试;无退避导致重试风暴;无超时导致挂死;只保成功率不管副作用。
六、检查单
-
[ ] 失败有分类,策略与类型匹配
-
[ ] 仅幂等操作可重试,否则有幂等键
-
[ ] 指数退避 + 抖动 + 上限
-
[ ] 关键链路有降级路径
-
[ ] 外部调用全部有超时
-
[ ] 有熔断与半开恢复
-
[ ] 失败升级机制清晰(重试→降级→人工)
-
[ ] 失败信号不被静默吞掉
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)