跳到主要内容

214 篇博文 含有标签「production」

查看所有标签

模型弃用就绪:在 90 天倒计时之前审计你的行为依赖

· 阅读需 10 分钟
Tian Pan
Software Engineer

当 Anthropic 去年废弃一个 Claude 模型时,一家公司察觉到了——但这仅仅是因为下游解析器在生产环境中开始报错。罪魁祸首?新模型偶尔会将其 JSON 响应包裹在 Markdown 代码块中。旧模型从不这样做。没人记录过这一假设,也没人对此进行过测试。修复只花了一个下午;诊断却花了三天。

这种模式——无声的行为依赖在生产环境中“震耳欲聋”地崩盘——是模型迁移中典型的失败模式。你更新了模型 ID,跑了一个简单的冒烟测试(sanity check),然后发布。六周后,一些细微的问题出现了。你的 JSON 解析失败率提高了 0.6%。边缘情况下的拒绝率翻了一番。你的结构化提取漏掉了一个以前能可靠填充的字段。差异不在代码中——而在模型的行为中,而你从未为此编写过契约(contract)。

随着主要供应商现在的废弃周期缩短至 60–180 天,且模型发布的速度在加快,这已不再是一个理论上的担忧。这是一个周期性的运营挑战。以下是如何提前应对的方法。

生产环境中的采样参数:那些没人解释清楚的调参决策

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数工程师将 LLM 质量回归视为提示词工程问题或模型能力问题。他们会重写系统提示词、尝试更新的模型,或添加少样本示例。他们很少检查每次 API 调用顶部静静躺着的三个数字:temperature、top-p 和 top-k。但这些默认值正在悄然改变模型产出的每一个响应,错误的调参会导致输出方差——团队往往数月内都把锅甩给模型,直到意识到罪魁祸首不过是一个从未动过的配置值。

这不是入门教程。如果你在生产环境中运行 LLM——用于信息抽取管道、代码生成、摘要,或任何输出流入真实系统的任务——以下是你在智能调参之前必须理解的机制与权衡。

结构化输出并非已解决的问题:生产环境中的 JSON 模式失效模式

· 阅读需 14 分钟
Tian Pan
Software Engineer

你开启了 JSON 模式,你的 LLM 开始返回有效的 JSON,然后你发布了它。三周后,生产环境悄无声息地挂了。JSON 在语法上是有效的。Schema 在技术上也是满足的。但某个字段包含了一个虚构的实体,finish_reason"length" 导致数据负载在 95% 处被静默截断,或者模型对任何人类读起来都感到刺耳的文本分类为 "positive" 情感——而你的下游流水线毫无怨言地吞下了它。

JSON 模式被解决的方式,就像“使用互斥锁(mutex)”解决并发问题一样。原语(primitive)是存在的。但故障模式并不在于你把锁放在哪里。

AI 泛滥反模式:过度使用 LLM 只会让你的流水线更糟

· 阅读需 10 分钟
Tian Pan
Software Engineer

几乎每家持续交付 AI 功能的公司都会出现这样一种架构:流水线中的每一次转换、每一个路由决策、每一次分类、每一个格式化步骤,全都经过 LLM 调用。它通常始于一个合理的场景——LLM 确实解决了一个棘手问题。然后团队内化了这个模式,开始反复套用。直到整个系统变成一条 LLM 接 LLM 的链条:一串文字从一端进入,另一串从另一端出来,中间经历了十二次 API 调用,全程没有任何确定性可言。

这就是 AI 泛滥反模式,它现在已成为构建一个缓慢、昂贵且无法调试的生产系统的最可靠方式。

为生产环境选择向量数据库:基准测试不会告诉你的事

· 阅读需 13 分钟
Tian Pan
Software Engineer

当工程师评估向量数据库时,他们通常会加载 ANN 基准测试,并选择在 recall-at-10 排行榜上名列前茅的产品。三个月后,他们就开始提交迁移工单了。这些基准测试是在单一客户端、静态且索引完美的索引数据集上测量查询吞吐量的。但生产环境完全不是这样。

本指南涵盖了预测向量数据库在实际工作负载下能否撑住的五个维度,以及一个将这些维度与你的技术栈进行匹配的决策框架。

非确定性服务的 API 契约:随机输出下的版本管理

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的内容审核服务返回 {"severity": "MEDIUM", "confidence": 0.85}。下游计费系统将 severity 解析为枚举值 ["low", "medium", "high"]。一次模型更新后,服务偶尔开始返回首字母大写的 "Medium"。没有任何部署发生,没有 schema 变更。集成在生产环境中悄然崩溃,整整六天无人察觉——因为所有 HTTP 状态码都是 200。

