LiteLLMで複数のLLM APIを統一フォーマットで扱う方法

AIエンジニアの不満No.1は、「各社のAPI仕様が微妙に違うこと」です。

  • OpenAI: client.chat.completions.create
  • Anthropic: client.messages.create
  • Google Vertex AI: model.generate_content

新しいモデルが出るたびにコードを書き換えるのは非効率極まりないですよね。この問題を解決するのが、OSSライブラリの LiteLLM です。

LiteLLMとは?

あらゆるLLMプロバイダー(100以上に対応)へのリクエストを、OpenAI互換のフォーマット(入力・出力)に変換してくれるラッパーライブラリです。

導入と基本的な使い方

pip install litellm
from litellm import completion

# OpenAIの場合
response = completion(model="gpt-4-turbo", messages=[{"role": "user", "content": "Hello"}])

# Claudeの場合(コードは全く同じ!)
response = completion(model="claude-3-opus-20240229", messages=[{"role": "user", "content": "Hello"}])

# 出力形式も統一されている
print(response.choices[0].message.content)

強力な機能:Router(ロードバランシング)

LiteLLMの真骨頂は、複数のAPIキーやモデルを束ねて、自動的に振り分けるRouter機能です。

1. フォールバック(Fallback)

メインのAPI(例:GPT-4)がエラーやレート制限で落ちた時に、自動的にバックアップのAPI(例:Azure OpenAIやClaude)にリクエストを投げ直してくれます。

2. コスト管理と予算制限

プロジェクトごと、ユーザーごとにAPI利用額の上限を設定できます。「今月はもう予算オーバーだからリクエストを拒否する」といった制御が、コードを書かずに設定ファイル(config.yaml)だけで実現できます。

Proxyサーバーとしての利用

LiteLLMはPythonライブラリとしてだけでなく、独立したプロキシサーバーとしても起動できます。

litellm --model gpt-3.5-turbo

こうすると、社内の全アプリケーションからのリクエストをこのプロキシに向けさせることで、ログの一元管理やキャッシュ機構(Redisなど)の導入が容易になります。

まとめ:ロックインを防ぐ

特定のベンダー(OpenAIなど)に依存しすぎると、価格改定やサービス停止のリスクを負うことになります。LiteLLMを噛ませておくことは、将来的な「モデルの乗り換え(Migration)」を容易にするための保険であり、賢いアーキテクチャ設計と言えるでしょう。