본문 바로가기
AI

기업에서 사용하는 AI는 LiteLLM 사용 및 구축 방법

by 인공지능클라우드 2026. 7. 18.
반응형

하나의 라이브러리로 OpenAI, Anthropic, VertexAI 등 100개 이상의 LLM(대형 언어 모델)을 제어할 수 있는 LiteLLM의 핵심 사용법을 정리합니다. 본 가이드는 구글 SEO 기준에 맞춰 Python SDK 활용법부터 Proxy Server 구축까지 핵심만 직관적으로 구성했습니다.

 

1. LiteLLM 개요 및 아키텍처 비교

LiteLLM은 모든 LLM 제공업체의 API 입출력을 OpenAI Format으로 통일하여 개발 생산성을 극대화하는 오픈소스 라이브러리입니다. 사용 목적에 따라 두 가지 방식으로 도입할 수 있습니다.

Classification LiteLLM Proxy Server LiteLLM Python SDK
Use Case 중앙 집중형 엔터프라이즈 게이트웨이 (LLM Gateway) 개인 프로젝트 및 파이썬 코드 내 직접 연동
Target Users Gen AI 플랫폼 운영 팀, MLOps 엔지니어 빠른 프로토타이핑을 원하는 백엔드 개발자
Key Features 가상 키 관리, 비용 추적 dashboard UI, 로깅 및 캐싱 Router(자동 재시도/Fallback), 예외 처리, 관측성 콜백

2. LiteLLM Python SDK 기본 사용법

패키지 설치 (Installation)

최신 파이썬 환경 관리자인 uv를 사용하여 신속하게 라이브러리를 추가합니다.

uv add litellm

기본 완성 API 호출 (Basic Completion)

환경변수에 API Key를 할당한 후, OpenAI 규격의 completion 함수를 호출합니다.

from litellm import completion
import os

# Set environment variables
os.environ["OPENAI_API_KEY"] = "your-api-key"

response = completion(
  model="openai/gpt-5",
  messages=[{"content": "Hello, how are you?", "role": "user"}]
)

print(response)

추론 모델 전용 API 호출 (Responses API)

GPT-5-mini, o3 등 추론 과정(reasoning_content) 출력이 필요한 모델은 responses 메서드를 사용합니다.

from litellm import responses
import os

# Set environment variables
os.environ["OPENAI_API_KEY"] = "your-api-key"

response = responses(
  model="gpt-5-mini",
  messages=[{"content": "What is the capital of France?", "role": "user"}],
  reasoning_effort="medium"
)

print(response.choices[0].message.content)          # 최종 답변 출력
print(response.choices[0].message.reasoning_content) # 사고 과정(Reasoning) 출력

스트리밍 출력 (Streaming)

실시간 실라블 단위 출력을 구현하려면 매개변수에 stream=True를 선언합니다.

from litellm import completion
import os

os.environ["OPENAI_API_KEY"] = "your-api-key"

response = completion(
  model="openai/gpt-5",
  messages=[{"content": "Hello, how are you?", "role": "user"}],
  stream=True
)

3. 고급 기능: 예외 처리 및 모니터링 연동

통합 예외 처리 (Exception Handling)

타사 공급업체(Anthropic, VertexAI 등)의 에러 발생 시에도 LiteLLM이 OpenAI 표준 에러 맵으로 변환해 주므로 일관된 트라이캐치 구조를 유지할 수 있습니다.

import litellm
from litellm import completion
import os

os.environ["ANTHROPIC_API_KEY"] = "bad-key"

try:
    completion(model="anthropic/claude-instant-1", messages=[{"role": "user", "content": "Hey!"}])
except litellm.AuthenticationError as e:
    print(f"Authentication failed: {e}")
except litellm.RateLimitError as e:
    print(f"Rate limited: {e}")
except litellm.APIError as e:
    print(f"API error: {e}")

옵저버빌리티 콜백 연동 (Logging & Observability)

한 줄의 설정으로 Langfuse, Lunary, MLflow 등 외부 분석 인프라에 데이터를 적재합니다.

import litellm
from litellm import completion
import os

# Set observability credentials
os.environ["LUNARY_PUBLIC_KEY"] = "your-lunary-public-key"
os.environ["LANGFUSE_PUBLIC_KEY"] = "your-langfuse-public-key"
os.environ["LANGFUSE_SECRET_KEY"] = "your-langfuse-secret-key"
os.environ["OPENAI_API_KEY"] = "your-openai-key"

# Define success callbacks
litellm.success_callback = ["lunary", "langfuse"]

response = completion(model="openai/gpt-5", messages=[{"role": "user", "content": "Hi"}])

스트리밍 커스텀 비용 트래킹 (Cost Tracking Callback)

스트리밍 연산 시 소모되는 API 비용을 실시간으로 계산하는 커스텀 콜백 함수 구조입니다.

import litellm
from litellm import completion

def track_cost_callback(kwargs, completion_response, start_time, end_time):
    try:
        response_cost = kwargs.get("response_cost", 0)
        print("Streaming response cost:", response_cost)
    except Exception:
        pass

litellm.success_callback = [track_cost_callback]

response = completion(
    model="openai/gpt-5",
    messages=[{"role": "user", "content": "Hi"}],
    stream=True
)

4. LiteLLM Proxy Server 구축 및 CLI 사용법

개별 인프라 단에서 통합 엔드포인트를 제공하기 위해 프록시 서버 역할을 수행하는 CLI 기동 방식입니다.

프록시 툴 설치 및 서버 시작

# Install proxy tool via uv
uv tool install 'litellm[proxy]'

# Launch proxy server with specific model
litellm --model huggingface/bigcode/starcoder
포트 지정이 없을 시 기본적으로 http://0.0.0.0:4000에서 프록시 게이트웨이가 실행됩니다.

클라이언트단 SDK 요청 (OpenAI SDK 호환)

구축된 프록시 서버를 base_url로 설정하여 기존 OpenAI 파이썬 코드를 수정 없이 그대로 전달합니다.

import openai

client = openai.OpenAI(
    api_key="anything",               # 프록시 인증을 위한 가상 키값 설정 가능
    base_url="http://0.0.0.0:4000"    # 로컬/원격지 LiteLLM Proxy 주소 주입
)

response = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "Write a short poem"}]
)

print(response)
반응형