LiteLLM 예산 라우팅
LiteLLM 예산 라우팅 (Budget Routing)
예산 관리의 대상을 "어느 프로바이더에 얼마" 수준까지 끌어올릴 수 있습니다. LiteLLM의 Budget Routing은 프로바이더별·모델별·태그별로 예산을 정해두고, 예산이 남은 프로바이더로 요청을 라우팅해 줍니다. 예산이 단순히 "막는" 데서 그치지 않고, 어디로 보낼지까지 결정한다는 점이 특징입니다.
라우팅으로 설정할 수 있는 예산
LiteLLM은 다음 단위로 예산을 설정할 수 있습니다.
- 프로바이더 예산 — OpenAI 하루 $100, Azure 하루 $100
- 모델 예산 — gpt-5.6-terra (https://api-base-1) 하루 $100, gpt-5.6-luna (https://api-base-2) 하루 $100
- 태그 예산 — tag=product:chat-bot 하루 $10, tag=product:chat-bot-2 하루 $100
프로바이더 예산
LLM 프로바이더별로 예산을 설정합니다. 예: OpenAI 하루 $100, Azure 하루 $100.
Quick Start
proxy_config.yaml에 프로바이더 예산을 설정합니다.
model_list:
- model_name: gpt-5.6-luna
litellm_params:
model: openai/gpt-5.6-luna
api_key: os.environ/OPENAI_API_KEY
router_settings:
provider_budget_config:
openai:
budget_limit: 0.000000000001 # float of $ value budget for time period
time_period: 1d # can be 1d, 2d, 30d, 1mo, 2mo
azure:
budget_limit: 100
time_period: 1d
anthropic:
budget_limit: 100
time_period: 10d
vertex_ai:
budget_limit: 100
time_period: 12d
gemini:
budget_limit: 100
time_period: 12d
# OPTIONAL: Set Redis Host, Port, and Password if using multiple instance of LiteLLM
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
general_settings:
master_key: sk-1234
테스트 요청 시 첫 번째 요청은 성공하고, 두 번째 요청은 openai 예산을 넘어 실패할 것으로 예상합니다.
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-5.6-luna",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
어떻게 동작하나
예산 추적:
- Redis로 각 프로바이더의 지출을 추적
- 지정된 시간 기간(예: "1d", "30d") 동안 지출 추적
- 시간 기간 만료 시 지출 자동 초기화
라우팅 로직:
- 예산 한도 내에 있는 프로바이더로 요청 라우팅
- 예산을 초과한 프로바이더는 건너뜀
- 모든 프로바이더가 예산을 초과하면 오류 발생
지원 시간 기간:
- 초:
"Xs"(예:"30s") - 분:
"Xm"(예:"10m") - 시간:
"Xh"(예:"24h") - 일:
"Xd"(예:"1d","30d") - 월:
"Xmo"(예:"1mo","2mo")
요구 사항:
- 인스턴스 간 지출 추적을 위해 Redis 필요
- 프로바이더 이름은 LiteLLM 프로바이더 이름이어야 함
프로바이더 남은 예산 모니터링
예산·지출 정보 조회:
curl -X GET http://localhost:4000/provider/budgets \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234"
응답:
{
"providers": {
"openai": {
"budget_limit": 1e-12,
"time_period": "1d",
"spend": 0.0,
"budget_reset_at": null
},
"azure": {
"budget_limit": 100.0,
"time_period": "1d",
"spend": 0.0,
"budget_reset_at": null
},
"anthropic": {
"budget_limit": 100.0,
"time_period": "10d",
"spend": 0.0,
"budget_reset_at": null
},
"vertex_ai": {
"budget_limit": 100.0,
"time_period": "12d",
"spend": 0.0,
"budget_reset_at": null
}
}
}
Prometheus 메트릭 — 프로바이더 남은 예산(USD)을 추적하는 메트릭입니다.
litellm_provider_remaining_budget_metric{api_provider="openai"} 10
모델 예산
모델별로 예산을 설정합니다. 예: openai/gpt-5.6-terra 하루 $10, openai/gpt-5.6-luna 하루 $100.
model_list의 litellm_params에 max_budget과 budget_duration을 설정합니다.
model_list:
- model_name: gpt-5.6-terra
litellm_params:
model: openai/gpt-5.6-terra
api_key: os.environ/OPENAI_API_KEY
max_budget: 0.000000000001 # (USD)
budget_duration: 1d # (Duration. can be 1s, 1m, 1h, 1d, 1mo)
- model_name: gpt-5.6-luna
litellm_params:
model: openai/gpt-5.6-luna
api_key: os.environ/OPENAI_API_KEY
max_budget: 100 # (USD)
budget_duration: 30d # (Duration. can be 1s, 1m, 1h, 1d, 1mo)
태그 예산 (Enterprise)
litellm_settings.tag_budget_config에 태그 예산을 설정합니다.
model_list:
- model_name: gpt-5.6-terra
litellm_params:
model: openai/gpt-5.6-terra
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
tag_budget_config:
product:chat-bot: # (Tag)
max_budget: 0.000000000001 # (USD)
budget_duration: 1d # (Duration)
product:chat-bot-2: # (Tag)
max_budget: 100 # (USD)
budget_duration: 1d # (Duration)
테스트 요청 시 metadata.tags에 product:chat-bot을 넣어 보냅니다.
멀티 인스턴스 설정
여러 인스턴스를 쓰는 환경에서는 Redis 호스트·포트·비밀번호를 설정해야 지출이 인스턴스 간에 동기화됩니다.
model_list:
- model_name: gpt-5.6-luna
litellm_params:
model: openai/gpt-5.6-luna
api_key: os.environ/OPENAI_API_KEY
router_settings:
provider_budget_config:
openai:
budget_limit: 0.000000000001 # float of $ value budget for time period
time_period: 1d # can be 1d, 2d, 30d, 1mo, 2mo
# Set Redis Host, Port, and Password if using multiple instance of LiteLLM
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
general_settings:
master_key: sk-1234
provider_budget_config 스펙
provider_budget_config는 다음과 같은 딕셔너리입니다.
- Key: 프로바이더 이름 (string) — 유효한 LiteLLM 프로바이더 이름이어야 함
- Value: 다음 파라미터를 가진 예산 설정 객체
budget_limit: USD 예산을 나타내는 float 값time_period: 기간 문자열 — 초"Xs", 분"Xm", 시간"Xh", 일"Xd", 월"Xmo"형식
provider_budget_config:
openai:
budget_limit: 100.0 # $100 USD
time_period: "1d" # 1 day period
azure:
budget_limit: 500.0 # $500 USD
time_period: "30d" # 30 day period
anthropic:
budget_limit: 200.0 # $200 USD
time_period: "1mo" # 1 month period
gemini:
budget_limit: 50.0 # $50 USD
time_period: "24h" # 24 hour period