A/B 테스트 - 트래픽 미러링

A/B 테스트 - 트래픽 미러링 (Traffic Mirroring)

프로덕션 트래픽을 평가 목적으로 보조(무음) 모델에 "복제"하는 기능이에요. 무음 모델의 응답은 백그라운드에서 수집되며 기본 요청의 지연 시간이나 결과에 영향을 주지 않아요.

출처: 문서

본문

트래픽 미러링을 사용하면 평가 목적으로 보조(무음) 모델에 프로덕션 트래픽을 "복제"할 수 있어요. 무음 모델의 응답은 백그라운드에서 수집되며 기본 요청의 지연 시간이나 결과에 영향을 주지 않아요.

이 기능은 다음에 유용해요:

  • 전환하기 전에 프로덕션 프롬프트에서 새 모델의 성능을 테스트.
  • 서로 다른 제공자 간 비용과 지연 시간 비교.
  • 더 상세한 모델로 트래픽을 미러링해 문제 디버깅.

Quick Start

트래픽 미러링을 활성화하려면 배포의 litellm_paramssilent_model을 추가하세요.

  • SDK
  • Proxy
from litellm import Router

model_list = [
    {
        "model_name": "gpt-5.6-luna",
        "litellm_params": {
            "model": "azure/chatgpt-v-2",
            "api_key": "...",
            "silent_model": "gpt-5.6-terra" # 👈 Mirror traffic to gpt-5.6-terra
        },
    },
    {
        "model_name": "gpt-5.6-terra",
        "litellm_params": {
            "model": "openai/gpt-5.6-terra",
            "api_key": "..."
        },
    }
]

router = Router(model_list=model_list)

# The request to "gpt-5.6-luna" will trigger a background call to "gpt-5.6-terra"
response = await router.acompletion(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": "How does traffic mirroring work?"}]
)

config.yamlsilent_model 추가:

model_list:
  - model_name: primary-model
    litellm_params:
      model: azure/gpt-5.6-luna
      api_key: os.environ/AZURE_API_KEY
      silent_model: evaluation-model # 👈 Mirror traffic here
  - model_name: evaluation-model
    litellm_params:
      model: openai/gpt-5.6-terra
      api_key: os.environ/OPENAI_API_KEY

동작 방식

  • 요청 수신: 모델 그룹(예: primary-model)에 요청이 전달돼요.
  • 배포 선택: LiteLLM이 그룹에서 배포를 선택해요.
  • 기본 호출: LiteLLM이 기본 배포에 호출을 해요.
  • 미러링: silent_model이 있으면 LiteLLM이 그 모델에 백그라운드 호출을 트리거해요.
    • 동기 호출: 공유 스레드 풀을 사용해요.
    • 비동기 호출: asyncio.create_task를 사용해요.
  • 격리: 백그라운드 호출은 원본 요청 파라미터의 deepcopy를 사용하고 metadata["is_silent_experiment"] = True를 설정해요. 또한 사용 추적에서 충돌을 막기 위해 로깅 ID를 제거해요.

주요 특징

  • 지연 시간 격리: 기본 요청은 준비되는 즉시 반환돼요. 백그라운드(무음) 호출은 차단하지 않아요.
  • 통합 로깅: 백그라운드 호출은 Router를 통해 처리되므로 구성된 관측 도구(Langfuse, S3 등)에 자동으로 기록돼요.
  • 평가: 로그에서 is_silent_experiment: True 플래그를 사용해 기본 호출과 미러링된 호출 사이의 결과를 필터링하고 비교해요.

더 알아보기 (Learn more)