跳到主要内容

5 篇博文 含有标签「feature-flags」

查看所有标签

你的 AI 功能灰度发布正沿着错误的轴线进行

· 阅读需 13 分钟
Tian Pan
Software Engineer

我上个月交流过的一个团队,在四个星期内将一项新的 Agent 功能从 1% 的用户灰度推广到了 50%。聚合质量指标保持在噪声范围内,延迟也保持在 SLA 之内。他们正在准备 100% 全量发布的备忘录时,支持队列突然“起火”了——一个拥有六工具研究工作流的客户,自 10% 灰度阶段以来就一直在接收静默损坏的输出。困难查询(Hard queries)一直存在,均匀地分布在每个分群中,被平均化到了底噪中。直到一个高频用户在大规模使用中撞上了这些问题,大家才发现。

这不是监控失败,而是灰度发布维度的失败。功能标志工具(Feature flag tooling)——包括 LaunchDarkly、Flagsmith、Unleash 和 Cloudflare-Flagship 等所有此类工具——都假设爆炸半径(blast radius)随接触到的人数成比例扩大。对于确定性软件,这在很大程度上是正确的:一个空指针异常(NullPointerException)要么影响所有人,要么谁都不影响,将其暴露给 1% 的用户会将可见的爆炸范围限制在 1%。但对于 AI 功能,爆炸半径并不在“人”这个维度上扩展,而是在“输入”维度上扩展。而几乎没有人会在输入维度上进行灰度发布。

你在无意中为 Prompt 构建了一个功能开关系统 —— 但却缺少治理

· 阅读需 12 分钟
Tian Pan
Software Engineer

打开你团队用来发布提示词(prompt)变更的配置仓库。看看最近的 30 个 commit。其中有多少个经过了代码审查(code review)?有多少个在 CI 中设置了评估门禁(eval gate)?有多少个你能——肯定地——归因为对看到它们的用户的生产环境行为产生了可衡量的变化?如果你的答案是“绝大多数”,那你是个例外。对于其他人来说,这些 commit 此刻正在生产环境中运行,而读取它们的系统所做的事情与特性标志(feature-flag)服务完全一致:热加载一个值,分发给用户,改变产品行为。区别在于,你的特性标志服务拥有审计日志、曝光追踪、熔断开关(kill switches)以及针对特定分群的定向投放。而你的提示词发布流水线只有 git push

这并非隐喻。这是对你团队正在运行的生产系统的准确描述。提示词配置仓库、你的 worker 轮询的 S3 存储桶、数据库中的 “prompts” 集合、你的应用在启动时获取的 LangSmith/PromptLayer/Braintrust 资产——这些全都是特性标志服务。它们具有相同的运行时形态:一个存在于二进制文件之外的值,二进制文件在热路径(hot path)上读取它,更改该值即可在无需部署的情况下改变真实用户的行为。唯一缺少的,是你的 SRE 团队在批准“真正的”特性标志服务之前所要求的所有控制措施。

为什么 AI 功能开关不同于普通功能开关

· 阅读需 12 分钟
Tian Pan
Software Engineer

金丝雀部署完美收工:错误率纹丝不动,延迟没有飙升,监控大盘一片绿色。你将新模型全量推送给所有流量——三周后,客服队列里挤满了用户投诉,说 AI "感觉不对劲"、"不再有用了"。

这正是将传统功能开关机制套用到 AI 系统上的核心问题。一个模型可以在"没有崩溃"的情况下悄悄退化:它照常返回 200 状态码,以正常速度生成 token,输出的文本也能通过表面校验——但与此同时,它的幻觉频率在悄悄上升,回答越来越简短或回避,或者在你的用户真正依赖的细微推理模式上悄然退步。你多年来一直监控的遥测指标,从来就不是为了捕捉这类故障而设计的。

为什么渐进式发布对 AI 功能不起作用(以及该怎么做)

· 阅读需 11 分钟
Tian Pan
Software Engineer

灰度发布(Canary deployments)之所以有效,是因为 Bug 是二元的。代码要么崩溃,要么正常运行。你将 1% 的流量引导到新版本,观察 30 分钟的错误率和延迟,然后决定回滚或继续。系统会自动评分。一个糟糕的发布会大声宣告自己的存在。

AI 功能并非如此。一个开始生成微妙错误建议、过时推荐或听起来煞有介事的废话的语言模型,其 5xx 错误率为零。延迟保持在 SLO 范围内。灰度发布看起来是绿色的,而产品却在无声无息地辜负用户。

这不是工具问题。这是概念上的错位。渐进式发布背后的整个思维模型——确定性代码、自我评分系统、二元通过/失败——在你引入一个其正确性无法通过观察请求本身来衡量的组件时,就会崩溃。

AI 功能标记:LLM 驱动功能的渐进式发布

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队通过惨痛的教训发现,发布一项新的 LLM 功能与发布一个新的 UI 按钮完全不同。一个在离线评估中表现出色的 Prompt 变更发布到生产环境后,可能会悄无声息地导致 30% 用户的体验质量下降——而你的仪表盘却全程显示 HTTP 200。等你察觉时,成千上万的用户已经遭遇了糟糕的体验,而你却没有快速恢复到正常状态的路径。

防止传统软件故障的渐进式发布工具包——特性标志(feature flags)、金丝雀发布(canary releases)、A/B 测试——同样适用于 LLM 驱动的功能。但其机制差异之大,以至于直接复制粘贴现有的部署手册会让你陷入麻烦。非确定性、语义质量指标以及 LLM 变更的多层性质(模型、Prompt、参数、检索策略)都制造了团队通常会低估的棘手问题。