跳到主要内容

89 篇博文 含有标签「llm-ops」

查看所有标签

拒绝“大声失败”的 Agent:过度补偿的回退机制如何掩盖生产环境的质量回退

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的状态页显示为绿色。你的错误率为零。你的 p95 延迟看起来比上周略好。而在上周二,eval-on-traffic 指标在悄无声息中下降了四个点,整整九天都没人发现原因。因为当质量回退最终突破告警阈值时,已经有四个交织在一起的根因叠加在一起,团队已经无法分辨是哪一个最先引发了下滑。

这是 2026 年成熟智能体系统的主要故障模式,它不是任何单一组件的 bug。它是团队刻意构建的防御栈——那些出于好心、一个接一个添加的安全网——所产生的累积效应。主模型返回了垃圾内容;重试成功了。重试失败了;更便宜的回退(fallback)模型给出了答案。回退模型的输出格式错误;包装器(wrapper)将其重写为看起来合理的形状。包装器记录了一个软告警(soft warning)。没有人针对软告警设置告警。用户收到一个看似正确、交付流畅,但实际上比系统设计初衷要差的答案。

鲁棒层起作用了。质量表现却崩塌了。而告警机制是为鲁棒层存在之前的世界构建的。

无故障停机情况下的面向客户 AI 质量退化复盘指南

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的状态页是一片绿色。你的错误率为零。你的运行时间仪表盘连续第七个月显示为 100%。然而,在周二上午 9:14,你的客户团队给你转来了一条来自一家财富 500 强客户的消息,上面写着:“我们的团队注意到这周助手的表现变差了。你能告诉我们发生了什么变化吗?”午饭前,你又收到了 12 条类似的反馈。现有的事故沟通手册(incident-comms playbook)无法回答其中任何一个问题,因为那套手册是为停机事故准备的,而现在没有任何东西崩溃。

这就是面向客户的 AI 复盘难题,也是我在将 LLM 功能交付给企业合约的团队中看到的最普遍的差距。可靠性的维度已经从“系统是否在线”转向了“系统是否和上周一样好”,而几乎没有任何沟通基础设施跟上了这一变化。状态页上没有相应的展示块。严重性等级标准(Severity rubrics)没有对其进行评分。支持服务的回复模版默认为“我们发现了一个问题并已解决”,这取决于客户当天的情绪,听起来要么是敷衍,要么是危言耸听。

免费层级流量才是你真实的评估集

· 阅读需 11 分钟
Tian Pan
Software Engineer

针对付费用户群追踪数据进行模型优化的团队,其实是在一个“简单分布”上给自己打分。付费用户已经形成了一套工作流。他们之所以选择这款产品,是因为产品中的某些特质证明了刷信用卡付费的合理性,这意味着当他们进入评估集(eval set)时,已经学会了哪些提示词(prompts)有效,哪些功能给力,以及哪些“坑”不该踩。而免费层用户完全不是这样。他们是匿名的、探索性的,通常带有对抗性,且往往是非英语母语者,正在用第二语言对产品进行压力测试,他们触发了评估集从未涵盖的长尾失败模式。

这种不对称性正悄无声息地吞噬着每一个免费增值(freemium)AI 产品的转化漏斗。团队针对主要从付费追踪数据中提取的精选样本对模型进行评分。而免费层的那些“古怪”追踪数据——那些没有模板、用户正真诚地试图搞清楚产品能做什么的数据——从未被标注,从未进行回归测试,也从未为下一次提示词修改提供参考。模型在付费分布上变得越来越好,但在决定免费用户是否升级的分布上却慢慢变差。

模型迁移的双重账单:被忽视的评测重锚税

· 阅读需 11 分钟
Tian Pan
Software Engineer

每次模型升级都会被当作一种简单的“替换”推销给团队:一行配置更改、在延迟、成本或质量上可衡量的提升,以及几天用于吸收新模型怪癖的提示词微调。采购方案展示了每 token 的差值,工程工单列出了发布阶段,FP&A 团队预记了季度节省。接着,评估分值出炉,却没人认得出来。质量在理应提升的地方毫无波动。曾经达成一致的两个评分员现在分歧达 10 分之多。快照套件显示为红色,但差异看起来只是措辞调整。站会上有人提出了那个本应从迁移计划第一天就该出现的问题:模型到底是在针对什么评分?

这是第二张账单 —— 评估重锚税 (eval re-anchoring tax) —— 且它往往比第一张更昂贵。人工标注的参考分数锚定在旧模型的输出分布上。作为评委的 LLM 评分器针对旧模型的失败模式进行了校准。快照固定装置捕捉的是旧模型的措辞。团队对“优质输出”的直觉是基于旧模型的风格特征训练出来的。在模型替换中,这些都无法完好无损地保留下来。

