LiteLLM 커스텀 단가
LiteLLM 커스텀 단가 (Custom LLM Pricing)
기본 단가표에 없는 커스텀 모델을 쓰거나, 프로바이더별 할인·마진을 내부 정산에 반영하고 싶을 때가 있습니다. LiteLLM의 custom pricing은 모든 LLM 프로바이더에 대해 유연한 비용 추적과 단가 커스터마이징을 제공합니다.
개요
LiteLLM은 모든 LLM 프로바이더에 대해 다음 단가 커스터마이징을 지원합니다.
- Custom Pricing — 기본 모델 비용을 덮어쓰거나 커스텀 모델 단가 설정
- Cost Per Token — 입력/출력 토큰 기반 비용 추적 (가장 흔한 방식)
- Cost Per Second — 실행 시간 기반 비용 추적 (예: Sagemaker)
- Zero-Cost Models — 무료/온프레미스 모델은 비용을 0으로 설정해 예산 검사를 우회
- Provider Discounts — 특정 프로바이더에 퍼센트 할인 적용
- Provider Margins — 내부 정산을 위해 LLM 비용에 수수료/마진 추가
- Base Model Mapping — Azure 배포에서 정확한 비용 추적 보장
성공 시(동기+비동기) 응답 비용은 로깅 객체에서 kwargs["response_cost"]로 접근할 수 있습니다.
참고: LiteLLM은 이미 100개 이상의 모델에 대한 단가를 model cost map에 갖고 있습니다.
초당 비용 (Cost Per Second, 예: Sagemaker)
프로바이더 Proxy에서 사용
Step 1: config.yaml에 단가 추가
model_list:
- model_name: sagemaker-completion-model
litellm_params:
model: sagemaker/berri-benchmarking-Llama-2-70b-chat-hf-4
model_info:
input_cost_per_second: 0.000420
- model_name: sagemaker-embedding-model
litellm_params:
model: sagemaker/berri-benchmarking-gpt-j-6b-fp16
model_info:
input_cost_per_second: 0.000420
Step 2: Proxy 시작
litellm /path/to/config.yaml
Step 3: 스펜드 로그 확인
토큰당 비용 (Cost Per Token, 예: Azure)
model_list:
- model_name: azure-model
litellm_params:
model: azure/<your_deployment_name>
api_key: os.environ/AZURE_API_KEY
api_base: os.environ/AZURE_API_BASE
api_version: os.environ/AZURE_API_VERSION
model_info:
input_cost_per_token: 0.000421 # 👈 ONLY to track cost per token
output_cost_per_token: 0.000520 # 👈 ONLY to track cost per token
모델 비용 맵 덮어쓰기 (Override Model Cost Map)
이미 맵에 있는 모델의 단가를 자기 단가로 덮어쓸 수 있습니다. 모델의 config에 model_info 키를 추가하고 원하는 키를 덮어쓰면 됩니다.
예: prod/claude-sonnet-5 모델의 Anthropic 단가 덮어쓰기.
model_list:
- model_name: "prod/claude-sonnet-5"
litellm_params:
model: "anthropic/claude-sonnet-5"
api_key: os.environ/ANTHROPIC_PROD_API_KEY
model_info:
input_cost_per_token: 0.000006
output_cost_per_token: 0.00003
cache_creation_input_token_cost: 0.0000075
cache_read_input_token_cost: 0.0000006
추가 비용 키
다양한 시나리오·모달리티에 대해 비용을 지정할 수 있는 키가 더 있습니다.
input_cost_per_token_above_200k_tokens— 컨텍스트가 200k 토큰을 넘을 때 입력 토큰 비용output_cost_per_token_above_200k_tokens— 컨텍스트가 200k 토큰을 넘을 때 출력 토큰 비용cache_creation_input_token_cost_above_200k_tokens— 대형 컨텍스트 캐시 생성 비용cache_read_input_token_cost_above_200k_token— 대형 컨텍스트 캐시 읽기 비용input_cost_per_image— 멀티모달 요청의 이미지당 비용output_cost_per_reasoning_token— reasoning 토큰 비용 (예: OpenAI o1 모델)input_cost_per_audio_token— 오디오 입력 토큰 비용output_cost_per_audio_token— 오디오 출력 토큰 비용input_cost_per_video_per_second— 비디오 입력 초당 비용input_cost_per_video_per_second_above_128k_tokens— 대형 컨텍스트 비디오 비용input_cost_per_character— 일부 프로바이더의 문자 기반 단가input_cost_per_token_priority/output_cost_per_token_priority— 우선순위/PayGo 단가 (Vertex AI Gemini, Bedrock)input_cost_per_token_flex/output_cost_per_token_flex— 배치/flex 단가
이 키들은 새 모델이 멀티모달을 다루는 방식에 따라 계속 진화합니다. 최신 버전은 https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json 에서 확인하세요.
서비스 티어 / PayGo 단가 (Vertex AI, Bedrock)
여러 단가 티어를 지원하는 프로바이더(예: Vertex AI PayGo, Bedrock 서비스 티어)의 경우 LiteLLM은 응답에 따라 올바른 비용을 자동으로 적용합니다.
- Vertex AI Gemini:
usageMetadata.trafficType사용 (ON_DEMAND_PRIORITY → priority, FLEX/BATCH → flex) - Bedrock: 응답의
serviceTier사용
Zero-Cost 모델 (예산 검사 우회)
사용 사례: 온프레미스 또는 무료 모델이 있어서, 사용자가 예산 한도를 넘어도 그 모델은 계속 접근 가능해야 하는 경우.
해결책 ✅: input_cost_per_token과 output_cost_per_token을 둘 다 0으로 설정(명시적으로)하면 해당 모델에 대한 모든 예산 검사를 우회합니다.
참고: 모델이 제로 비용으로 설정되면 LiteLLM은 그 모델로 가는 요청에 대해 모든 예산 검사(user, team, team member, end-user, organization, global proxy budget)를 자동으로 건너뜁니다.
중요: 두 비용 모두 명시적으로 0으로 설정해야 합니다. 비용이 null이나 undefined면 모델은 비용이 있는 것으로 취급되어 예산 검사가 적용됩니다.
model_list:
# On-premises model - free to use
- model_name: on-prem-llama
litellm_params:
model: ollama/llama3
api_base: http://localhost:11434
model_info:
input_cost_per_token: 0 # 👈 Explicitly set to 0
output_cost_per_token: 0 # 👈 Explicitly set to 0
# Paid cloud model - budget checks apply
- model_name: gpt-5.6-terra
litellm_params:
model: gpt-5.6-terra
api_key: os.environ/OPENAI_API_KEY
# No model_info - uses default pricing from cost map
동작 — 위 설정을 쓰면:
- 사용자 예산 초과 → on-prem-llama는 여전히 사용 가능 ✅, gpt-5.6-terra는 차단 ❌
- 팀 예산 초과 → on-prem-llama는 여전히 사용 가능 ✅, gpt-5.6-terra는 차단 ❌
- 엔드 유저 예산 초과 → on-prem-llama는 여전히 사용 가능 ✅, gpt-5.6-terra는 차단 ❌
이렇게 하면 예산 제약이 있어도 무료/온프레미스 모델은 계속 접근 가능하고, 유료 모델은 여전히 제대로 관리됩니다.
비용 추적용 'base_model' 설정 (예: Azure 배포)
문제: Azure는 azure/gpt-4-1106-preview를 써도 응답에서 gpt-4를 돌려줍니다. 이 때문에 비용 추적이 부정확해집니다.
해결책 ✅: LiteLLM이 Azure 비용 계산에 올바른 모델을 쓰도록 config에 base_model을 설정합니다.
model_list:
- model_name: azure-gpt-3.5
litellm_params:
model: azure/chatgpt-v-2
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
api_version: "2023-07-01-preview"
model_info:
base_model: azure/gpt-5.6-terra
날짜 버전이 붙은 OpenAI 모델
base_model은 OpenAI가 설정한 모델 이름과 다른 날짜 버전 모델명을 응답으로 돌려줄 때도 유용합니다.
예: gpt-4o-mini-audio-preview에 커스텀 단가를 설정했는데 OpenAI가 gpt-4o-mini-audio-preview-2024-12-17을 응답으로 돌려주는 경우입니다. LiteLLM은 단가 조회에 응답 모델명을 쓰므로, 커스텀 단가가 적용되지 않습니다.
해결책 ✅: LiteLLM이 단가 조회에 쓸 키로 base_model을 설정합니다.
model_list:
- model_name: my-audio-model
litellm_params:
model: openai/gpt-4o-mini-audio-preview
api_key: os.environ/OPENAI_API_KEY
model_info:
base_model: gpt-4o-mini-audio-preview # 👈 Used for pricing lookup
input_cost_per_token: 0.0000006
output_cost_per_token: 0.0000024
input_cost_per_audio_token: 0.00001
output_cost_per_audio_token: 0.00002
디버깅
커스텀 단가가 적용되지 않거나 오류가 나면 아래를 확인하세요.
LITELLM_LOG="DEBUG"또는--detailed_debugCLI 플래그로 Proxy 실행
litellm --config /path/to/config.yaml --detailed_debug
- 로그에서 이 라인을 확인:
LiteLLM:DEBUG: utils.py:263 - litellm.acompletion acompletion함수의 최상위 키에input_cost_per_token과output_cost_per_token이 있는지 확인
acompletion(
...,
input_cost_per_token: my-custom-price,
output_cost_per_token: my-custom-price,
)
이 키들이 없으면 LiteLLM은 커스텀 단가를 쓰지 않습니다. 문제가 지속되면 GitHub에 이슈를 올리세요.