업데이트 날짜: 2025년 9월 25일
6 분
# Pythonpip install litellm# Node.jsnpm install litellm# 예: OpenAI + Anthropic + Mistral 사용 시export OPENAI_API_KEY=sk-...export ANTHROPIC_API_KEY=sk-ant-...export MISTRAL_API_KEY=sk-mis-...from litellm import completionresp = completion(model="gpt-4o-mini", # 또는 "anthropic/claude-3-5-sonnet", "mistral/mistral-large"messages=.---## 스트리밍, 도구, JSON 모드### 스트리밍 응답```pythonfrom litellm import completionfor chunk in completion(model="gpt-4o-mini",messages=.### 비용 및 토큰 사용량LiteLLM은 요청, 모델, 프로젝트별 토큰 사용량과 비용을 추적할 수 있습니다. 프록시 사용 시 사용량을 로그, 대시보드, 청구 싱크로 내보낼 수 있어 다양한 가격 정책의 공급자를 혼합할 때 매우 유용합니다.---## LiteLLM 프록시 (LLM 게이트웨이)팀이나 플랫폼이라면 프록시가 진정한 강력 기능입니다: 라우팅, 인증, 속도 제한, 로깅, 관찰성을 갖춘 중앙 서비스입니다. OpenAI API 인터페이스로 상호작용해 앱 코드는 거의 바뀌지 않습니다.### 프록시 시작하기```bash# 가장 간단한 로컬 실행litellm --port 4000/v1/chat/completions 등을 노출합니다. 기존 OpenAI 클라이언트를 `로 지정하면 바로 사용할 수 있습니다.config.yaml 생성 예:model_list:- model_name: gpt-4o-minilitellm_params:model: openai/gpt-4o-miniapi_key: ${OPENAI_API_KEY}- model_name: claude-3-5-sonnetlitellm_params:model: anthropic/claude-3-5-sonnetapi_key: ${ANTHROPIC_API_KEY}router:strategy: simple_weightedroutes:- model: gpt-4o-miniweight: 0.6- model: claude-3-5-sonnetweight: 0.4rate_limits:requests_per_minute: 120logging:level: infosink: stdoutauth:api_keys:- key: svc-app-123litellm --config config.yaml --port 4000from openai import OpenAIclient = OpenAI(base_url=" api_key="svc-app-123")resp = client.chat.completions.create(model="gpt-4o-mini",messages=.---## 고급 라우팅: 지연 시간, 비용, 신뢰성다음과 같은 라우팅 전략을 구현할 수 있습니다:- 가중치 라운드로빈으로 A/B 모델 분산- 지역별 최저 지연 시간 우선- 중요하지 않은 엔드포인트에 비용 기반 라우팅- 오류 발생 시 공급자 간 폴백 및 재시도라우터 정책을 사용하면 “저렴한 모델 우선, 까다로운 프롬프트는 프리미엄 모델 사용”같은 규칙 설정이 가능해 고가용성과 예측 가능한 예산 운용이 가능합니다.---## 가드레일, 검열, 안전성개인 식별 정보(PII) 제거, 안전 필터 적용, 클라이언트에 반환하기 전 검열을 위한 전·후 처리 미들웨어를 추가할 수 있습니다. 공급자 고유의 검열 기능(OpenAI, Google 등)과 프록시 내 자체 정책 검사를 병합할 수 있습니다. 예: JSON 스키마 검증을 필수로 하고 유효하지 않으면 재요청 처리.---## 관찰성 및 로깅- 요청/응답 로깅 시 민감 정보 가리기 활성화- 메트릭을 Prometheus/Grafana 또는 APM으로 내보내기- 엔드포인트와 사용자별 지연 시간, 토큰, 비용 추적이를 통해 “모델 룰렛”을 SLO와 예산이 관리되는 서비스로 전환할 수 있습니다.---## 실제 사용 패턴1) 다중 공급자 탄력성- 기본: 빠르고 저렴한 모델; 폴백: 429/5xx 에러 시 고정확도 모델- 장점: 더 나은 가동 시간, 비용 관리, 안정적 품질2) 기능 플래그를 활용한 모델 업그레이드- 라우터 가중치로 신규 모델을 5% 트래픽에 적용 후 모니터링, 안정 시 점진적 확대3) 제품 등급별 모델 사용- 무료 등급은 소형 모델, 프로 등급은 프리미엄 모델 라우팅4) 프롬프트 레지스트리 및 템플릿- 프록시에 프롬프트를 중앙화해 서비스가 재배포 없이 개선사항 상속5) 팀별 청구 및 예산 관리- API 키별 지출 추적; 팀 또는 제품별 소프트·하드 한도 적용---## 보안 및 컴플라이언스 체크리스트- 공급자 키를 시크릿 매니저에 안전하게 저장하고 환경 변수로 참조- 로그에서 개인 정보 검열 및 제거 기능 활성화- 프록시용 서비스별 API 키 사용 및 정기 교체- 조직 단위 속도 제한 및 쿼터 설정- 모델 및 엔드포인트별 허용 리스트/차단 리스트 적용---## 문제 해결: 빠른 수정법- 프록시에서 “Unauthorized” 에러: `auth.api_keys` 설정과 클라이언트의 `base_url` 및 키 확인- 모델을 찾을 수 없음: 호출하는 친숙한 이름이 `model_list`에 포함되었는지 확인- 타임아웃: `timeout` 증가 또는 지연 시간이 낮은 공급자 지역 라우팅- 이상한 출력: JSON 스키마 및 검증 활성화, 재시도 및 폴백 추가- 비용 급증: 캐싱 활성화, 대량 트래픽을 저가 모델로 라우팅, 키별 쿼터 설정심층 탐구와 최신 기능은 공식 문서가 자주 업데이트되니 즐겨찾기 추천합니다. DataCamp 튜토리얼은 실습 패턴에 좋고, 초보자용 영상 코스 역시 개념을 쉽게 이해하는 데 도움이 됩니다.---## 종합 예제: 참조용 앱 뼈대 (Python FastAPI)```python# app.pyfrom fastapi import FastAPIfrom pydantic import BaseModelfrom litellm import completionimport osclass ChatReq(BaseModel):question: strapp = FastAPI()@app.post("/ask")async def ask(req: ChatReq):resp = completion(model=os.getenv("DEFAULT_MODEL", "gpt-4o-mini"),messages=.### FAQQ1: LiteLLM이란 무엇이며 왜 공급자 SDK를 직접 쓰지 않고 LiteLLM을 사용해야 하나요?LiteLLM은 100개가 넘는 LLM을 OpenAI 호환 API로 통합하여 공급자 종속을 줄이고, 라우팅을 간소화하며, 캐싱, 재시도, 비용 추적 같은 운영 기능을 추가합니다.Q2: OpenAI SDK에서 LiteLLM을 어떻게 사용하나요?SDK의 base URL을 LiteLLM 프록시로 지정하고 프록시 API 키를 사용하면, 코드를 변경하지 않고도 프록시가 뒤에서 공급자나 모델을 교체합니다.Q3: LiteLLM이 스트리밍 및 JSON 출력 지원을 하나요?네. `stream=True` 옵션으로 실시간 토큰 스트리밍을 받고, `response_format`에 JSON 스키마를 지정해 공급자별로 구조화된 출력을 강제할 수 있습니다.Q4: 여러 LLM 공급자 간 비용을 어떻게 관리하나요?사용량 로깅과 비용 추정 기능을 활성화하고, 캐싱을 추가하며, 프록시를 통해 대량 트래픽을 저렴한 모델로 라우팅합니다. 대시보드로 예산과 SLO를 모니터링할 수 있습니다.Q5: LiteLLM은 프로덕션 팀에 적합한가요?네. 프록시는 인증, 속도제한, 라우팅, 관찰성, 안전 미들웨어를 제공하며, 앱은 OpenAI 호환성을 유지하면서 중앙 집중식 거버넌스를 가능하게 하는 LLM 게이트웨이 역할을 합니다.