按客户定制的提示词分支:为什么你的下一次模型迁移是 47 次迁移

· 阅读需 13 分钟
Tian Pan
Software Engineer

我上个月交流过的一位 AI 初创公司 CTO 打开她的笔记本电脑,给我看了一个数字:47。那是目前在生产环境中运行的独立系统提示词(System Prompt)的数量,每个企业客户或每个逻辑分组各占一个。基础提示词在第四个月为一家需要更温和拒绝态度的医疗客户派生(Fork)了一次。然后为一家需要引用的法律客户又派生了一次。接着是为一家金融服务客户派生的,因为他们的合规团队有一份违禁词清单。当时,这些看起来都不是什么大事。每一个都是独立批准的小需求,让大客户经理团队能够顺利签下订单。

两年后,模型提供商宣布了她那些针对旧版本调优的提示词的切换截止日期。她的工程团队直觉反应是对新模型运行评估套件(Eval Suite)。评估套件仅针对基础提示词。基础提示词仍在为 0 号客户提供服务,该客户没有任何覆盖配置,且约占收入的 9%。

Prompt 的 Pre-Commit Hooks:LLM 团队一直缺失的内环工具链

· 阅读需 11 分钟
Tian Pan
Software Engineer

打开任何生产环境中的 LLM 代码库里的提示词文件,你会发现评审者的目光变得呆滞。这个 diff 是 15 行自然语言,其中包含一个微调过的 few-shot 示例,一条重新表述的指令,以及编辑器留下的一个多余的尾部空格。没有针对它的语法检查,没有 Linter 抱怨相互矛盾的指令,没有扫描器注意到 few-shot 示例包含上周二支持日志中真实客户的电子邮件地址,也没有冒烟评估(smoke eval)来确认这一更改不会导致系统实际提供的提示词延迟飙升。评审者凭感觉批准——就像 2008 年团队批准 HTML 模板的 diff 一样——然后在 6 小时后,生产遥测系统捕获到了回归。

围绕代码的内环工具(inner-loop tooling)已经成熟了 20 年。围绕提示词的内环工具则介于“我们在 git 中有一个 .md 文件”和“我们在入职后运行过一次 promptfoo”之间。这种差距正在扩大,因为在许多系统中,提示词现在是杠杆率更高的修改:一个 30 行的系统提示词更改比 1000 行的服务重写更能改变行为,而它的评审过程却像处理一份 Word 文档。

季度模型迁移:将其变成日程安排,而非消防演习

· 阅读需 13 分钟
Tian Pan
Software Engineer

弃用通知邮件在一个周二的下午寄达。你的计费流水线赖以生存了 14 个月的模型现在进入了 60 天的倒计时。提示词是由一名在 3 月离职的工程师调优的。评估套件自发布以来从未重新设定基准。客户成功团队正在询问为什么两个企业账户的“AI 感觉不一样了”。没有人把这件事列入路线图,也没有人能清爽地接手,因为在你组织的心理模型中,这是一个一次性项目 —— 尽管这已经是今年的第四次了。

每个在生产环境中运行 AI 功能的团队在 18 个月内都会得出同样的感悟:基础模型提供商正以团队未曾预料的频率弃用模型,而团队的迁移应对措施始终是由于收到通知邮件而触发的被动仓促应对。解决方法不是为下一次迁移准备一个更好的操作手册 —— 这类手册已经很多了,你的团队可能也写过一个。解决方法是停止将迁移视为一个项目,而是将其视为一个经常性的运营原语。把它排进日历。

没人构建的“从支持工单到评估案例”流水线

· 阅读需 11 分钟
Tian Pan
Software Engineer

每个运行 AI 功能的团队其实都正坐拥着他们所能拥有的最高信号评估数据集,但他们却没在利用它。这个数据集就在 Zendesk、Intercom、Freshdesk、Help Scout,或者任何支持团队工作的队列中。在那里提交的工单描述了模型在付费客户面前表现出的确切失败模式——语气错误、工具调用错误、违反政策、幻觉出的功能、上下文泄露。每一个都是由经历过失败的用户手写的、带有标注的负面案例,通常还免费附带了复现步骤和情绪标注。

与此同时,评估套件(Eval Suite)则存在于 Git 中。它是由半年前设置它的工程师手写的,从那时起可能只累积了大约五十个案例。“评估套件覆盖的内容”与“生产环境中实际出现的问题”之间的交集就像一张韦恩图,重叠的部分只有细细的一条,而两边则是互不相干的巨大圆圈。

随时间波动的质量偏移:为什么你的 AI 功能在东部时间上午 10 点表现不同

