18-Prompt-AB测试实战-用数据选择更好的提示词

发布时间:2026/8/5 17:16:01
18-Prompt-AB测试实战-用数据选择更好的提示词 Prompt A/B 测试实战用数据选择更好的提示词系列Python FastAPI 大模型应用基础第 18 篇1. A/B 测试不是随机发两个版本就结束Prompt A/B 测试要回答因果问题在其他条件尽量一致时版本 B 是否改善了目标指标。必须先确定实验单位用户、会话还是请求主指标任务完成率、人工通过率等护栏指标延迟、成本、投诉和安全事件分流规则、实验周期与停止条件。同一会话忽左忽右会污染体验所以常用稳定哈希分桶。2. 稳定分桶实现fromhashlibimportsha256defassign_variant(experiment_id:str,subject_id:str,b_percentage:int,)-str:同一实验中的同一主体始终进入相同版本。ifnot0b_percentage100:raiseValueError(b_percentage 必须在 0 到 100 之间)ifnotexperiment_idornotsubject_id:raiseValueError(实验和主体标识不能为空)digestsha256(f{experiment_id}:{subject_id}.encode(utf-8)).digest()bucketint.from_bytes(digest[:8],big)%100returnBifbucketb_percentageelseA不要使用 Python 内置hash()做跨进程分桶因为其结果可能受哈希随机化影响。3. 将分桶与版本绑定fromdataclassesimportdataclassdataclass(frozenTrue)classExperiment:experiment_id:strprompt_a:strprompt_b:strb_percentage:intdefchoose(self,subject_id:str)-tuple[str,str]:variantassign_variant(self.experiment_id,subject_id,self.b_percentage,)versionself.prompt_bifvariantBelseself.prompt_areturnvariant,version experimentExperiment(experiment_idticket-summary-2026-07,prompt_a1.3.0,prompt_b1.4.0,b_percentage10,)实验记录至少包含experiment_id、variant、Prompt 版本、模型版本、请求 ID 和指标。用户 ID 应使用内部不可逆标识或符合制度的假名化值。4. 计算比例指标与不确定性frommathimportsqrtdefrate_and_standard_error(success:int,total:int)-tuple[float,float]:iftotal0ornot0successtotal:raiseValueError(样本数量不合法)ratesuccess/total standard_errorsqrt(rate*(1-rate)/total)returnrate,standard_errordefcompare_rates(a_success:int,a_total:int,b_success:int,b_total:int,)-dict[str,float]:a_rate,a_serate_and_standard_error(a_success,a_total)b_rate,b_serate_and_standard_error(b_success,b_total)return{a_rate:a_rate,b_rate:b_rate,absolute_lift:b_rate-a_rate,# 这里只报告差异的近似标准误不冒充完整显著性检验difference_se:sqrt(a_se**2b_se**2),}不能只看到 B 高 1% 就宣布胜利。样本量、置信区间、重复查看导致的提前停止偏差都需要数据分析人员根据实验设计处理。5. 可复验测试deftest_assignment_is_stable()-None:firstassign_variant(exp-1,user-42,20)secondassign_variant(exp-1,user-42,20)assertfirstseconddeftest_zero_and_full_traffic()-None:assertassign_variant(exp,user,0)Aassertassign_variant(exp,user,100)B6. 哪些情况不应该继续实验B 版本触发安全事件输出 Schema 失败率越过护栏P95 延迟或单次成本显著超限上下游系统版本不一致导致数据不可比分流实现错误或指标漏记实验主体会跨组相互影响。安全护栏触发后应自动停止 B 流量不必等待主指标统计显著。7. 对抗性审查实验前冻结主指标防止事后挑选“好看”的指标同一用户保持稳定分组机器人流量、内部测试和重试请求不能重复计入同期模型切换会破坏可比性不对高风险自动决策仅凭 A/B 指标放量保留旧版本和回滚开关。8. 总结A/B 测试的核心不是两个 Prompt而是稳定分流、可比数据、预先定义的指标和安全停止机制。