把模型从小换大,幻觉率也许降了 3 个百分点,单次生成成本却可能涨到原来的两三倍,延迟也跟着上去。传统 UX 或转化实验习惯盯住一个数,这里至少有三个数在朝不同方向走。
更麻烦的是,生成模型每次的回答都不完全一样。它还可能慢慢变差,或者风格悄悄改变,这叫“漂移”(drift)。它对用户行为的影响又很细微。只看数字,会漏掉回答质量;只靠人工打分,又看不到用户怎么做。
下面这套方法,适用于修改提示词、换模型版本、调整安全层和改动生成式界面。它始终回答同一个问题:一条看起来更好的回答,到底有没有让产品变得更好。
生成式实验比的是两个分布
普通功能的实验有个默认前提:同样的输入,得到同样的输出。两个版本之间的差别,就是改动本身的效果。生成式产品打破了这个前提。
原因在于模型生成文字的方式。它每写一个词,都是按概率“抽签”。温度(temperature)这个参数越高,抽签越随机,回答越发散。同一个提示词跑两次,结果可能完全不同。
所以“这个版本质量更高”,意思其实是:它的一整批回答整体更好。评估时,每个提示词要多跑几次。比如 200 个提示词各跑 5 次,共 1000 条回答,看整体质量,而不是只看一条。否则你比的可能只是两次抽签的运气。
把温度调低,回答更稳定,评估也更稳。但多样性也会被削掉,对需要创意的任务反而吃亏。评估时压低随机性,上线时按任务设温度,这是两回事,别混在一起。
固定随机种子也是同样的道理。离线回归测试时,固定种子能锁住变量,方便对比(能不能完全复现,还要看模型版本、推理后端和采样实现)。但它也掩盖了线上真实的波动。所以线上评估反而要放开,去测真实的波动有多大。
回答的波动大小本身也该当成指标来盯。平均分不错、但波动很大的版本,意味着用户时不时会碰上一个很差的回答。这种不稳定对信任的伤害,往往比平均分低一点更严重。
举个例子:7 分制下,版本 A 平均 5.2 分、标准差 0.8;版本 B 平均 5.4 分、标准差 1.6。按近似正态分布估算,A 约有 7% 的回答低于 4 分,B 却接近 19%。
B 的平均分更高,用户碰上差回答的概率却是 A 的近三倍。所以“平均有多好”和“最差能有多差”要分开报。
好坏也没有统一的尺子,因为质量本身带主观性。正确、语气、创意和实用,各占多大分量,要看用户想要什么。同一条回答,对一个人恰到好处,对另一个人就是啰嗦。
再加上用户的信任要几周后才体现在留存上,而一次提高了质量的升级,还可能同时让模型更爱编造内容(即“幻觉”)。所以 A/B 测试要同时评估回答质量、用户感受、信任、留存和每次生成的成本。
传统以转化为中心的实验框架在这里不够用。还得补上几样东西:成对排序、评分细则、多指标看板,以及有步骤的模型评估流程。
变更分四类,评估过三关
生成式 AI 的 A/B 测试通常分四类:
- 提示词实验:改语气、长度、系统指令、背景信息、上下文长度,或者检索资料时用的提示词。适合产品早期优化,改起来便宜,反馈也快。
- 模型版本实验:升级到更大的 LLM、换模型架构、用自有数据微调过的模型对比原始模型,以及调整安全层。这类风险最高,护栏要最严。
- 回答质量实验:评估有针对性的改进,比如推理更强、编造更少、事实更准、格式和摘要更好。
- AI 驱动的界面实验:针对由生成内容驱动的体验,比如自动生成的新手引导、会变化的界面、个性化流程和对话式界面。这里最关键的是用户行为。
不管哪一类,候选版本都要过三关。
- 离线评估:用自动打分、人工构造的测试题和公开基准,在没有人参与的情况下,先筛掉明显不合格的候选。常见的自动指标有 BLEU、ROUGE、困惑度和向量相似度,它们大多是看回答和参考答案在字面或语义上有多像。
- 人工评估:用评分细则、两两比较、安全检查(有没有有害内容、风险、是否符合规范)和任务是否完成来打分。
- 在线 A/B 测试:最后才在真实用户身上看行为、留存、对质量的感受,以及成本和速度。
三关越往后越贵。候选在第一关被淘汰,成本只是几小时算力;拖到线上才发现问题,代价是真实用户的一段坏体验。按这三步走,上线后翻车的概率会小很多。
四组指标各管一件事,安全握否决权
生成式 AI 的评估必须是多指标决策,任何单一数字都不足以判定胜负。
指标分四组,各管一件事:
- 质量指标:回答对不对、具体不具体、切不切题、前后通不通、语气稳不稳、事实准不准、编造多不多。其中两两比较通常比打分更稳定。
- 行为指标:回答对用户的实际影响,比如激活率、任务完成率、重复使用、每次使用的深度。还有能反映信任的信号:用户修改回答、拒绝回答、或者触发兜底回答的次数。
- 效率指标:每次生成的成本、响应速度、算力占用和处理量。它们直接关系到产品赚不赚钱,要单独算账。
- 安全指标:用户能看到的回答里,有害内容占多少、对危险请求怎么回应、会不会跑到敏感话题上、违反规则的频率。
安全指标最容易只测一半:只在正常流量上统计有害内容和违规率。可真正出事的,往往不是普通用户,而是故意想绕过防线的人。一次升级可能在普通请求上更安全,却更容易被精心设计的“越狱”提示词攻破。这一面在常规 A/B 流量里几乎看不到,所以要专门准备一批攻击性样本。
样本包括红队构造的诱导性提示词、已知的越狱模板、把有害意图包进无害外壳的请求,在这批样本上单独比较新旧变体。
这类测试抓的是尾部风险,一次事故就能抵消所有平均收益。一个创造力明显更强、却更容易被诱导说出不该说的话的新模型,主观质量分再好也不该上,正确做法是暂缓升级、先补防护。安全不参与和质量的加权平均,它单独握有否决权。
否决条件最好事先写成数字:对抗样本集上的违规率高于旧变体,或者绝对值超过上线前定的上限(比如 0.5%,按业务风险设定),两条满足任意一条就不放量。
裁判模型能用,前提是先量出它的偏差
人工评估准,但慢又贵,跑不动每天几千条输出的回归。于是越来越多团队用一个强模型当裁判,给另一批输出打分或做成对判优,把评估从几天压到几分钟。前提是你知道它会怎么骗你。
这方面有研究可查。Zheng 等人在 NeurIPS 2023 发表的《Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena》发现,强模型当裁判时,和人类判断的一致程度可以达到人与人之间的水平。但它有三种稳定的偏差:
- 位置偏差:偏向先出现的答案。
- 长度偏差:偏向更长的答案,哪怕信息并没有更多。
- 自我偏好:偏向同一家族模型写的答案。
这些偏差有固定方向,会一直把结论往同一边带。裁判的问题不在于不够聪明,而在于它有固定的倾向。
让裁判变可信,要做三件事。第一,两两比较时把两个答案的顺序各跑一遍,只保留两次判断一致的结果,这样位置偏差就抵消了。第二,给裁判一份明确的评分细则,让它按具体维度打分,并写明“长不加分”。笼统地问“哪个更好”,只会放大长度偏差。第三,也是最关键的:拿一批人工打过分的样本来校准裁判,看它和人的判断有多吻合,够高才放进大规模自动评估。
一个可用的门槛:抽 300 条人工标注样本。如果裁判和人的一致率,比人与人之间的一致率低 5 个百分点以上(可按任务调整),就先别用它。上线后也要定期抽一小批让人复核,看一致率有没有下滑。裁判和人意见不合的地方,往往正是评分标准没写清楚的地方。这时该改的是标准,不是数据。
人工评分先算一致性
人工评分最大的风险是不稳定:同一条输出,不同标注者给的分可能差两档,同一个人隔天再看也会变。不先把这份不一致量出来,你拿去比较两个变体的“质量提升”可能大半是标注噪声。
所以正式打分前,先算一算打分的人之间有多一致。要用 Cohen's kappa 或 Krippendorff's alpha 这类指标,它们会扣掉“碰巧一样”的部分。不要用简单的百分比。
为什么?当大多数样本都属于同一类时,百分比会虚高。假如 90% 的样本都该标“合格”,两个人闭着眼都标“合格”,也有九成一致。常用的参照是 Landis 和 Koch 1977 年给出的分档:kappa 在 0.61 到 0.80 之间,算“高度一致”。
低于 0.6,通常说明两种情况之一。一是细则太模糊,大家各按各的理解打分。二是这个维度本来就很主观,不该硬压成一个分数。第一种的解法是把细则写细、给出边界样例、先练一轮再重新打分。第二种的解法是改成两两比较,或者干脆承认这是个人偏好,而不是对错。一致性达标之后,人工打分才能当证据,也才能拿来校准裁判模型。
成对比较的三个陷阱
让人在 1 到 7 之间给一条输出打分,听起来精确,实际很滑:不同人对“5 分”的理解不同,同一个人的标尺还会随看过的样本漂移。把 A、B 并排问“哪个更好”往往稳得多,因为人判断相对好坏远比判断绝对分数可靠。两个都不错的输出可能都打 6 分,成对却能分出高下,所以它特别适合捕捉细微改进。
但它有三个陷阱。第一,它给的是相对排序,两个都很糟的输出也能比出一个“更好”,必须另配一道绝对质量闸门,别把矮子里拔高个当成达标。
第二,穷举成本随候选数平方增长:10 个候选两两比较是 45 对,正反顺序各跑一次是 90 次判断,再乘以 200 个提示词就是 18000 次调用。实际要靠对战式抽样加 Elo 一类的排名算法控制次数,Chatbot Arena 的排行榜就是这么做的。第三是非传递性:A 胜 B、B 胜 C、C 又胜 A 的循环时有发生,维度不止一个时尤其常见,这提醒你所谓“总体更好”可能盖住了几个互相冲突的子维度。
黄金评测集会腐烂,也会被污染
离线评估可不可信,全看黄金评测集(golden set),也就是一套有标准答案的固定测试题。它有两个常被忽略的要求。
一是要像真实流量。既要有大量常见的简单请求,也要覆盖少见、容易出错的边缘情况。如果全是漂亮的样例,每个模型看起来都很行,上线后却被真实的乱七八糟的输入打脸。
二是要有标准答案。每条样本都要有可靠的参考答案,或明确的评判标准。否则就像拿一把没有刻度的尺子去量。
评测集还会随时间过期。产品在变,用户问的东西也在变,一年前的评测集可能已经不反映今天的流量。更麻烦的是“污染”:评测题一旦进了模型的训练数据,分数就会虚高。你以为模型在推理,其实它在背答案。用公开基准评估时,这个风险尤其大。
对策有三条:定期用新的真实样本更新评测集;留一部分从不外泄的私有题目;怀疑被污染时,用模型没见过的新数据复查。一个可执行的节奏是每季度至少换掉两到三成样本(比例按流量变化快慢调整),并保存每个版本的评测集,免得新旧分数混在一起比。
七步流程:越便宜的关越靠前
把上面的原则落成流程,大致七步。顺序本身就是防护:越靠前的步骤越便宜,越能挡住后面昂贵的错误。
- 先把研究问题写成可证伪的假设,例如“升级到模型 B 将减少 20% 幻觉,并提升 10% 任务成功率,且不增加成本”;含糊的目标事后根本没法判定输赢。
- 放任何流量之前先搭好安全防护:安全层、兜底提示词、请求限流和实时监控都要就位,否则一次坏输出会直接打到真实用户身上。
- 做离线评估,用自动质量指标和合成测试集提前剔除明显不合格的候选,把稀缺的人工和线上预算留给真正有戏的变体。
- 进入人工评估,优先成对比较,再配一份 5-7 分的质量评分细则、任务成功标注,以及单独的安全和事实性检查。
- 上线 A/B 测试:流量分配保持稳定(10%-50%),控制提示词缓存,必要时锁定随机种子,新老用户分开统计。
- 综合分析,别只盯一个数。质量变化说明模型是不是更好;行为变化说明用户是不是真的改变了做法;成本决定这次改进能不能长期负担;安全变化有一票否决权。任何一项单独变好,都不足以支撑发布。
- 发布后持续监控两件事:模型本身是否在变,以及用户的提问是否在变。这两者往往比指标下滑更早出现。同时留意一些只在大流量下才冒出来的新问题,以及规模变大后的成本和速度变化。实验期成立的结论,全量后不一定成立。
样本量也省不得。第五步的流量比例,要按“想检测的最小提升”倒推出来,而不是随便定个 10%。比如任务成功率现在是 40%,想检测出 2 个百分点的提升,取常用的 5% 显著性和 80% 功效。近似公式 n ≈ 16 × p(1-p) ÷ δ² 给出每组约 16 × 0.24 ÷ 0.0004 = 9600 人。日活 2 万、实验组分 10% 流量时,每天进组 2000 人,光凑够样本就要将近 5 天。生成式回答本身的波动,还会让这个数更大。
算一笔 token 账:质量涨一档,成本翻几倍
生成成本最容易被一句“差不多”糊弄过去,拆到 token 一级就清楚了。下面是一个示意计算,单价为假设值,仅用来说明结构:输入每百万 token 2 元,输出每百万 token 8 元,输出单价是输入的 4 倍,这在主流计价表里很常见。
旧变体每次请求平均 700 个输入 token、150 个输出 token:700 × 2 ÷ 100 万 + 150 × 8 ÷ 100 万 = 0.0014 + 0.0012 = 0.0026 元。新变体为了提质量,加了更长的系统指令和检索上下文,输入涨到 2400 token、输出涨到 300 token:0.0048 + 0.0024 = 0.0072 元。单次成本约为原来的 2.8 倍,而不是很多人直觉里的“涨三成”。
按每月 1000 万次请求算,旧变体每月约 2.6 万元,新变体约 7.2 万元,差额 4.6 万元。假设一个多留存下来的付费用户每月贡献 30 元毛利,这次升级每月要多留住大约 1530 个付费用户才打平。测试期的小流量会把这笔账摊薄得看不出来;一旦全量,尤其撞上长上下文占比高的客群,成本曲线就贴着最坏情况走。
所以成本要和质量画在同一张图上,看的是成本与质量的曲线,而不是质量提了多少。决策规则可以写死:单位成本涨幅超过事先定的上限(比如 50%,按毛利率设定),就必须用留存或转化的增量证明它划算,证明不了就不上。效率指标要直接挂到产品经济模型上,而不是事后补一句备注。
三个常见场景,和上线后才出现的漂移
这几个场景综合了常见情况,并非某家公司的实测数据。提升摘要质量的一次改版让清晰度评价明显提升,任务完成率也跟着上升:两个指标同向,说明质量改进确实变成了用户侧的结果,不只是评分表上好看。模型升级导致回归的例子正相反:新模型创造力更强,幻觉却增多,用户信任下降,客服工单上升。只看生成质量会得出升级的结论,纳入护栏和支持成本后结论反转,最后的决定是暂缓升级。把新手引导改成 AI 生成之后,激活率明显提升,这类收益通常来自引导更贴合用户的初始意图,而不是模型本身更聪明。
上线后,生成式系统会以两种方式变差,发布当天都看不出来。
一种是模型变了。供应商可能悄悄更新了底层模型,或者你自己换了版本。昨天还稳定的提示词,今天给出的风格甚至质量都不一样了,而你的评分细则还是按旧表现定的。
另一种是用户的输入变了。用户问的东西会随产品和季节变化。模型在旧问题上验证过的优势,不一定适用于新涌进来的常见问题。
实际的做法是保留一条长期运行的自动评估流程。每天从真实流量里抽 200 条左右,用校准过的裁判模型或少量人工抽查打分,盯住质量、编造率和安全指标的走势。预警线要事先定好,比如编造率比上周高出 1 个百分点以上(按产品的容忍度调整)。一旦越线,就查是模型变了还是输入变了。
怎么区分?准备一批固定的提示词。如果这批固定题的分数也掉了,多半是模型变了。如果固定题稳定、只有新样本掉分,多半是输入变了。有些问题只在高并发、长文本或特定用户组合下才会出现,小流量实验根本碰不到,只有这条流程能接住。
小团队真的需要这么重吗
小团队对这套流程意见最大:三关评估、裁判校准、对抗样本,每一项都要人手,一个三五个人的团队根本跑不动,不如凭产品直觉快速迭代。这个意见在两种情况下成立:改动随时能回滚,而且不涉及安全敏感的输出。比如只是调整摘要的语气和长度,轻量的人工抽检加线上行为指标就够了。
一旦改动换了模型版本、碰到用户可见的事实性回答,或者单位成本涨幅超过事先定的上限,这个意见就不成立了,因为出错的代价不再能靠回滚收回。所以投入应该随规模走。初创公司先建轻量的人工评估流程,测试重点放在提示词和 UX;成长型公司完善评分细则和安全流程,搭实验系统,用成本建模指导升级;大型企业建立 AI 治理体系,把安全、合规和可观测性纳入实验,并统一评测数据集。
不论规模,有几种失败几乎都是少了一环:只信离线指标、没有防护就开实验、忽略生成成本差异、把主观任务当成客观问题、对 UX 变更干脆不测。提示词的小改动值不值得做 A/B?值得,几个字的变化也可能影响输出质量和用户信任,而这恰恰是离线指标看不到的。
判断实验可不可信,有几条经验参照。评分者越一致,人工评分越可信。“无需修改即可接受”的输出比例因产品而异,但它直接对应用户少做了多少返工,适合当长期跟踪的北极星指标。同期群留存比会话满意度更稳,因为满意度记录的是一次对话的情绪,留存记录的是用户有没有回来。
护栏和成本线要在看到结果前写下
生成式实验最容易失守的地方,往往不在统计方法,而在判定标准定下的时间。哪一项安全指标变差就直接否决,单位生成成本涨到多少就必须用留存或转化证明值得,这两条如果在上线前写进假设,后面的人工评估、裁判模型和线上流量都有明确的判定依据。拖到结果出来再谈,团队往往会挑涨得最多的那个数字讲故事,而那个数字往往恰好不是真正出问题的那一个。
上线前花一个小时,把否决条件和成本上限写进实验文档,并让成本负责人签字。