A/B 测试 - 流量镜像
流量镜像允许您将生产流量“模仿”到辅助(静默)模型进行评估目的。静默模型的响应在后台收集,不会影响主请求的延迟或结果。
此功能适用于:
- 在切换模型前,测试新模型在生产环境提示词下的表现。
- 比较不同提供商之间的成本和延迟。
- 通过将流量镜像到更详细(verbose)的模型来调试问题。
快速入门
要启用流量镜像,请在部署的 litellm_params 中添加 silent_model。
- SDK
- 代理
from litellm import Router
model_list = [
{
"model_name": "gpt-3.5-turbo",
"litellm_params": {
"model": "azure/chatgpt-v-2",
"api_key": "...",
"silent_model": "gpt-4" # 👈 Mirror traffic to gpt-4
},
},
{
"model_name": "gpt-4",
"litellm_params": {
"model": "openai/gpt-4",
"api_key": "..."
},
}
]
router = Router(model_list=model_list)
# The request to "gpt-3.5-turbo" will trigger a background call to "gpt-4"
response = await router.acompletion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "How does traffic mirroring work?"}]
)
将 silent_model 添加到您的 config.yaml 中
model_list:
- model_name: primary-model
litellm_params:
model: azure/gpt-35-turbo
api_key: os.environ/AZURE_API_KEY
silent_model: evaluation-model # 👈 Mirror traffic here
- model_name: evaluation-model
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
工作原理
- 收到请求:向模型组(例如
primary-model)发送请求。 - 选择部署:LiteLLM 从该组中选择一个部署。
- 主调用:LiteLLM 向主要部署发起调用。
- 镜像:如果存在
silent_model,LiteLLM 会触发对该模型的后台调用。- 对于 同步 (Sync) 调用:使用共享线程池。
- 对于 异步 (Async) 调用:使用
asyncio.create_task。
- 隔离性:后台调用使用原始请求参数的
deepcopy,并将metadata["is_silent_experiment"] = True。它还会剔除日志 ID,以防止使用统计时的冲突。
主要特性
- 延迟隔离:主要请求在准备好后立即返回。后台(静默)调用不会造成阻塞。
- 统一日志记录:后台调用通过 Router 进行处理,这意味着它们会自动记录到您配置的可观测性工具(Langfuse、S3 等)中。
- 评估:在日志中使用
is_silent_experiment: True标志来过滤并比较主要调用与镜像调用之间的结果。