✨ [Beta] 프로젝트 관리
✨ [Beta] 프로젝트 관리 (Project Management)
LiteLLM의 프로젝트(Project)는 조직 계층에서 팀(Teams)과 키(Keys) 사이에 위치해요. 특정 사용 사례나 애플리케이션에 대한 세밀한 접근 제어와 예산 관리를 가능하게 해요.
Enterprise 기능이에요. 이 기능은 LiteLLM Enterprise 라이선스가 필요해요. 무료 30일 체험을 시작하거나 데모를 예약하세요. Enterprise가 포함하는 것을 확인하세요.
출처: 문서
본문
Enterprise 기능이에요.
이 기능은 LiteLLM Enterprise 라이선스가 필요해요. 무료 30일 체험을 시작하거나 데모를 예약하세요. Enterprise가 포함하는 것을 확인하세요.
LiteLLM의 프로젝트는 조직 계층에서 팀과 키 사이에 위치해요. 특정 사용 사례나 애플리케이션에 대한 세밀한 접근 제어와 예산 관리를 가능하게 해요.
계층 구조 : Organizations > Teams > Projects > Keys
빠른 시작 (Quick Start)
이 워크스루는 프로젝트를 만들고, API 키를 생성하고, 요청을 보내고, UI에서 프로젝트별 지출 추적을 보는 방법을 보여줘요.
1단계: 프로젝트 만들기
curl --location 'http://0.0.0.0:4000/project/new' \
--header "Authorization: Bearer ***" \
--header 'Content-Type: application/json' \
--data '{
"project_alias": "flight-search-assistant",
"team_id": "ad898803-c8a3-4f4a-976a-a3c372cffa45",
"models": ["gpt-5.6-terra", "gpt-5.6-luna"],
"max_budget": 100,
"metadata": {
"use_case_id": "SNOW-12345",
"responsible_ai_id": "RAI-67890"
}
}' | jq
응답:
{
"project_id": "e402a141-725a-4437-bff5-d47459189716",
"project_alias": "flight-search-assistant",
"team_id": "ad898803-c8a3-4f4a-976a-a3c372cffa45",
"models": ["gpt-5.6-terra", "gpt-5.6-luna"],
"max_budget": 100,
...
}
2단계: 프로젝트용 API 키 생성하기
curl 'http://0.0.0.0:4000/key/generate' \
--header "Authorization: Bearer ***" \
--header 'Content-Type: application/json' \
--data-raw '{
"models": ["gpt-5.6-luna", "gpt-5.6-terra"],
"metadata": {"user": "[email protected]"},
"project_id": "e402a141-725a-4437-bff5-d47459189716"
}' | jq
응답:
{
"key": "«redacted:sk-…»",
"key_name": "sk-...YiXA",
"project_id": "e402a141-725a-4437-bff5-d47459189716",
...
}
3단계: Chat Completions에서 API 키 사용하기
curl http://localhost:4000/v1/chat/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ***' \
--data '{
"model": "gpt-5.6-terra",
"messages": [{"role": "user", "content": "What is litellm?"}]
}' | jq
4단계: UI에서 프로젝트 지출 보기
LiteLLM Admin UI의 Logs 페이지로 이동하세요. 요청 메타데이터에 추적되는 user_api_key_project_id를 볼 수 있어요:

위와 같이 지출 로그 메타데이터는 다음을 포함해요:
"user_api_key_project_id": "e402a141-725a-4437-bff5-d47459189716"- 요청을 프로젝트에 연결- 모든 비용과 토큰 사용량이 자동으로 프로젝트에 귀속
- 상세 리포팅을 위해 프로젝트 ID로 로그를 조회·필터링 가능
API 엔드포인트
POST /project/new
새 프로젝트를 만들어요.
호출 가능자 : Admins 또는 Team Admins
파라미터:
project_alias(string, optional): 프로젝트의 사람이 읽을 수 있는 이름team_id(string, required): 프로젝트가 속한 팀models(array, optional): 프로젝트가 접근할 수 있는 모델 목록max_budget(float, optional): 프로젝트의 최대 지출 예산tpm_limit(int, optional): 분당 토큰 수 제한rpm_limit(int, optional): 분당 요청 수 제한budget_duration(string, optional): 예산 리셋 주기 (예: "30d", "1mo")metadata(object, optional): 프로젝트의 커스텀 메타데이터blocked(boolean, optional): 이 프로젝트의 모든 API 호출 차단
예시:
curl --location 'http://0.0.0.0:4000/project/new' \
--header "Authorization: Bearer ***" \
--header 'Content-Type: application/json' \
--data '{
"project_alias": "hotel-recommendations",
"team_id": "team-123",
"models": ["claude-sonnet-5"],
"max_budget": 200,
"tpm_limit": 100000,
"metadata": {
"use_case_id": "SNOW-12346",
"cost_center": "travel-products"
}
}'
응답:
{
"project_id": "project-def",
"project_alias": "hotel-recommendations",
"team_id": "team-123",
"models": ["claude-sonnet-5"],
"spend": 0.0,
"budget_id": "budget-xyz",
"metadata": {
"use_case_id": "SNOW-12346",
"cost_center": "travel-products"
},
"created_at": "2025-01-15T10:00:00Z",
"updated_at": "2025-01-15T10:00:00Z"
}
POST /project/update
기존 프로젝트를 업데이트해요.
호출 가능자 : Admins 또는 Team Admins
파라미터:
project_id(string, required): 업데이트할 프로젝트project_alias(string, optional): 업데이트된 프로젝트 이름team_id(string, optional): 프로젝트를 다른 팀으로 이동models(array, optional): 허용 모델의 업데이트된 목록max_budget(float, optional): 업데이트된 예산tpm_limit(int, optional): 업데이트된 TPM 제한rpm_limit(int, optional): 업데이트된 RPM 제한metadata(object, optional): 업데이트된 메타데이터blocked(boolean, optional): 업데이트된 차단 상태
예시:
curl --location 'http://0.0.0.0:4000/project/update' \
--header "Authorization: Bearer ***" \
--header 'Content-Type: application/json' \
--data '{
"project_id": "project-abc",
"max_budget": 200,
"tpm_limit": 200000,
"metadata": {
"status": "production"
}
}'
GET /project/info
특정 프로젝트에 대한 정보를 가져와요.
파라미터:
project_id(string, required): 쿼리 파라미터
예시:
curl --location 'http://0.0.0.0:4000/project/info?project_id=project-abc' \
--header "Authorization: Bearer ***"
응답:
{
"project_id": "project-abc",
"project_alias": "flight-search-assistant",
"team_id": "team-123",
"models": ["gpt-5.6-terra", "gpt-5.6-luna"],
"spend": 45.67,
"model_spend": {
"gpt-5.6-terra": 42.30,
"gpt-5.6-luna": 3.37
},
"litellm_budget_table": {
"budget_id": "budget-xyz",
"max_budget": 100.0,
"tpm_limit": 100000,
"rpm_limit": 100
},
"metadata": {
"use_case_id": "SNOW-12345"
}
}
GET /project/list
사용자가 접근할 수 있는 모든 프로젝트를 나열해요.
예시:
curl --location 'http://0.0.0.0:4000/project/list' \
--header "Authorization: Bearer ***"
응답:
[
{
"project_id": "project-abc",
"project_alias": "flight-search-assistant",
"team_id": "team-123",
"spend": 45.67
},
{
"project_id": "project-def",
"project_alias": "hotel-recommendations",
"team_id": "team-123",
"spend": 23.45
}
]
DELETE /project/delete
하나 이상의 프로젝트를 삭제해요.
호출 가능자 : Admins만
파라미터:
project_ids(array, required): 삭제할 프로젝트 ID 목록
예시:
curl --location --request DELETE 'http://0.0.0.0:4000/project/delete' \
--header "Authorization: Bearer ***" \
--header 'Content-Type: application/json' \
--data '{
"project_ids": ["project-abc", "project-def"]
}'
참고 : 연결된 API 키가 있는 프로젝트는 삭제할 수 없어요. 먼저 키를 삭제하거나 재할당하세요.
모델별 할당량 (Model-Specific Quotas)
프로젝트 내에서 모델별로 다른 할당량을 설정할 수 있어요:
curl --location 'http://0.0.0.0:4000/project/new' \
--header "Authorization: Bearer ***" \
--header 'Content-Type: application/json' \
--data '{
"project_alias": "multi-model-project",
"team_id": "team-123",
"models": ["gpt-5.6-terra", "gpt-5.6-luna", "claude-sonnet-5"],
"max_budget": 500,
"metadata": {
"model_tpm_limit": {
"gpt-5.6-terra": 50000,
"gpt-5.6-luna": 200000,
"claude-sonnet-5": 100000
},
"model_rpm_limit": {
"gpt-5.6-terra": 50,
"gpt-5.6-luna": 500,
"claude-sonnet-5": 100
}
}
}'
더 알아보기 (Learn more)
- Enterprise: Enterprise 라이선스가 포함하는 것
- 프로젝트 API:
/project/new,/project/update,/project/info,/project/list,/project/delete