跳到主要内容

演示到生产的失败模式:为什么AI原型在真实用户到来时会崩溃

· 阅读需 11 分钟
Tian Pan
Software Engineer

30%的生成式AI项目在概念验证后被放弃。95%的企业试点没有产生任何可衡量的业务影响。Gartner预测,到2027年底,40%的智能体AI项目将被取消。这些并非底层技术的失败——而是演示与生产之间差距导致的失败。

演示到生产的失败模式是可预测、可重复的,也几乎完全可以预防的。它的发生是因为让演示看起来很棒的条件与让生产正常运行的条件系统性地不同。团队优化前者,却被后者打个措手不及。

演示是谎言(并非有意为之)

一个引人注目的AI演示有几点优势,但没有人会大声说出来:

精心挑选的输入。 演示使用构建者知道系统能很好处理的问题和提示。演示者选择一个主题,清晰地构建查询,避免真实用户会立即产生的模糊、不完整或对抗性措辞。没有人在演示中写"你能帮我总结一下这个玩意儿吗??"但真实用户会这样写。

预热的基础设施。 从开发者笔记本电脑或预热的暂存环境演示的系统,其模型权重已加载到GPU内存中,向量索引已热加载,提示缓存已填充。生产环境面临冷启动延迟:无服务器GPU部署在第一个token出现之前,加载权重可能需要30到60秒。即使是托管推理,在需求激增时也会增加可变的队列时间。演示中看起来很好的p50延迟,并不是用户将体验到的p95。

有耐心的评估者。 评估演示的人对其成功有投入,对错误有容忍度。他们会在心理上补全模糊的输出,原谅缓慢的响应,如果出现问题也不会关闭标签页。真实用户如果应用程序在三秒内没有响应就会放弃——53%的用户会这样做。每增加一秒延迟,7%的用户就会离开。

这些都不是欺骗性的,只是演示自然构建的方式。问题在于当团队将演示性能视为生产就绪性的可靠信号时。

分布偏移:测试集与用户之间的差距

生产崩溃最常见的原因不是bug——而是真实用户发送的请求与系统评估时使用的请求完全不同。

规范查询与真实查询。 工程师构建的评估集措辞规范、结构清晰、语义明确。真实用户写的是片段,混合语言,发出矛盾的指令,并做出系统无法满足的假设。在完整帧中人脸占据整个画面的近距离肖像上,基准准确率为94%的人脸检测模型可能会系统性地失败——这种输入类型没有人想到要包含在测试集中。

对抗性分布。 系统上线的那一刻,就有一部分用户会积极探测它。他们会尝试越狱,注入冲突指令,并探索没有任何演示场景接近的边缘案例。这不仅仅是安全问题——对抗性输入揭示了标准评估集完全遗漏的故障模式。

长尾变异。 多语言输入、特定领域术语、非标准文档格式、具有共享状态的并发请求——这些边缘案例不会出现在演示中。在生产中,它们构成了实际流量的相当大比例。在演示中处理干净PDF的RAG系统,在生产中会遇到破坏分块管道的扫描文档、嵌套表格、部分OCR文件和格式转换数据。

解决方案是在评估期间故意注入多样性:在预发布测试套件中包含多语言输入、语法错误输入、对抗性输入和边缘案例格式。不是作为事后补充——而是作为必要关卡。

延迟悬崖:并发下的均值与尾部

生产延迟和演示延迟测量的是不同的东西。

演示延迟是单请求、预热缓存、无拥塞的。生产延迟是并发的、第一次调用时冷启动的、受队列动态影响的。

交互式AI应用程序的相关指标不是平均延迟——而是在真实并发下的p95首token时间(TTFT)。可用交互式AI的行业目标是文本p95 TTFT低于500ms,语音低于300ms。一旦请求并发超过演示测试期间的基础设施容量,两者都会崩溃。

这个数学是无情的。随着批量大小超过最优服务点,每个请求的延迟会急剧增加。当并发超过可用GPU容量时,请求就会排队。在单用户演示中响应时间为400ms的系统,当50个用户同时访问时可能响应时间为8000ms——这还不包括冷启动。

冷启动陷阱。 出于成本原因选择无服务器或按需缩放GPU部署的组织,往往在生产中发现这个问题。单单加载模型权重就可能需要30秒。容器缓存策略可以将此减少约一半,但将30秒冷启动减半仍然会产生15秒的等待,这会破坏每次新部署或自动扩展事件时所有用户的第一印象体验。

预发布负载测试必须模拟真实的并发用户,而不是单请求顺序运行。必须捕获p95和p99百分位数,而不是均值。必须测试冷启动场景,而不仅仅是预热稳态。

为什么传统质量保证对LLM系统失效

标准测试假设是:相同输入→相同输出。这个不变量消失了。

LLM在设计上是不确定的。温度、采样以及自回归生成的随机性意味着相同的提示在连续调用中可能产生实质上不同的输出——即使在零温度下,跨提供商区域的批处理效果和硬件差异也会引入方差。

