LiteLLM 팀 예산 설정

LiteLLM 팀 예산 설정 (Setting Team Budgets)

여러 팀이 한 게이트웨이를 같이 쓴다면, 각 팀이 쓸 수 있는 비용의 상한을 정해두면 마음이 편합니다. LiteLLM은 팀에 max_budget(달러 값)을 걸고, budget_duration으로 언제 초기화할지 정하는 방식으로 팀 단위 예산을 관리해 줍니다. 예산이 넘으면 해당 팀 키로는 요청이 거부됩니다.

출처: 공식문서 - Setting Team Budgets

사전 준비

  • Postgres 데이터베이스(Supabase, Neon 등)를 설정해야 합니다.

JWT 팀에 기본 예산 자동 할당

JWT 인증에서 team_id_upsert: true를 쓰면, 새로 생성되는 팀마다 자동으로 기본 예산을 지정할 수 있습니다. 이는 config.yamldefault_team_settings에 설정합니다.

# in your config.yaml
litellm_jwtauth:
  team_id_upsert: true
  team_id_jwt_field: "team_id"
  # ... other jwt settings

litellm_settings:
  default_team_settings: 
    - team_id: "default-settings"
      max_budget: 100.0

월별 팀 예산 설정하기

1. 팀 만들기

팀에 max_budget(팀이 쓸 수 있는 달러 값)과 budget_duration(예산이 갱신되는 주기)을 지정합니다.

curl -X POST 'http://0.0.0.0:4000/team/new' \
     -H 'Authorization: Bearer sk-1234' \
     -H 'Content-Type: application/json' \
     -d '{
            "team_alias": "QA Prod Bot", 
            "max_budget": 0.000000001, 
            "budget_duration": "1d"
        }' 

응답:

{
 "team_alias": "QA Prod Bot",
 "team_id": "de35b29e-6ca8-4f47-b804-2b79d07aa99a",
 "max_budget": 0.0001,
 "budget_duration": "1d",
 "budget_reset_at": "2024-06-14T22:48:36.594000Z"
}  

budget_duration 가능한 값:

budget_duration 예산 초기화 시점
budget_duration="1s" 1초마다
budget_duration="1m" 1분마다
budget_duration="1h" 1시간마다
budget_duration="1d" 1일마다
budget_duration="30d" 1개월마다

2. 팀용 키 만들기

1단계에서 만든 팀(Team=QA Prod Bot, team_id="de35b29e-6ca8-4f47-b804-2b79d07aa99a")에 연결되는 키를 생성합니다. 이 키로 요청하면 그 팀의 예산이 적용됩니다.

curl -X POST 'http://0.0.0.0:4000/key/generate' \
     -H 'Authorization: Bearer sk-1234' \
     -H 'Content-Type: application/json' \
     -d '{"team_id": "de35b29e-6ca8-4f47-b804-2b79d07aa99a"}'

응답: {"team_id":"de35b29e-6ca8-4f47-b804-2b79d07aa99a", "key":"sk-..."}

3. 테스트하기

2단계의 키로 요청을 두 번 보냅니다.

curl -X POST 'http://0.0.0.0:4000/chat/completions' \
     -H 'Authorization: Bearer sk-...' \
     -H 'Content-Type: application/json' \
     -d ' {
           "model": "llama3",
           "messages": [
             {
               "role": "user",
               "content": "hi"
             }
           ]
         }'

두 번째 요청에서는 예산 초과 예외를 보게 됩니다.

{
 "error": {
   "message": "Budget has been exceeded! Current cost: 3.5e-06, Max budget: 1e-09",
   "type": "auth_error",
   "param": null,
   "code": 400
 }
}

고급 — Prometheus의 remaining_budget 메트릭

팀의 남은 예산을 Prometheus로 추적하려면 proxy config.yaml에 아래 콜백을 추가합니다.

litellm_settings:
  success_callback: ["prometheus"]
  failure_callback: ["prometheus"]

그러면 팀 별 남은 예산 메트릭이 나옵니다.

litellm_remaining_team_budget_metric{team_alias="QA Prod Bot",team_id="de35b29e-6ca8-4f47-b804-2b79d07aa99a"} 9.699999999999992e-06

더 알아보기