모델 Fallbacks

모델 Fallbacks (Provider Failover) w/ LiteLLM

LiteLLM을 사용해 3개의 LLM 제공자(OpenAI, Anthropic, Azure)에 걸쳐 모델 fallbacks(제공자 장애 조치)를 구현하는 방법을 알아봐요.

1. LiteLLM 설치

uv add litellm

2. 기본 Fallbacks 코드

import litellmfrom litellm import embedding, completion# set ENV variablesos.environ["OPENAI_API_KEY"] = ""os.environ["ANTHROPIC_API_KEY"] = ""os.environ["AZURE_API_KEY"] = ""os.environ["AZURE_API_BASE"] = ""os.environ["AZURE_API_VERSION"] = ""model_fallback_list = ["claude-sonnet-5", "gpt-5.6-luna", "chatgpt-test"]user_message = "Hello, how are you?"messages = [{ "content": user_message,"role": "user"}]for model in model_fallback_list:  try:      response = completion(model=model, messages=messages)  except Exception as e:      print(f"error occurred: {traceback.format_exc()}")

3. 컨텍스트 윈도우 예외

LiteLLM은 Context Window Exceeded 오류에 대해 InvalidRequestError 클래스의 하위 클래스를 제공합니다(문서).

컨텍스트 윈도우 예외에 기반한 모델 fallbacks를 구현해 보세요.

LiteLLM은 또한 get_max_tokens() 함수를 노출하는데, 이를 사용해 초과된 컨텍스트 윈도우 한도를 식별할 수 있어요.

아래 fallback 목록의 모델 ID는 예시이며 컨텍스트 윈도우 크기 때문에 유지된 것입니다.

import litellmfrom litellm import completion, ContextWindowExceededError, get_max_tokens# set ENV variablesos.environ["OPENAI_API_KEY"] = ""os.environ["COHERE_API_KEY"] = ""os.environ["ANTHROPIC_API_KEY"] = ""os.environ["AZURE_API_KEY"] = ""os.environ["AZURE_API_BASE"] = ""os.environ["AZURE_API_VERSION"] = ""context_window_fallback_list = [{"model":"gpt-3.5-turbo-16k", "max_tokens": 16385}, {"model":"gpt-4-32k", "max_tokens": 32768}, {"model": "claude-instant-1", "max_tokens":100000}]user_message = "Hello, how are you?"messages = [{ "content": user_message,"role": "user"}]initial_model = "command-nightly"try:    response = completion(model=initial_model, messages=messages)except ContextWindowExceededError as e:    model_max_tokens = get_max_tokens(model)    for model in context_window_fallback_list:        if model_max_tokens ...

더 알아보기 (Learn more)