AI 事故复盘:当「模型导致的」成为根本原因
一家航空公司的客服 AI 告诉一位旅客,他可以先购买全价机票,事后再申请丧亲优惠折扣。旅客信以为真,飞行后提交了申请,却遭到公司拒绝。仲裁庭最终判决公司须赔偿 650 美元——因为法律上并无区分人类员工与聊天机器人所给建议的规定。那个聊天机器人并未崩溃,没有任何告警触发,p99 延迟也未见异常。系统在「正常运行」。
这正是 AI 事故的典型特征:应用程序并未报错——它成功地、自信地、大规模地生成了错误输出。 而当你坐下来撰写事后分析报告时,经典的工具箱便彻底失灵了。
五问分析法(5-Why)假设只要沿着因果链追溯足够深,就能找到一个可修复的确定性根本原因:「函数返回了 null,因为输入为空,因为上游服务丢弃了字段,因为……」这条链是存在的,可以追溯。
但在 AI 故障中,因果链终止于「模型根据此输入预测了此输出」——而这个预测是随机的。用相同的提示词再问一次,可能得到不同的答案。「bug」无法复现,没有代码行可以指向,故障在你无法控制的数十亿参数内部概率性地发生。
本文将具体讲解如何应对这一困境。
为何五问分析法在随机系统上失效
五问法是一种根因提取技术,它在原因具有确定性且单一的场景下有效。而 AI 故障同时违反了这两个前提。
模型层的不确定性:即使温度设为 0,大多数生产级 LLM 仍因批归一化、硬件间浮点不确定性以及量化效应而引入随机性。温度大于 0 时,你实际上是在从概率分布中采样。「相同」的提示词并不能保证相同的输出。
多重叠加原因:一次 AI 事故通常至少有三个相互交织的原因——模型行为、提示词缺陷和数据上下文问题——任何单一原因都不足以单独触发故障。五问法寻找单一根因,而非多因素交集。
静默失效模式:传统事故有明确的检测时刻:错误率飙升、崩溃告警触发、超时阈值被突破。AI 事故往往通过用户投诉、下游数据质量检查或人工复核才浮出水面——有时在故障发生数天之后。那时,触发故障的精确条件可能已无法还原。
结论:你不能像对待软件 bug 事后分析那样对待 AI 事后分析,需要一套不同的分析框架。
AI 故障类型分类
在撰写有价值的事后分析之前,你需要正确判断发生了哪种故障类型。不同类型的修复方 案截然不同。
模型故障是嵌入在训练参数本身中的故障。亚马逊的实验性招聘工具会对包含「女性」等词汇的简历降权,因为它是在一个以男性为主的行业的十年简历数据上训练的。这个 bug 存在于训练数据和已学习的权重中——没有任何代码路径可供检查,无法打补丁,只能重训或废弃。
提示词故障是你对模型的指令方式存在缺陷。提示词的意图与模型实际优化的目标不匹配。一个要求「总结这份合同」却未指定受众、长度或关键条款的提示词,将产生不一致的输出。模型没有问题,是指令欠具体。这类问题可通过提示词迭代和评估来修复。
数据故障是由于输入分布偏离了模型构建时所针对的数据而导致的故障。Zillow 的房屋估值算法在疫情后市场剧烈波动打破所有历史规律之前运作良好。模型的内部逻辑是自洽的——是现实世界的分布变了。这类故障需要监控和重训触发机制,而非提示词修复。
大多数生产 AI 事故是多种类型的叠加:约束不足的提示词(提示词故障)在分布偏移的输入上运行(数据故障),触发了模型训练中的某个边缘情况(模型故障)。你的事后分析需要识别哪一层是主因,以及各层各自贡献了什么。
重建故障所需的遥测数据
大多数 AI 事后分析得出模糊结论的原因,在于团队在推理阶段未捕获足够的上下文。仅凭延迟指标和错误率,你无法重建一次 AI 故障。
捕获完整的请求-响应对:每次推理调 用都应存储完整的提示词(包括系统提示和注入的上下文)、原始模型响应、模型版本和配置(温度、最大 token 数、top-p),以及将其与用户会话和上游请求关联的 Trace ID。
端到端追踪多阶段流水线:大多数生产 LLM 系统并非单次推理调用,而是检索流水线、链式 Agent 调用、工具执行和重排序步骤的组合。每个阶段都需要自己的 Span——检索查询与结果、重排分数、链中的每次 LLM 调用、每次工具调用及其输出。事故发生时,你需要重建完整的因果链,而不仅仅是最终生成结果。
记录上下文窗口内容:检索增强系统在检索到的上下文错误、过时或不相关时会失效。捕获推理时上下文窗口中的文档内容——而不仅仅是检索所用的查询——是你能够解释故障与在事后分析中写下「模型产生了幻觉」之间的关键差异。
保留模型版本元数据:如果你在调用 API 提供商,记录精确的模型版本,而不仅仅是模型名称。「gpt-4」并非稳定的制品;提供商会悄然进行更新。当行为发生偏移时,你需要知道模型是否在你不知情的情况下发生了变化。
在推理旁路实现结构化评估日志:与其等待事故后再分析质量,不如将轻量级自动评估作为推理流水线的一部分来运行。在每条响应旁记录结构化质量得分(准确性、相关性、约束满足度)。这将你的生产流量转化为持续数据集——也是在用户投诉之前检测降级的手段。
