地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【LiteLLM】Proxyでfallbackの設定を使う

docs.litellm.ai

model_list:
  - model_name: zephyr-beta
    litellm_params:
      model: huggingface/HuggingFaceH4/zephyr-7b-beta
      api_base: http://0.0.0.0:8001
      rpm: 60
      tpm: 1000
  - model_name: gpt-3.5-turbo
    litellm_params:
      model: gpt-3.5-turbo
      api_key: <my-openai-key>
      rpm: 200

litellm_settings:
  num_retries: 3 # 各model_nameに対して3回リトライ
  request_timeout: 10 # 10秒を超えた場合タイムアウト
  fallbacks:
    - zephyr-beta: # zephyr-betaでエラーが発生した場合
        - gpt-3.5-turbo # gpt-3.5-turboにフォールバック
  context_window_fallbacks: # コンテキストウィンドウのエラーが発生した場合のフォールバック
    - zephyr-beta:
        - gpt-3.5-turbo-16k
    - gpt-3.5-turbo:
        - gpt-3.5-turbo-16k
  allowed_fails: 3 # 1分間に3回以上失敗した場合、モデルをクールダウン

この設定例では、以下のフォールバック設定が行われています。

  • fallbacks: zephyr-beta モデルへのリクエストが失敗した場合(num_retries 回のリトライ後も)、gpt-3.5-turbo モデルに自動的にフォールバックします。
  • context_window_fallbacks: zephyr-beta や gpt-3.5-turbo モデルでコンテキストウィンドウに関するエラーが発生した場合、それぞれ指定されたより大きなコンテキストウィンドウを持つモデル(ここでは gpt-3.5-turbo-16k を想定)にフォールバックします。

このように、config.yamllitellm_settings 内の fallbacks および context_window_fallbacks を設定することで、LiteLLM Proxyサーバーにおける具体的なフォールバックの動作を定義できます。また、ソースには、リトライ回数 (num_retries) やリクエスタイムアウト (request_timeout)、許容される失敗回数 (allowed_fails) など、フォールバックに関連する設定も記述されています。これらの設定と組み合わせることで、より柔軟なエラーハンドリングが可能になります。なお、フォールバックの設定は、model_list で定義された model_name をキーとして指定します。

上記の設定を config.yaml に記述し、以下のコマンドでLiteLLM Proxyサーバーを起動することで、フォールバック機能が有効になります。

litellm --config ./config.yaml