在一把 key 上把流量分给两个提示词版本:不接特性开关服务的轻量 A/B 做法
本文介绍一种不依赖特性开关服务的轻量 A/B 测试方法,通过哈希请求 ID 实现确定性五五分流,在一把聚合站 API key 上比较两个提示词版本的效果,并记录变体与后端对应关系。
在优化提示词时,我们常需要比较两个版本的效果,但引入特性开关服务会增加复杂性和成本。这里分享一种仅用一把聚合站 API key 的轻量 A/B 测试方法:通过对请求 ID 进行哈希,实现确定性的五五分流,并记录每个变体对应的后端,从而在不新增基础设施的前提下完成对比。
核心思路
为每个请求生成一个唯一 ID(如 UUID 或时间戳+随机数),对其做哈希(如 SHA-256),取哈希值的一个比特位决定使用变体 A 还是 B。这样同一个请求 ID 总是分到同一变体,保证确定性;同时整体上接近五五分流。
在聚合站中,一把 key 可以调用多个模型。我们可以将变体 A 指向模型 X,变体 B 指向模型 Y,从而在比较提示词的同时也比较不同后端的效果。
实现步骤
1. 生成请求 ID
在客户端为每个请求生成唯一 ID,例如使用 UUID v4。确保 ID 随机且不可预测。
2. 哈希与分流
对请求 ID 计算 SHA-256,取哈希的第一个字节,若最低位为 0 则分配变体 A,为 1 则分配变体 B。这样分流比例约为 50/50。
3. 映射到后端和提示词
定义两个配置:变体 A 使用提示词版本 1 和模型 M1;变体 B 使用提示词版本 2 和模型 M2。根据分流结果选择对应配置发送请求。
4. 记录日志
在请求日志中记录:请求 ID、变体、使用的模型、提示词版本、响应内容、延迟、token 用量等。这些日志可用于后续分析。
5. 分析结果
收集足够样本后,比较两个变体在关键指标(如准确率、延迟、成本)上的差异。由于分流是确定性的,可以确保同一请求在不同时间得到相同处理,便于调试和复现。
注意事项
- 哈希函数应选择均匀分布的,如 SHA-256,避免简单取模导致偏差。
- 确保请求 ID 的生成不依赖变体,避免引入偏差。
- 聚合站按官方价 ×1.3 扣费,贡献 key 按官方价 ×1.1(优质 ×1.2)返 USDC。在成本分析时需考虑此系数。
- 如果比较的模型价格不同,需在分析时归一化成本。
- 样本量足够大时,分流比例会接近 50/50,但小样本可能有波动。
扩展应用
此方法也可用于多变量测试(如 1/3 分流),只需调整哈希取模的基数。但需注意保持确定性。
通过这种轻量方法,你可以在不引入额外服务的情况下,快速验证提示词效果,并利用聚合站的多模型能力进行更灵活的对比。