이 글에서는 LiteLLM Budget limit 실습과 원리를 간단히 확인해봅니다.
Budget limit이란
Budget limit은 AI사용금액을 제한시키는 정책입니다.
실습 Team Budget을 설정하고 차단을 확인합니다
LiteLLM Web UI의 Team → Settings → Max Budget에서 Team Budget을 설정합니다. 이 실습에서는 빠르게 차단 결과를 확인하기 위해 한도를 $0.000010으로 설정했습니다.

Budget을 설정한 Team에서 virtual key를 발급하고 LiteLLM API를 호출해봅니다.
export LITELLM_URL=http://localhost:4000
export LITELLM_KEY='sk-...'
curl -i "$LITELLM_URL/chat/completions" \
-H "Authorization: Bearer $LITELLM_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"gpt-4.1-nano",
"messages":[{"role":"user","content":"Reply only: hellooooooooooooooooooooooooooooooooooooooooo"}],
"max_tokens":10
}'
설정한 Budget 한도가 적어서 바로 Budget Limit이 걸립니다. LiteLLM은 AI모델을 호출하지 않고 429 응답과 Budget 초과 메시지를 반환합니다.

로그와 Cost를 확인
Budget Limit 차단 로그는 LiteLLM에서 확인할 수 있습니다. Web UI의 Logs → Request Logs에서 429 status code를 찾으면 Budget limit으로 거절된 요청을 확인할 수 있습니다.

사용한 비용은 Usage에서 확인합니다. Global, Team, User 등의 필터를 적용하면 어떤 범위에서 비용이 누적됐는지 나눠 볼 수 있습니다.

Budget limit 판단하는 방법
Budget limit의 판단에는 지금까지 사용한 비용이 필요합니다.
- 지금까지 사용한 비용 >= budget limit
지금까지 사용한 비용은 어떻게 계산할까요? LiteLLM은 model cost map에 저장된 모델별 토큰 가격과 이 사용량을 조합해 Cost를 계산합니다. LLM provider가 매번 요청의 비용을 리턴하지 않고 AI모델이 사용한 input token과 output token을 리턴하기 때문에, LiteLLM은 매요청마다 Cost를 계산해야 합니다.
- Model cost map: https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
동시 요청이 오면 Budget limit을 어떻게 판단할까?
동시에 들어오면 지금까지 사용한 비용으로만 가지고 정확히 제한하기 어렵습니다. 여러 요청이 당시 budget기준으로 통과하더라도, 응답 후 계산된 전체 비용이 한도를 넘어설 수 있기 때문입니다.
LiteLLM은 이 간격을 줄이기 위해 Budget reservation을 사용합니다. 요청을 보내기 전에 tiktoken 토크나이저로 토큰 수와 예상 비용을 계산해 예약하고, 동시 요청을 판단할 때 이미 예약된 금액까지 반영합니다.

Budget reservation 로직은 LiteLLM 저장소에서 확인할 수 있습니다.
- Budget reservation: https://github.com/BerriAI/litellm/blob/v1.91.1/litellm/proxy/spend_tracking/budget_reservation.py
Budget Scope
Budget은 Global, Organization, Team, User처럼 여러 Scope에 설정할 수 있습니다. 요청이 속한 범위 중 하나라도 한도에 걸리면, 더 하위 Scope에 예산이 남아 있어도 요청은 제한됩니다.
- Global > Organization > Team > User
아래 실습에서는 User Budget에는 여유가 있지만 Team Budget이 한도에 도달해 요청이 차단됐습니다.

참고자료
'전공영역 공부 기록' 카테고리의 다른 글
| LiteLLM QuickStart - guardrail(가드레일) (0) | 2026.07.12 |
|---|---|
| LiteLLM QuickStart - 모델 등록하고 호출해보기 (0) | 2026.07.12 |
| RPM/DNF 설치 자동화가 lock 에러로 실패할 수 상황 (0) | 2026.07.05 |
| 같은 코드를 여러 팀이 관리할 때 테스트 환경은 어떻게 제공해야할까?(feat Argo CD Pull Request generator) (0) | 2026.07.04 |
| ArgoCD private repo 연동: Github App이 PAT보다 안전한 이유 (0) | 2026.06.29 |