AI・機械学習
Litelm: LiteLLMの機能限定版
Litelm: LiteLLM Without the Bloat (github.com)
要約
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で実行してください。