
liteLLM을 쓰지 않으면 아래처럼 각 벤더(OpenAI, Anthropic, Google 등)의 공식 SDK를 직접 불러와서 호출
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
response = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "안녕하세요!"}]
)
import os
from anthropic
client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
message = client.messages.create(
model="claude-4-1-opus",
messages=[{"role": "user", "content": "안녕하세요!"}]
)
import os
from google.generativeai as genai
genai.configure(api_key=os.environ.get("GENAI_API_KEY"))
model=genai.GenerativeModel("gemini-2.5-pro-latest")
response=model.generate_content("안녕하세요!")
liteLLM을 사용하면 아래와 같이 기본 호출 구조를 통일할 수 있다
from litellm import completion, acompletiong, litellm
message = [{"content": "Hello, how are you?", "role": "user"}]
response = litellm.completion(model = "gpt-4o-mini", messages=messages)
위 코드에서 모델명만 변경하여 다른 LLM으로 쉽게 전환 가능
OpenAI 모델 외에는 벤터 prefix를 붙여줘야 함. 아래는 gemini 라는 prefix를 붙임
google_api_key=os.environ.get("GOOGLE_API_KEY")
response = litellm.completion(
model="gemini/gemini-1.5-flash-latest",
messages=messages,
api_key=google_api_key
)
여러 모델을 동시에 비동기로 호출
Acompletion(): 비동기 버전의 completion 함수Asyncio.gather(): 여러 비동기 작업을 동시에 수행 gpt_task = await acompletion(
model="gpt-5",
messages=[{"role": "user", "content": "안녕하세요 GPT!"}]
)
gemini_tast = await acompletion(
model="gemini/gemini-1.5-pro-latest",
messages=[{"role": "user", "content": "안녕하세요 Gemini!"}]
)
gpt_resp, gemini_resp = await asyncio.gather(gpt_task, gemini_task)
[Client] -- sk-proxy-user1 --> [LiteLLM Proxy] -- 실제 OpenAI Key --> [OpenAI API]지원할 모델 목록, 라우팅 규칙, 폴백 정책 등 모든 동작을 하나의 yaml 파일로 관리
# config.yaml
model_list:
# OpenAI GPT-5
- model_name: gpt-5
litellm_params:
model: gpt-5
api_key: "OPENAI_KEY_1"
# Anthropic Claude (폴백 후보)
- model_name: claude-opus
litellm_params:
model: claude/claude-3-opus-20240229
api_key: "ANTHROPIC_KEY_1"
# Google Gemini
- model_name: gemini-pro
litellm_params:
model: gemini/gemini-1.5-pro-latest
api_key: "GEMINI_KEY_1"
router:
# 기본 라우팅 규칙
- model: gpt-5
strategy: round_robin
fallback_models: [claude-opus, gemini-pro] # gpt-5 장애 시 폴백 순서
max_retries: 2 # 최대 재시도 횟수
- model: gemini-pro
strategy: random
fallback_models: [claude-opus] # Gemini 장애 시 Claude로 폴백
위의 경우,