实验(A/B测试)
TensorZero网关内置支持通过变体进行实验(A/B测试)。 每个函数可以拥有多个变体,网关将根据它们的权重在变体之间进行采样分发。
变体功能让您可以尝试不同的模型(例如GPT-4o与Claude)、提示词(例如不同模板)、参数(例如不同温度值)、推理策略(例如动态上下文学习)等。
在一个任务周期内,对同一函数的多次调用将获得相同的变体(除非需要回退机制)。 这确保了多步骤LLM工作流中的一致性。 从形式上看,这种一致的变体分配相当于一项随机对照实验,为判断哪种配置表现最佳提供了必要的统计基础。
您可以使用收集到的关于推理或回合的反馈数据,以系统化的方式比较不同变体的表现差异。 通过TensorZero UI,您可以直观地查看不同变体随时间变化的性能表现。
示例
简易A/B测试
假设您想尝试为撰写电子邮件的函数测试不同的模型。
让我们创建一个包含两个变体的函数:GPT-4o Mini 和 Claude 3.5 Haiku。 在生产环境中,您可能需要设置提示模板、推理参数等更多配置。
[functions.draft_email]type = "chat"
[functions.draft_email.variants.gpt_4o_mini]type = "chat_completion"model = "openai::gpt-4o-mini"
[functions.draft_email.variants.claude_3_5_haiku]type = "chat_completion"model = "anthropic::claude-3.5-haiku"
使用上述配置时,网关将在各变体之间以均等概率进行采样。
变体权重
您还可以设置变体权重来控制每个变体被选中的概率。
[functions.draft_email]type = "chat"
[functions.draft_email.variants.gpt_4o_mini]type = "chat_completion"model = "openai::gpt-4o-mini"weight = 0.9
[functions.draft_email.variants.claude_3_5_haiku]type = "chat_completion"model = "anthropic::claude-3.5-haiku"weight = 0.1
根据上述配置,网关将有90%的概率采样gpt_4o_mini
,10%的概率采样claude_3_5_haiku
。
如果不为变体指定权重,网关将在它们之间均匀采样。
如果将某个变体的权重设置为零,则该变体永远不会被采样。
您只能通过在推理时使用variant_name
显式固定这些零权重变体来使用它们。
如果混合使用带正权重和未指定权重的变体,网关会优先采样正权重变体,仅将未指定权重的变体作为后备方案。详见重试与后备机制获取更多信息。