· 阅读需 11 分钟
Tian Pan
Software Engineer

太平洋时间凌晨 2 点,你的评估套件(eval suite)在平静的提供商环境下全绿通过。上线前一晚 11 点,QA 进行了冒烟测试。功能正式发布。到了周二上午 10 点(东部时间),你的 p95 延迟比你签字认可的仪表盘高出了 40%,你的智能体(agent)在一个包含六步的计划中丢掉了最后一个工具调用,而你的支持信箱塞满了听起来如出一辙的工单:“今天早上 AI 表现很奇怪。” 谁都没错。模型也没错。错的是评估集 —— 它从未见过饱和的提供商环境,因此对于当队列深度翻倍、截止时间预算(deadline budget)崩溃时功能会如何表现,它无法给出任何参考建议。

提供商负载不仅仅是一个伴随质量副作用的延迟问题。它是你的模型和智能体循环接收到的输入的一种分布偏移(distribution shift),而你所信任的每一个质量信号,都是建立在这个分布中错误的那一截之上的。解决办法不是换一个更快的区域或更好的模型。解决办法是停止假装你的评估框架是在与你用户相同的世界中进行采样。

标注偏移:评估集如何逐渐无法衡量你交付的产品

· 阅读需 11 分钟
Tian Pan
Software Engineer

上个季度评分 92% 的评估集(eval set)现在评分达到了 94%,团队称之为进步。事实并非如此。该评估集中的标签是根据标注员脑海中早已模糊的准则(rubric)编写的。模型评分所针对的产品已经发生了变化。标准已经发生了变化。标注员自身的校准(calibration)也发生了变化。表面上 2% 的提升,实则是静态产物与动态产品之间无声的差距,且只要团队不更新,这种差距每周都会扩大。

标注漂移(Annotation drift)是成熟 LLM 评估方案中一种隐蔽的失效模式。它不会表现为回归(regression)——回归是简单的情况,因为数值会下降,从而触发人员调查。它表现为一个持续显示绿色的数字,而其原本衡量的内容在底层已经腐烂。已经建立了评估集、编写了准则并招募了标注员的团队面临的风险最大,因为他们信任自己构建的系统,从而停止了对基础的审计。

非对称评估经济学:为什么一个测试用例的成本比它测试的功能还要高

· 阅读需 11 分钟
Tian Pan
Software Engineer

这是一个尴尬的事实,大多数 AI 团队在发现时往往已经晚了半年:一个精心设计的评估(eval)用例所耗费的工程精力通常比它要测试的功能本身还要多。修改一次提示词(prompt)只需要一个下午。而让你确信这次修改没有破坏原有功能的评估用例,则需要领域专家进行为期两天的标注,一个与裁判提示词(judge prompt)的校准循环,以及一场关于“正确”在当前用户界面下究竟意味着什么的讨论。功能可以在一个 Sprint 内交付,而让你能够安全交付后续十个功能的评估体系则需要一个季度才能成熟。

这种不对称性并非缺陷。它是评估工作的结构性形态。标注、边缘情况的策划、裁判校准和评分标准设计都是前置的固定成本,它们不随你交付功能的多少而扩展,而是随你想要验证的不同行为(behaviors)数量而扩展。与此同时,功能开发端不断产生看似廉价的边际输出:“又一次提示词迭代”、“为智能体增加了一个工具”、“更换模型”。每一个改动看起来都很微小。但每一个改动都在无声无息地增加评估集必须覆盖的范围。

每个客户的成本集中度:为什么 AI 成本仪表盘隐藏了幂律分布

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的 AI 功能成本是一个分布,而不是一个数字。挂在研发财务作战室墙上的仪表盘显示,上个月支出了 187,000 美元,并按功能、模型和区域进行了细分。然而,这些视图都无法回答 CFO 真正想问的问题:“谁每月付给我们 40 美元,却消耗了我们 4,000 美元的成本?”当你按 customer_id 而不是功能进行排序时,原本平稳的柱状图会变成一条曲棍球棒曲线,而那些针对平均用户进行设计的团队会发现,他们在一个季度里一直在默默地为长尾头部的用户提供补贴。

这种模式是如此一致,以至于完全可以被称为定律。在生产环境的 LLM 工作负载中,前 1% 的用户通常驱动了 30–50% 的 token 支出,而在排名前 0.1% 和 0.01% 的用户中也会出现类似的分布形状。这并非某个产品的特例 —— 当你发布一个边际成本可变且定价统一的功能时,这必然会发生。平均用户的利润率看起来不错,中位数用户的利润率看起来非常好。但重尾部分的积分才是季度预算的真正去向。