[New] 폴백 관리 엔드포인트
[New] 폴백 관리 엔드포인트 (Fallback Management Endpoints)
일반 구성과 별도로 모델 폴백을 관리하기 위한 전용 엔드포인트예요.
출처: 문서
본문
개요 (Overview)
이 엔드포인트들은 전체 프록시 구성을 수정하지 않고 폴백 모델을 구성, 검색, 삭제할 수 있게 해줘요. /config/update 엔드포인트를 사용하는 것보다 폴백을 관리하는 더 깨끗하고 안전한 방법을 제공해요.
사전 요구사항 (Prerequisites)
- 데이터베이스 저장 활성화: 환경에
STORE_MODEL_IN_DB=True설정 - 폴백을 구성하기 전에 모델이 라우터에 존재해야 함
엔드포인트 (Endpoints)
POST /fallback
특정 모델에 대한 폴백을 생성하거나 업데이트해요.
요청 본문:
{
"model": "gpt-5.6-luna",
"fallback_models": ["gpt-5.6-terra", "claude-sonnet-5"],
"fallback_type": "general"
}
파라미터:
model(string, 필수): 폴백을 구성할 프라이머리 모델 이름fallback_models(string 배열, 필수): 우선 순위 순서의 폴백 모델 이름 목록fallback_type(string, 선택): 폴백 유형. 옵션:"general"(기본): 모든 오류에 대한 표준 폴백"context_window": 컨텍스트 창 초과 오류에 대한 폴백"content_policy": 콘텐츠 정책 위반에 대한 폴백
응답:
{
"model": "gpt-5.6-luna",
"fallback_models": ["gpt-5.6-terra", "claude-sonnet-5"],
"fallback_type": "general",
"message": "Fallback configuration created successfully"
}
cURL 사용 예시:
curl -X POST "http://localhost:4000/fallback" \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-luna",
"fallback_models": ["gpt-5.6-terra", "claude-sonnet-5"],
"fallback_type": "general"
}'
Python 사용 예시:
import requests
response = requests.post(
"http://localhost:4000/fallback",
headers={
"Authorization": "Bearer sk-<your-litellm-api-key>",
"Content-Type": "application/json"
},
json={
"model": "gpt-5.6-luna",
"fallback_models": ["gpt-5.6-terra", "claude-sonnet-5"],
"fallback_type": "general"
})
print(response.json())
GET /fallback/{model}
특정 모델에 대한 폴백 구성을 가져와요.
파라미터:
model(path 파라미터, 필수): 폴백을 가져올 모델 이름fallback_type(query 파라미터, 선택): 검색할 폴백 유형 (기본:"general")
응답:
{
"model": "gpt-5.6-luna",
"fallback_models": ["gpt-5.6-terra", "claude-sonnet-5"],
"fallback_type": "general"
}
cURL 사용 예시:
curl -X GET "http://localhost:4000/fallback/gpt-5.6-luna?fallback_type=general" \
-H "Authorization: Bearer ***"
Python 사용 예시:
import requests
response = requests.get(
"http://localhost:4000/fallback/gpt-5.6-luna",
headers={"Authorization": "Bearer sk-<your-litellm-api-key>"},
params={"fallback_type": "general"})
print(response.json())
DELETE /fallback/{model}
특정 모델에 대한 폴백 구성을 삭제해요.
파라미터:
model(path 파라미터, 필수): 폴백을 삭제할 모델 이름fallback_type(query 파라미터, 선택): 삭제할 폴백 유형 (기본:"general")
응답:
{
"model": "gpt-5.6-luna",
"fallback_type": "general",
"message": "Fallback configuration deleted successfully"
}
cURL 사용 예시:
curl -X DELETE "http://localhost:4000/fallback/gpt-5.6-luna?fallback_type=general" \
-H "Authorization: Bearer ***"
Python 사용 예시:
import requests
response = requests.delete(
"http://localhost:4000/fallback/gpt-5.6-luna",
headers={"Authorization": "Bearer sk-<your-litellm-api-key>"},
params={"fallback_type": "general"})
print(response.json())
폴백 테스트 (Test fallback)
Proxy 요청에서는 Deprecated
LiteLLM Proxy v1.85.0부터 mock_testing_fallbacks는 수신 Proxy 요청에서 제거되며 효과가 없어요. 테스트에서 직접 litellm.Router 호출에 대해서만 지원돼요.
프록시를 통해 폴백을 검증하려면 비프로덕션 환경에서 프라이머리 배포를 사용 불가로 만들고 일반 요청을 보내세요:
curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ***" \
-d '{
"model": "gpt-5.6-luna",
"messages": [
{
"role": "user",
"content": "ping"
}
]
}'
검증 (Validation)
엔드포인트는 다음 검증을 수행해요:
- 모델 존재: 프라이머리 모델이 라우터에 존재하는지 확인
- 폴백 모델 존재: 모든 폴백 모델이 라우터에 존재하는지 보장
- 자체 폴백 없음: 모델이 자신의 폴백이 되는 것을 방지
- 중복 없음: 폴백 목록에 중복 모델이 없도록 보장
- 데이터베이스 활성화:
STORE_MODEL_IN_DB=True설정 필요
오류 응답 (Error Responses)
400 Bad Request:
{
"detail": {
"error": "Invalid fallback models: ['non-existent-model']",
"available_models": ["gpt-5.6-luna", "gpt-5.6-terra", "claude-sonnet-5"]
}
}
404 Not Found:
{
"detail": {
"error": "Model 'gpt-5.6-luna' not found in router",
"available_models": ["gpt-5.6-terra", "claude-sonnet-5"]
}
}
500 Internal Server Error:
{
"detail": {
"error": "Router not initialized"
}
}
폴백 유형 설명 (Fallback Types Explained)
일반 폴백 (General Fallbacks)
모델 호출 중 발생하는 모든 유형의 오류에 사용돼요. 가장 일반적인 폴백 유형이에요.
사용 사례: 모델이 사용 불가, 요율 제한, 또는 오류를 반환할 때.
{
"model": "gpt-5.6-luna",
"fallback_models": ["gpt-5.6-terra", "claude-sonnet-5"],
"fallback_type": "general"
}
컨텍스트 창 폴백 (Context Window Fallbacks)
컨텍스트 창 초과 오류가 발생할 때 특별히 트리거돼요.
사용 사례: 입력이 프라이머리 모델에 너무 길 때, 더 큰 컨텍스트 창을 가진 모델로 폴백. 아래 id는 예시이며 컨텍스트 창 크기로 유지된 것이에요.
{
"model": "gpt-3.5-turbo",
"fallback_models": ["gpt-4-32k", "claude-3-opus"],
"fallback_type": "context_window"
}
콘텐츠 정책 폴백 (Content Policy Fallbacks)
콘텐츠 정책 위반이 발생할 때 특별히 트리거돼요.
사용 사례: 프라이머리 모델이 안전 필터로 인해 콘텐츠를 거부할 때, 다른 콘텐츠 정책을 가진 모델로 폴백.
{
"model": "gpt-5.6-terra",
"fallback_models": ["claude-sonnet-5"],
"fallback_type": "content_policy"
}
/config/update보다 나은 점 (Benefits Over /config/update)
- 안전성 (Safety): 폴백 구성만 수정하므로 다른 설정을 우연히 바꾸지 않음
- 단순성 (Simplicity): 명확한 검증 메시지가 있는 집중된 API
- 세분성 (Granularity): 모델별, 유형별로 폴백 관리
- 검증 (Validation): 적용 전에 구성이 유효한지 확인
- 명확성 (Clarity): 사용 가능한 모델이 나열된 명확한 오류 메시지
참고 사항 (Notes)
- 폴백은 구성된 재시도 횟수가 실패한 후에 트리거돼요
- 폴백은
fallback_models에 지정된 순서대로 시도돼요 - 시도되는 최대 폴백 수는 라우터의
max_fallbacks설정이 제어해요 - 변경은 즉시 적용되고 데이터베이스에 보존돼요
예산 폴백 (Budget Fallbacks)
예산 폴백은 per-key model_max_budget이 초과되었을 때 budget_exceeded를 반환하는 대신 요청을 다른 모델로 재라우팅해요.