LiteLLM:LLMの銀河を統合し、シームレスな開発を実現
June 04, 2025
プロジェクト概要
LiteLLMは、100を超える大規模言語モデル(LLM)APIとの連携を簡素化するために設計されたPython SDKおよびプロキシサーバー(LLMゲートウェイ)です。Bedrock、Azure、OpenAI、VertexAI、Cohere、Anthropic、Sagemaker、HuggingFace、Replicate、Groqなど、様々なLLMプロバイダーをOpenAIに似た統一されたフォーマットで利用できます。
LiteLLMは、以下のような複雑な問題を解決します。 - プロバイダー固有の「補完」「埋め込み」「画像生成」エンドポイントへの入力変換。 - 異なるLLM間での出力フォーマットの統一。 - ルーター機能を使った複数のデプロイメント(例: Azure/OpenAI)間でのリトライおよびフォールバックロジックの実装。 - LiteLLMプロキシサーバーによるプロジェクト、APIキー、モデルごとの予算およびレート制限の適用。
使用方法
LiteLLMはpipでインストールできます。
pip install litellm
基本的なチャット補完
from litellm import completion
import os
# APIキーの環境変数を設定
os.environ["OPENAI_API_KEY"] = "your-openai-key"
os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"
messages = [{ "content": "Hello, how are you?","role": "user"}]
# OpenAIの呼び出し
response = completion(model="openai/gpt-4o", messages=messages)
# Anthropicの呼び出し
response = completion(model="anthropic/claude-3-sonnet-20240229", messages=messages)
print(response)
非同期呼び出し
from litellm import acompletion
import asyncio
async def test_get_response():
user_message = "Hello, how are you?"
messages = [{"content": user_message, "role": "user"}]
response = await acompletion(model="openai/gpt-4o", messages=messages)
return response
response = asyncio.run(test_get_response())
print(response)
ストリーミングレスポンス
from litellm import completion
response = completion(model="openai/gpt-4o", messages=messages, stream=True)
for part in response:
print(part.choices[0].delta.content or "")
ロギングと可観測性
LiteLLMは、コールバックを通じて様々なロギングおよび可観測性ツール(Lunary、MLflow、Langfuse、DynamoDB、S3、Helicone、Promptlayer、Traceloop、Athina、Slack)をサポートしています。
from litellm import completion
import os
import litellm
# ロギングツールとAPIキーの環境変数を設定
os.environ["LUNARY_PUBLIC_KEY"] = "your-lunary-public-key"
os.environ["HELICONE_API_KEY"] = "your-helicone-auth-key"
os.environ["LANGFUSE_PUBLIC_KEY"] = "" # 実際のキーを使用
os.environ["LANGFUSE_SECRET_KEY"] = "" # 実際のキーを使用
os.environ["ATHINA_API_KEY"] = "your-athina-api-key"
os.environ["OPENAI_API_KEY"] = "your-openai-key"
# コールバックを設定
litellm.success_callback = ["lunary", "mlflow", "langfuse", "athina", "helicone"]
response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hi 👋 - i'm openai"}])
LiteLLMプロキシサーバー
LiteLLMプロキシサーバーを実行する方法:
- プロキシの依存関係を含めてインストールします。
pip install 'litellm[proxy]'
- プロキシを起動します。
litellm --model huggingface/bigcode/starcoder # INFO: Proxy running on http://0.0.0.0:4000
- OpenAI SDKを使用してプロキシにリクエストを送信します。
import openai # openai v1.0.0+ client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:4000") # プロキシをbase_urlに設定 response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [ { "role": "user", "content": "this is a test request, write a short poem" } ]) print(response)
主要機能
- 統一されたAPIインターフェース: OpenAIのような1つのAPIフォーマットで100以上のLLMに接続できます。
- プロバイダーサポート: Bedrock、Azure、OpenAI、VertexAI、Cohere、Anthropic、Sagemaker、HuggingFace、Replicate、Groqなど、主要なLLMプロバイダーをサポートしています。
- 統一された出力: すべてのテキストレスポンスは
['choices'][0]['message']['content']
で一貫してアクセスできます。 - ルーター(リトライ/フォールバックロジック): 複数のLLMデプロイメント間でリトライとフォールバックのメカニズムを自動的に処理します。
- ストリーミングサポート: 統合されているすべてのモデルでストリーミングレスポンスをサポートします。
- 非同期操作: パフォーマンス向上のための非同期API呼び出しを提供します。
- 可観測性: コールバックを通じて様々なロギングおよび可観測性ツール(例: Lunary、MLflow、Langfuse、Helicone)と統合します。
- LiteLLMプロキシサーバー(LLMゲートウェイ):
- コスト追跡: プロジェクトごとの支出を監視します。
- ロードバランシング: 複数のLLMデプロイメントにリクエストを分散します。
- レート制限: プロジェクト、APIキー、モデルごとにレート制限を適用します。
- キー管理: PostgreSQLデータベースと連携し、モデル、期間、メタデータに関する詳細な制御を持つプロキシキーを作成・管理します。
- Web UI: プロキシサーバーを管理するためのユーザーインターフェース(
/ui
)を提供し、予算やレート制限の設定なども可能です。
- エンタープライズ機能: 商用ユーザー向けに、カスタム統合やSLAを含む、強化されたセキュリティ、ユーザー管理、専門的なサポートを提供します。
対象ユーザー
- 開発者およびエンジニア: さまざまなLLMプロバイダーと連携するための統一されたインターフェースを求めており、コードと管理を簡素化したい方。
- AI/MLチーム: LLMへのアクセス管理、利用状況の監視、コスト管理、堅牢なリトライ/フォールバック戦略の実装に関心がある方。
- LLM搭載アプリケーションを構築する組織: AIインフラのためのレート制限、予算管理、可観測性といった機能を必要としている方。
- 研究者: 複数のLLMモデルやプロバイダーを効率的に試したい方。
プロジェクトリンク
- GitHubリポジトリ: https://github.com/BerriAI/litellm
- ドキュメント: https://docs.litellm.ai/docs/
- PyPIパッケージ: https://pypi.org/project/litellm/
アプリケーションシナリオ
- マルチLLMアプリケーションの構築: コアとなるアプリケーションロジックを変更することなく、異なるLLM(例: 創造的な文章にはGPT-4、要約にはClaude)を簡単に切り替えたり組み合わせたりできます。
- コスト最適化と予算管理: プロキシを使用して、ユーザー、プロジェクト、またはAPIキーごとに厳格なクォータやソフトな予算を設定し、予期せぬ支出を防ぎます。
- 高可用性と信頼性の確保: ルーターを利用して、LLMプロバイダーが失敗したりレート制限に達したりした場合に、代替のLLMプロバイダーやデプロイメントへの自動フォールバックを可能にします。
- LLMモデルのA/Bテスト: プロダクション環境でトラフィックを異なるモデルにシームレスにルーティングし、パフォーマンスとコストを比較します。
- 集中型LLMゲートウェイ: 組織内のすべてのLLM呼び出しに対する単一のエントリーポイントを確立し、セキュリティ、ロギング、アクセス制御を簡素化します。
- 監視と可観測性: 様々な可観測性ツールと統合することで、LLMの利用状況、パフォーマンス、コストに関する洞察を得ます。
- LLMエージェント/オーケストレーションの開発: チャット、埋め込み、画像生成など、多様なLLM機能を扱う必要があるエージェント向けに、堅牢で柔軟なバックエンドを提供します。