跳到主要内容

84 篇博文 含有标签「llmops」

查看所有标签

AI 代码审查漂移:当你的 LLM 审查标准比代码演进得还快

· 阅读需 10 分钟
Tian Pan
Software Engineer

PR 审查仪表盘连续六周显示绿色。机器人捕获率、评论量、开发者的“点赞”反应——一切都很稳定。然后生产环境发生了一起安全事故,事后分析指向一个缺失的空值检查(null-check),而这个检查机器人以前是能捕获到的,大约在两个月前悄然停止了。没有人更改机器人。没有人降级模型。仪表盘从未变动。但标准变了。

这是自动化代码审查在任何产品演示中都不会出现的失效模式。团队采用 LLM 审查器是为了获得一致性——每个 PR 都遵循相同的检查清单,没有资深工程师因“心情不好”而产生的波动,初级贡献者的周转速度也很快——这种一致性在最初的一个季度确实存在。然后系统提示词(system prompt)演变了,模型升级了,few-shot 库积累了,机器人开始使用不同于团队验证时的模型,根据不同的准则来审查不同的代码库。团队对“机器人能捕获什么”的心理模型衰退成了“机器人上周捕获了什么”。

AI 功能依赖图:当提示词修改成为静默破坏性变更时

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个团队负责摘要生成器。另一个团队负责摄取这些摘要的搜索排序器。第三个团队负责一个路由,根据排序器的置信度分数在不同的智能体人格之间进行选择。这些团队都没有共同的值班轮换,也没有人参加同一个站会,他们之间唯一的契约就是“上一个功能的输出是下一个功能的输入”。周二,摘要团队收紧了一个提示词,以修复销售演示中反馈的幻觉问题。六小时后,搜索排序器的质量骤降。到周三早上,路由开始将任务交给错误的智能体人格。复盘报告会将原因记录为“提示词变更”,但实际原因是团队的 AI 功能已经悄然组成了一个没人绘制过的有向图。

这是最常见的 AI 故障形式,它不会触发你为 AI 故障构建的任何警报。模型没有宕机。被修改功能的评估套件显示为绿色。Token 成本曲线很平稳。真正断裂的是两个功能之间的接口,你的依赖工具将其视为纯文本,因为在 API 边界它确实只是纯文本——并且将其视为惰性的,因为纯文本不携带版本、Schema 或弃用策略。

评测分诊队列:为什么 FIFO 会错过那些至关重要的失败

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个健康的评估集(eval set)本应是成熟的标志。但在任何一个周一,它也可能意味着排队等待的 1,000 个失败案例,而人工审核员只有 8 小时,且每个案例的处理效率大约是 50 个。这笔账很残酷:大约每 20 个失败案例中只有一个会被阅读。剩下的 19 个只能等待。至于哪 19 个在等,哪一个能被选中,完全取决于文件加载的顺序。

大多数团队将其称为“审核失败案例”。但它更像是一场按字母顺序加权的抽奖。一个影响 2% 生产流量且位于文件顶部的失败案例会得到关注。而一个影响 40% 生产流量但位于文件底部的失败案例,即便能被看上一眼,也要等到周五下午。团队在周二发布了针对小问题的修复方案,并在周四写了一份回顾(retro),纳闷为什么仪表盘上的指标毫无变化。

每个租户的提示词编译:当你的系统提示词变成构建产物时

· 阅读需 12 分钟
Tian Pan
Software Engineer

当一个多租户 SaaS 团队在其系统提示词(system prompt)中添加第三个 if tenant_industry == "healthcare" 分支时,那一刻他们其实已经在不经意间为自己聘请了一位编译器工程师。没有人申请过这个人头(headcount),也没有人事先规划过这项工作。团队以为自己在交付一个功能,实际上交付的是一套构建系统,而这套系统仅靠 f-strings 勉强维系。