这是 LLM 支撑服务 API 契约的根本问题:表面看起来像 REST API,但底层行为是概率性的。标准契约工具假设确定性。当这个假设被打破时,它是悄无声息地崩溃的。

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

· 阅读需 11 分钟
Tian Pan
Software Engineer

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

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

生产级文档 AI:为什么 PDF 演示会撒谎,而生产流水线不会

· 阅读需 13 分钟
Tian Pan
Software Engineer

一份干净的 PDF、一个强大的 LLM、三十行代码。演示成功了。你提取出了发票总额、合同日期、患者诊断。利益相关方印象深刻。然后你推向生产,不到一周,流水线就在 15% 的文档上静默地返回错误数据——而没有人知道。

这就是文档 AI 的陷阱。失败模式不是崩溃或异常,而是一条在生成垃圾数据的同时仍然报告"成功"的流水线。构建生产级文档提取,与构建一个演示,是完全不同的问题——而大多数团队直到已经上线才意识到这一点。

为什么你的文档提取器在最重要的合同上会失效

· 阅读需 15 分钟
Tian Pan
Software Engineer

你的发票解析器可能运行得不错。给它一个来自世界 500 强供应商的清晰、数字化的 PDF —— 结构化的行、一致的列宽、机器生成的文本 —— 它就能以近乎完美的准确度提取行项目。但当有人上传一份来自区域供应商的多页合同、一份带有手写修改的扫描表格,或者一份表格标题在第 3 页而数据行延续到第 6 页的财务报表时,提取器就会悄无声息地失败,返回部分数据,或者自信地生成结构化输出,而这些输出的错误方式是任何下游校验都无法捕捉到的。

这是企业级文档智能的核心问题:使你的系统崩溃的文档并不是边缘案例。它们往往是具有最高业务价值的文档。

将评估覆盖率作为生产指标:你的测试套件真的在测试用户实际行为吗?

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数 AI 团队把通过评估套件视为系统正常运行的信号。但事实并非如此——至少不全是。一个稳定得分 87% 的套件只做了一件事:告诉你系统在套件恰好覆盖的那 87% 的场景中表现良好。如果这套测试是六个月前手工整理的,基于团队能想到的示例,从未用真实流量更新过,那它正在以越来越高的置信度测量错误的东西。

这就是评估覆盖率问题。它与你的评估器是否准确无关——而是关于你测试集中的查询分布是否与用户实际发送的查询分布相匹配。当这两种分布出现偏差时,你会得到一个比评估失败更糟糕的结果:一个通过的评估,背后却是悄然劣化的产品。

人类放在哪里:AI 审批关卡的放置理论

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数团队将人机协作审核作为事后补充:智能体完成其工作链,结果落入审核队列,然后人工点击批准或拒绝。这看起来像是安全保障,但实际上大多只是一种表演。

当一个多步骤智能体到达链尾审核时,它已经发送了 API 请求、修改了数据库行、起草了客户邮件并安排了后续跟进。所谓的"审核"不过是在批准一件已经完成的事。拒绝它意味着向智能体——通常也向用户——解释为什么过去 10 分钟发生的一切都不作数。

错误放置审批关卡造成的危害并不总是戏剧性的。更多时候,危害更加隐蔽:审核者批准一切,因为真正的决策已经做出;工程师在事故发生后增加更多检查点,却眼睁睁看着产品信任度崩溃;组织在"太多摩擦"和"监督不足"之间摇摆,却从未解决根本的放置问题。

知识切断是一个隐形的生产环境 Bug

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数生产环境中的 AI 失败都是“响亮”的。模型返回 5xx 错误。模式验证抛出异常。评估套件在发布前捕获了回归。但还有一类失败是完全无声的——没有错误,没有异常,没有警报触发——因为系统正完全按照设计运行。它只是在处理一个来自 18 个月前的现实快照。

你的 LLM 存在知识截止日期(Knowledge Cutoff)。这个截止日期不仅仅是文档中的一个脚注。它是模型认知的真实情况与实际现实之间日益扩大的鸿沟,而且你每在生产环境中多运行一天旧模型,这种差距就会累积。团队庆祝上线,随后眼睁睁看着用户信任在接下来的六个月里悄然瓦解——世界在前进,而模型却停滞不前。