事故响应与持续改进

本节目标

在LLM应用发生质量、安全、费用或供应商故障时,先保护用户和保留证据,再定位到Prompt、上下文、检索、模型、工具或策略的具体变化。

LLM事故不只是5xx

以下情况都可能是事故:

  • 服务返回200,但大量事实错误或无根据答案;
  • 工具参数格式正确,却越权查询或重复写入;
  • Prompt injection让系统暴露不应显示的上下文;
  • 供应商或网关重试导致费用或队列爆发;
  • 检索快照未更新,系统稳定返回过期政策;
  • 观测管线丢弃关键spans,导致无法判断影响。

事故分级应从用户影响、数据/安全后果、可逆性、影响范围和持续时间出发,而不只看HTTP错误率。

前30分钟的原则

  1. 声明事故与负责人:记录开始时间、已知影响、指挥者和沟通渠道。
  2. 遏制:停止Canary扩大,禁用高风险工具、切换只读/人工流程或回滚完整manifest。
  3. 保留证据:冻结release、发布清单和candidate gate的完整SHA-256摘要、网关路由、策略、检索快照、评测报告、脱敏Trace引用和供应商请求ID;短指纹只可辅助人读,不能独自绑定事故证据。
  4. 评估范围:用受控元数据按时间、release、任务、租户或地区分组,不为统计便利扩大敏感数据访问。
  5. 沟通已知事实:区分已证实影响、调查中假设和尚未知道的范围。

不要在证据保存前批量清理日志或覆盖快照。也不要为查故障临时开启全量敏感Prompt记录,这可能创造第二个事故。

按组件分诊

证据首先检查不应直接得出的结论
新release才出现回归manifest差异、缓存隔离、路由一定是模型变差
所有release都出错供应商、共享网关、数据源、共享工具回滚应用就能修复
只有有检索的请求错索引快照、权限过滤、Chunking、RerankerPrompt需要重写
工具写入重复重试、超时、幂等键、工具实现模型“太积极”
费用突增Agent循环、重试、缓存命中、输出长度、价格版本只是用户变多

指标变化是线索,根因需要时间线、版本差异和可验证假设支持。

恢复与验证

修复前先定义“恢复了”的证据:关键路径冒烟测试、用户SLI、工具副作用审计、质量/安全样本和观测完整性。回滚成功的控制面状态不等于用户影响已停止。既已写入的外部副作用还需要查找、撤销或通知。

恢复时渐进增加流量,确保监控本身正常,避免从“全降级”一步返回满负载。

复盘如何进入工程闭环

无责复盘聚焦系统如何容许失败发生和扩大,但仍需明确责任边界和行动项所有者。有效输出包括:

  • 基于证据的时间线和根因/促成因素;
  • 为何离线门、Canary或告警没有提前拦截;
  • 需要人工分诊、脱敏、去重、许可与最小复现后才接纳的新回归样本,以及新的断言、运行手册或自动化遏制;
  • 可验证行动项,例如“为写工具添加幂等键契约测试”,而不是“以后更小心”;
  • 改进何时和如何被演练。

练习与自测

情景:新release上线后费用翻倍,总请求数不变,工具写入重复上升,部分Trace显示模型调用重试。写出前30分钟的遏制、证据保存、范围评估和恢复验证。然后回答:

  1. 哪些证据支持回滚,哪些还只是相关线索?
  2. 为什么只回滚模型可能无法停止重复写入?
  3. 这次事故应生成哪些新回归样本和合同测试?

小结与下一步

事故响应的成功不是“不再报错”,而是用户风险受控、证据完整、服务被验证恢复,且教训经受控接纳后进入回归集和发布策略。参照 离线到线上证据交接与回归闭环 的角色边界,再通过 离线发布门项目与自测 整合本库内容。

参考资料