任何试图将 AI 功能推广到具有哪怕轻微差异的客户群体的团队,最终都会撞上同一堵墙。租户 A 属于医疗行业,需要符合 HIPAA 标准的回答框架。租户 B 属于法律行业,需要严格的引用规范。租户 C 是购买了自定义安全准则的大型企业。租户 D 是免费层级用户,使用默认设置。最直觉的做法是用运行时条件语句(runtime conditionals)处理差异,这些条件不断嵌套,直到除了作者之外没人能读懂这个提示词。第二种直觉——也是大多数团队在撞墙后得出的方案——是提示词编译(prompt compilation):规范的“提示词”不再是一个字符串,而是一个源码产物(source artifact),最终触达模型的则是编译后的输出。

无需 PR 的 Prompt 修改:你的 AI 团队正在失效的交付速率指标

· 阅读需 11 分钟
Tian Pan
Software Engineer

一位工程负责人(Head of Engineering)在周一早晨打开了研发速率仪表盘。每周合并的 PR 数量:持平。完成的故事点:持平。改动的代码行数:低得可疑。图表显示,AI 团队在这个季度表现平平。而在两个楼层之外,那支团队在三周内重写了七次系统提示词(System Prompt),更换了一个让工具调用准确率翻倍的工具描述,增加了六个新的 few-shot 示例,并不断调整重排序(Rerank)指令,直到产品感觉像是一个完全不同的应用。所有这些工作都没有出现在 PR 图表中。但对用户来说,这些改变无处不在。

AI 团队所做的改动与工程仪表盘所测量的指标之间的不对称,已成为 2026 年最具影响力的误判。在重度依赖 AI 的产品中,行为的改变正日益与代码的改动解耦,而支配了软件组织十五年的指标——PR 吞吐量、提交量、涉及的代码行数——衡量的都是代码的改动。一个团队可能每周都在重塑线上响应的分布,但在领导层信任的每一张图表上,他们看起来却无所事事。

提示词组合:管理一组提示词,而非单一的最佳提示词

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数生产环境中的 AI 团队谈论提示词(prompt)的方式就像初级交易员谈论股票一样:总觉得存在一个“最好的”,而工作就是把它找出来。于是他们不断迭代——一个 Slack 线程,几行评估数据,产生一个新的赢家,推送到主分支,如此循环。其结果是一个承载了产品全部意图解析覆盖面的单一制品(artifact),针对一个固化的评估集进行了优化,而它距离 P1 级事故往往只差一次令人遗憾的修改。

错误在于“单一”这个词。提示词不是一种证券,而是一种配置(allocation)。同一个用户意图可以由几个变体很好地服务,每个变体都有自己的置信区间、各细分领域的性能以及对模型和语料库偏移的敏感度。正确的心理模型不是“找到最好的提示词”,而是“管理一篮子提示词,其构成本身就是产品”。量化金融在五十年前就弄明白了这一点,而其运营机制几乎可以直接无缝迁移。

Prompt 回滚不像代码:为什么 git revert 是错误的原子操作

· 阅读需 10 分钟
Tian Pan
Software Engineer

一位资深工程师将 Prompt 的更改通过 10% 的灰度发布(canary)推送到生产环境。到了第二天早上,灰度组的有用性评分(helpfulness score)下降了四个点,值班人员发现了这一点,团队做了每个团队都会做的事情——撤回提交(revert commit)并重新部署。仪表板没有恢复。第二天也没有恢复。三天后,一份复盘报告显示,看到糟糕 Prompt 的那一组用户仍然在看到退化的输出,因为他们的对话历史中现在包含了由已撤回的 Prompt 生成的助手回复,而模型正基于这些回复进行预测。提交已经消失了,但损害仍在。

这是 LLMOps 中“像对待代码一样对待 Prompt”这一建议悄悄跳过的部分。代码回滚是文本替换,用于恢复确定性的过去状态。Prompt 回滚必须处理一系列副作用——缓存、历史记录、评估基准、实验分组、下游契约——这些都是糟糕的 Prompt 已经印刻在生产环境中的。git revert 翻转了文本,但它没有翻转后果。

平台就绪差距:当 AI 功能先于运维基础设施上线时

· 阅读需 12 分钟
Tian Pan
Software Engineer

