공급자마다 에러 형식이 다르지만, LiteLLM은 모든 에러를 OpenAI 예외 타입으로 매핑한다. 덕분에 기존 try/except 코드를 그대로 쓸 수 있고, num_retries로 일시적 오류를 자동 재시도한다.
이 강의 목표는 주요 예외 타입을 알고, 재시도·타임아웃·폴백을 조합해 견고한 호출을 만드는 것이다.
1. 통합 예외 타입
| 예외 | 상황 |
|---|---|
AuthenticationError |
키 오류(401) |
RateLimitError |
호출 한도 초과(429) |
Timeout |
응답 지연 |
APIError / ServiceUnavailableError |
서버 오류(5xx) |
ContextWindowExceededError |
토큰 한도 초과 |
ContentPolicyViolationError |
정책 위반 |
2. 재시도 · 타임아웃
from litellm import completion
resp = completion(
model="openai/gpt-4o",
messages=msgs,
num_retries=3, # 실패 시 지수 백오프로 3회 재시도
timeout=30, # 30초 초과 시 Timeout
)
3. 예외별 처리 · 폴백
from litellm import completion
from litellm.exceptions import RateLimitError, ContextWindowExceededError
try:
resp = completion(model="openai/gpt-4o", messages=msgs, num_retries=2)
except RateLimitError:
resp = completion(model="anthropic/claude-sonnet-4", messages=msgs)
except ContextWindowExceededError:
resp = completion(model="openai/gpt-4o", messages=msgs[-4:]) # 이력 축소
핵심 명령·용어
| 이름 | 뜻 |
|---|---|
num_retries |
자동 재시도 횟수(지수 백오프) |
timeout |
응답 대기 상한(초) |
litellm.exceptions |
OpenAI 호환 예외 모듈 |
| 폴백 | 실패 시 다른 모델로 전환 |
예제
import litellm
litellm.drop_params = True # 공급자가 지원 안 하는 파라미터는 자동 제거
resp = completion(model="anthropic/claude-sonnet-4",
messages=msgs, top_logprobs=5) # 미지원이어도 에러 안 남
해설) drop_params=True는 특정 공급자가 지원하지 않는 인자를 조용히 떼어내 BadRequestError를 예방한다. 멀티공급자 코드에서 유용하다.
댓글 0
댓글은 운영자만 작성할 수 있어요.