这破坏了大多数继承的测试基础设施:

  • 断言中的精确字符串匹配变得毫无意义。你需要语义等价评估。
  • 回归测试会衰退,因为模型行为随提供商更新而变化,你冻结的测试套件不再反映系统在实践中的行为。
  • 二元通过/失败发布标准不适用。质量是一个分布,你需要对该分布进行阈值门控。

评估集过拟合是一个被低估的风险。在基准上训练的模型会在其上获得高分,同时在需要真正理解的变体问题上失败。EvalPlus证明了这一点:将HumanEval基准扩展80倍立即降低了代码生成准确率,因为系统隐式地针对狭窄的原始测试案例进行了优化。

对于发布AI团队的实际影响:你的基准准确率是上限,而不是基线。生产中会更低。

Klarna案例教训

2024年初,Klarna部署了一个AI系统,他们声称该系统在35种以上语言中处理了853名客服代理的工作。CEO公开引用了人类等效质量,以及75%的聊天自动处理。

到2025年初,内部审查讲述了一个不同的故事:客户投诉增加、满意度降低、回应通用,以及无法处理复杂的多步问题。到2026年初,Klarna改变了方向,公开重新招聘员工,CEO承认这种方法"对服务和产品质量产生了负面影响"。

这个模式很有启示意义。演示指标——处理的对话量、成本降低、覆盖率——都是真实的。演示没有衡量的是复杂案例的质量、多轮交互中的用户满意度,或者当系统达到其能力边界并在没有优雅路径的情况下失败时会发生什么。

Klarna的失败并不是独一无二的。它是演示到生产崩溃的典型形式:针对演示容易捕捉的指标进行优化,同时忽略生产无法避免的指标。

预发布压力测试方法论

一贯避免生产崩溃的团队共享一个实践:他们在发布前而不是发布后列举失败模式。

输入多样性审计。 在发布前,构建一个故意包含舒适区以外输入的测试集:多语言、代码混合、对抗性、格式不佳、领域边缘案例,以及明确试图破坏预期行为的完成。目标不是在这个集合上取得高分——而是了解系统在哪里失败,并决定这些失败模式是否可以接受。

在真实并发下进行延迟分析。 在你的发布流量实际会产生的并发级别下运行负载测试。测量p95和p99 TTFT,而不是平均延迟。测试冷启动场景。如果你的系统无法在第一天的流量下达到可接受的p95延迟,你从演示中无法知道这一点。

故障模式枚举。 对于系统的每个主要功能,问:这失败时会发生什么?用户看到什么?它是可恢复的吗?它是静默失败还是可见失败?静默失败——合理但错误的响应——比可见错误更难检测,对信任的损害更大。在发布前而不是发布后,花时间来描述它们。

上线前的防护措施。 输入验证、输出模式执行、PII检测和提示注入过滤需要在生产之前就位。不是作为第二阶段项目。在生产中,它们捕获评估集中没有出现的对抗性和格式错误的输入。它们的缺席将被你第一波非演示用户发现。

区分能发货与停滞不前的团队

对超过一千个LLM生产部署的分析揭示了一个模式:成功从试点扩展到规模的团队,在第一个生产任务之前就运行了自动化评估基础设施。不仅仅是演示评估——而是一个跨多个维度测量质量的持续管道,将自动评估与定期人工判断相结合。

停滞的团队将评估视为一个阶段,而不是管道。他们在演示时进行测量,部署,然后在几周后通过用户投诉发现回归。

另一个区别因素是运营所有权。在扩展之前指定专门AI运营责任的组织——拥有监控、事件响应和评估——回滚部署的可能性降低了5.7倍。那些等到出现生产事件后才弄清楚谁负责什么的组织,艰难地发现AI事件比传统基础设施故障移动更快、更难诊断。

做好这件事的工具并不奇特。语义评估框架、负载测试基础设施和输入多样性数据集都存在。罕见的是组织决定以与其他任何关键任务基础设施相同的预发布严格标准对待AI系统——而不是将其视为可以粗糙发布、后续改进的演示。

它们不会在后续改进。它们会被回滚。

在差距关闭你之前关闭差距

演示到生产的差距不是技术问题,而是方法论问题。使演示令人印象深刻的技术——大型上下文窗口、有能力的基础模型、低每token成本——在生产中同样有效。不会自动转移的是演示所依赖的受控环境。

在发布前通过刻意施压来关闭差距:

  • 注入不像训练数据的输入
  • 在真实并发下测量延迟,而不是单用户顺序
  • 测试每个功能的失败模式,而不仅仅是成功路径
  • 构建持续运行的评估基础设施,而不仅仅是在发布关口

2026年发布可靠AI的团队在架构上没有做任何新颖的事情。他们正在将软件工程基础应用于大多数从业者仍然视为碰巧上线的演示的系统。

Let's stay in touch and Follow me for more thoughts and updates