标准答案

  1. 先按错误分类:参数或权限错误直接失败,限流和瞬时网络错误有限退避,模型质量不足进入备用模型或人工复核,安全拒答走合规替代路径。
  2. 每次任务设置总 deadline、最大重试次数、Token/金额预算和幂等键。重试记录 attempt、原因和路由,避免网关、应用和 SDK 各自重试造成倍增。
  3. 降级要保持用户可理解,例如从高质量模型切到较快模型、从自动执行切到生成草稿、从实时回答切到异步任务;涉及副作用的动作应在人工确认后执行。

题目解析

降级不是简单换一个模型。备用模型可能不支持工具或结构化输出,因此要先定义能力兼容性和结果校验。不能为了返回 200 而返回未经验证的错误答案。

重试必须考虑副作用。纯文本生成通常较容易重试;发送邮件、写数据库和调用外部支付时,应使用幂等键、状态机或 Outbox,不能把网络超时当成“肯定没执行”。

人工接管需要保存足够上下文:用户请求、检索来源、工具操作、失败原因和已生成内容,同时隐藏不应暴露的密钥与个人信息。

系统要监控重试率、降级率、人工接管率和最终成功率。若某个错误持续增加,应修复根因,而不是不断扩大自动重试预算。

常见误区

  • 把所有 4xx、拒答和 Schema 错误都重试。多数情况下这些错误重试不会改变结果。
  • 备用模型直接接收同样的大上下文和参数,不检查能力与预算,导致降级后仍失败或成本更高。
  • 只设计“失败提示”,没有人工处理记录和任务恢复方式。用户最终无法完成业务。

作者信息