폴백 (Fallbacks)
폴백 (Fallbacks)
한 프로바이더만 믿고 서비스를 띄우다 보면, 그쪽이 장애나면 앱 전체가 멈춰버려요. Portkey 게이트웨이는 우선순위 목록을 지정해 두고, 기본 LLM이 실패하면 목록의 다음 모델로 자동으로 대체해 줘요. 전략 설정 하나로 장애에 훨씬 탄력적으로 대응할 수 있죠.
동작 방식
원하는 프로바이더·모델 목록을 우선순위대로 적어 두면, 기본 모델 호출이 실패할 때 다음 우선순위로 넘어가요. 걸리는 시점도 우리가 정할 수 있어요.
모델 간 폴백
한 요청에 대해 모델만 바꿔서 순차 시도해요.
{
"strategy": { "mode": "fallback" },
"targets": [
{ "override_params": { "model": "@openai-prod/gpt-4o" } },
{ "override_params": { "model": "@anthropic-prod/claude-3-5-sonnet-20241022" } }
]
}
프로바이더 간 폴백
모델은 요청에서 받고, 프로바이더만 바꿔 시도해요.
{
"strategy": { "mode": "fallback" },
"targets": [
{ "provider": "@openai-prod" },
{ "provider": "@azure-prod" }
]
}
특정 상태 코드에서만 폴백
기본적으로는 2xx가 아닌 모든 응답에 폴백이 걸려요. on_status_codes로 조건을 좁힐 수 있어요.
{
"strategy": { "mode": "fallback", "on_status_codes": [429, 503] },
"targets": [
{ "provider": "@openai-prod" },
{ "provider": "@azure-prod" }
]
}
여기서 @provider-slug/model-name 형식은 모델 카탈로그(Model Catalog)에 등록된 프로바이더와 모델을 자동으로 가리켜요.
폴백 요청 추적하기
폴백 체인의 모든 요청은 로그에 남아요. 추적하려면 로그를 Config ID로 필터링해서 같은 컨피그로 보낸 요청들을 모으거나, Trace ID로 필터링해서 단일 요청의 모든 시도 횟수를 확인하면 돼요.
다른 전략과 조합하기
폴백 대상은 자유롭게 조합 가능해요. 각 대상이 로드밸런서가 될 수도, 조건부 라우터가 될 수도, 또 다른 폴백일 수도 있어요. 어떤 전략이든 어떤 전략 안에 중첩할 수 있죠. 예를 들어 로드밸런싱 클러스터 전체가 다운될 때만 크로스 모델 백업이 걸리게 만들 수도 있어요.
참고할 점
- 폴백으로 쓰는 LLM이 우리 유스케이스와 호환되는지 확인해야 해요.
- 한 요청이 여러 LLM을 호출할 수 있어요.
- 각 LLM의 지연과 가격이 다르다는 점도 고려하세요.