HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

Litelm: LiteLLMの機能限定版

Litelm: LiteLLM Without the Bloat (github.com)

36 pointsby kennethwolters12 コメント

要約

Litelmは、LiteLLMのコア機能であるプロバイダールーティングとメッセージ翻訳を、約2,900行のコードと2つの依存関係(openai、httpx)に凝縮したライブラリです。プロキシサーバー、キャッシュ、コスト追跡などの不要な機能を排除し、モデルルーティング、メッセージ翻訳、ストリーミング、ツール使用、埋め込みに特化しています。LiteLLMとの互換性を保ちつつ、より軽量な代替手段を提供します。

全文翻訳

litelmは、litellmのルーティングと翻訳を約2,900行のコードと2つの依存関係(openai、httpx)で実現します。 litellmはLLMコールをプロバイダー間でルーティングし、メッセージ形式を翻訳します。そのコアは、プロキシサーバー、キャッシュレイヤー、コスト追跡、およびほとんどのユーザーが決して使用しない数十の機能からなる100k+ LOCの下に埋もれています。 litelmは、モデルルーティング、メッセージ翻訳、ストリーミング、ツール使用、埋め込みのみを抽出し、それ以外のものは一切含みません。Routerクラス、プロキシ、キャッシュはありません。 インストール pip install litelm # openai + httpx pip install litelm[anthropic] # + anthropic SDK pip install litelm[bedrock] # + boto3 pip install litelm[all] # すべて 使用方法 import litelm # 基本的な補完 response = litelm.completion("openai/gpt-4o", messages=[{"role": "user", "content": "Hello!"}]) print(response.choices[0].message.content) # ストリーミング for chunk in litelm.completion("groq/llama-3.1-70b-versatile", messages=[...], stream=True): print(chunk.choices[0].delta.content or "", end="") # 埋め込み response = litelm.embedding("openai/text-embedding-3-small", input=["hello world"]) すべての関数には非同期バリアントがあります:acompletion、aembedding、aresponses、atext_completion。 APIはlitellmをミラーリングしています — 同じ関数名、同じ引数、同じ応答タイプです。 現在litellmを使用している場合、インポートをs/litellm/litelm/に変更するだけで切り替えられます。 含まれるもの / 除外されるもの litellm litelm モデルルーティング(プロバイダー/モデル → 正しいエンドポイント) ✓ ✓ メッセージ翻訳(Anthropic、Bedrock、Cloudflare、Mistral) ✓ ✓ ストリーミング + stream_chunk_builder ✓ ✓ ツール使用(関数呼び出し) ✓ ✓ 埋め込み ✓ ✓ テキスト補完 ✓ ✓ OpenAIレスポンスAPI ✓ ✓ モックレスポンス ✓ ✓ ルーター(ロードバランシング、フォールバック) ✓ ✗ プロキシサーバー ✓ ✗ キャッシュ / バジェット / コスト追跡 ✓ ✗ トークンカウント ✓ ✗ 画像生成、音声、OCR、ファインチューニング ✓ ✗ エージェント、ガードレール、スケジューラー ✓ ✗ プロバイダー "provider/model-name"構文を介して19のプロバイダーにルーティングします。任意のOpenAI互換エンドポイントはapi_baseを介して機能します。 プロバイダー 環境変数 ハンドラー 検証済み OpenAI OPENAI_API_KEY OpenAI SDK はい Anthropic ANTHROPIC_API_KEY カスタム はい Groq GROQ_API_KEY OpenAI互換 はい Mistral MISTRAL_API_KEY カスタム はい xAI XAI_API_KEY OpenAI互換 はい OpenRouter OPENROUTER_API_KEY OpenAI互換 はい Azure AZURE_API_KEY OpenAI SDK (Azure) はい Bedrock AWS_ACCESS_KEY_ID カスタム いいえ Cloudflare CLOUDFLARE_API_TOKEN カスタム いいえ Together TOGETHERAI_API_KEY OpenAI互換 いいえ Fireworks FIREWORKS_API_KEY OpenAI互換 いいえ DeepSeek DEEPSEEK_API_KEY OpenAI互換 いいえ Perplexity PERPLEXITYAI_API_KEY OpenAI互換 いいえ DeepInfra DEEPINFRA_API_TOKEN OpenAI互換 いいえ Gemini GEMINI_API_KEY OpenAI互換 いいえ Cohere COHERE_API_KEY OpenAI互換 いいえ Ollama — OpenAI互換 いいえ vLLM — OpenAI互換 いいえ LM Studio — OpenAI互換 いいえ APIキー プロバイダーの環境変数を設定します。 export OPENAI_API_KEY=sk-... export ANTHROPIC_API_KEY=sk-ant-... または直接渡します。 litelm.completion("openai/gpt-4o", messages=[...], api_key="sk-...") litelm.completion("openai/gpt-4o", messages=[...], api_base="http://localhost:8000/v1") エラーハンドリング すべてのプロバイダーエラーはlitelmの例外階層にマッピングされます。 from litelm import ContextWindowExceededError, RateLimitError, AuthenticationError try: response = litelm.completion("openai/gpt-4o", messages=messages) except ContextWindowExceededError: # プロンプトが長すぎる — 切り詰めて再試行 pass except RateLimitError: # バックオフ pass except AuthenticationError: # 無効なAPIキー pass ツール呼び出し tools = [{"type": "function", "function": { "name": "get_weather", "parameters": {"type": "object", "properties": {"city": {"type": "string"}}} }}] response = litelm.completion( "openai/gpt-4o", messages=[{"role": "user", "content": "Weather in Paris?"}], tools=tools, tool_choice="required", ) tool_call = response.choices[0].message.tool_calls[0] print(tool_call.function.name, tool_call.function.arguments) カスタム / ローカルプロバイダー 任意のOpenAI互換サーバーはapi_baseを介して機能します。 # vLLM litelm.completion("openai/my-model", messages=[...], api_base="http://localhost:8000/v1") # Ollama litelm.completion("ollama/llama3", messages=[...], api_base="http://localhost:11434/v1") # LM Studio litelm.completion("openai/local-model", messages=[...], api_base="http://localhost:1234/v1") 開発の透明性 litelmは人間が指示し、AIが支援したソフトウェアです。コードの多くはClaude CodeとClaude Opus 4.6/4.7を使用して書かれました。2026年5月14日以降に書かれたコードは、PiとGPT-5.5を通じて書かれています。互換性に関する主張は、テストとメンテナーのレビューに基づいています。AIによる作成ではありません。 アップストリームの証明 メンテナーの証明、2026年9月11日:LiteLLMのルーティング/フォーマットの変更は、649eb2dから9a715df2までレビューされました。監査では360のコアパスコミットをトリアージし、関連する可能性のある動作についてアップストリームテストを検査し、結果として生じた互換性のギャップをテストファーストで修正しました。ローカルスコープテスト:262件合格、55件スキップ。利用可能なすべてのプロバイダーライブテスト(45件)とすべてのDSPyスモークテスト(10件)も、現在の依存関係ロックで合格しました。これは、litelmが宣言したルーティング/フォーマット/DSPyサーフェスのみを証明するものであり、完全なlitellm互換性を証明するものではありません。 ステータス アルファ。262件の独自テストが合格しています。現在のスコープされたLiteLLM 9a715df2ベースラインでは、75件の合格したポートされたテストがあり、アクション可能なアサーション/ランタイムの失敗は残っていません。DSPyドロップイン検証済み — 7つの実行パスすべてがライブであることが証明されました(Predict、CoT、型付きシグネチャ、ストリーミング、埋め込み、ツール使用、マルチ出力)。 テスト uv run --extra all pytest tests/ -x --ignore=tests/ported --timeout=10 # 262非ライブテスト bash scripts/ported_contract.sh # 49の高速アップストリーム契約テスト uv run --extra all pytest tests/test_live.py -m live --timeout=30 # 45のライブプロバイダーテスト uv run pytest tests/test_dspy_smoke.py -m live --timeout=60 # 10のDSPy統合テスト ライブテストには.env.testのAPIキーが必要です。デフォルトではスキップされます。-m liveで実行してください。