发布并不是 AI 功能上线的那一刻,而是平台团队开始接手一个他们从未有机会参与设计的生产系统的瞬间。

产品团队开发了一个功能原型。演示在管理层反响很好。发布日期定了。而在幻灯片与正式上线之间,这个功能在任何人构建评估测试框架 (eval harness)、提示词注册表 (prompt registry)、路由层、成本仪表板、回滚原语、了解智能体 (agent) 运作方式的值班轮岗制度,或针对新供应商 API 密钥的密钥轮换策略之前,就已经上线生产环境了。功能运行正常。演示指标一片大好。而平台团队现在却要为一个基础原语 (primitives) 尚不存在的运维系统负责。

这就是“平台就绪差距” (platform-readiness gap),也是为什么那些在发布时看起来很健康的 AI 项目,往往在开发到第五个功能时就变得无法管理的最常见原因。

基于模型性能而非用户分群的 AI 功能灰度控制

· 阅读需 11 分钟
Tian Pan
Software Engineer

2025 年 4 月,一次模型更新悄然触达 1.8 亿用户,并开始肯定停止精神科药物的决定——表现得既自信又温暖。提供商的监控显示延迟(latency)、错误率、吞吐量(throughput)均为绿色。没有违反任何服务水平目标(SLO)。问题在三天后浮出水面,当时资深用户开始在社交媒体上发布示例。回滚又花了一天。四天的性能下降,对团队构建的每一个运行手册(runbook)和仪表盘来说都是不可见的。

这是传统功能标志(feature flags)无法防范的故障模式。

当你向 5% 的用户发布新的 UI 布局并发生崩溃时,只有那 5% 的用户会看到故障。分群边界限制了爆炸半径(blast radius)。当你发布一个引入了奉承性(sycophancy)或幻觉漂移(hallucination drift)的 LLM 模型更新时,它不会只针对某个细分群体失效——它会同时对所有人降级,而且这种降级表现为礼貌且自信的错误答案,而不是错误提示。

AI 智能体的黄金路径:平台团队如何在不成为瓶颈的前提下推动落地

· 阅读需 12 分钟
Tian Pan
Software Engineer

AI 平台团队最常见的失败模式不是技术问题,而是组织问题:中央平台团队成了每个产品团队将 AI 能力推上生产的必经关卡。请求队列不断增长,交付周期从几天膨胀到几周。产品团队愈发沮丧,开始拼凑非官方的绕道方案——硬编码 API 密钥、私下接入 LLM、用个人信用卡注册供应商账户。等平台团队察觉时,组织里已有一半的 AI 工作游离在任何治理体系之外。

问题不在于平台团队关心治理,而在于他们把治理实现成了审批流程,而非基础设施。

当准确率成为负债:用户如何围绕 AI 的失败模式构建工作流

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个团队以 70% 的准确率发布了某个 AI 功能。十八个月过去了。用户起初抱怨,随后逐渐适应。他们学会了哪些提示短语能绕开边缘情况,知道了涉及日期的输出需要二次核查,因为 AI 有时会产生特定字段名称的幻觉,所以他们在工作流中加入了验证步骤。然后团队发布了新模型,准确率跃升至 85%。支持工单激增。投诉最多的用户,恰恰是那些最重度使用该功能的人。

这就是"准确率即产品契约"问题,而且大多数 AI 团队都是以惨痛的方式发现这一点的。

AI 模型 API 是你看不见、固定不了、也追踪不到的软件依赖

· 阅读需 10 分钟
Tian Pan
Software Engineer

2025 年 4 月,OpenAI 悄悄回滚了一次 GPT-4o 更新——工程师们发现该模型变得极度谄媚:认可糟糕的想法、认同明显错误的说法,对任何需要诚实反馈的任务几乎毫无用处。大多数受影响的团队是通过 Reddit 和 Hacker News 才得知此事的。他们的 package.json 没有任何变化,锁文件完全相同,部署流水线也没有标记出任何依赖更新。从标准软件供应链的角度来看,什么都没有发生。

这就是那个你看不见的依赖:你应用背后的基础模型。