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)」を容易にするための保険であり、賢いアーキテクチャ設計と言えるでしょう。