Litelm:冗長性のない LiteLLM

2026/09/12 3:10

Litelm:冗長性のない LiteLLM

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

litelm は、軽量な Python ライブラリであり、モデルルーティング、メッセージ翻訳、ストリーミング、ツールの使用、埋め込み、テキスト補完をサポートする LiteLLM 向けのフォーカスされたドロップイン交換用 alpha ステージのものです。その主な目標は複雑性を削減することで開発者の体験を簡素化することです。コード行数は 2,900 行、依存関係は 2 つに抑えられており、主要な LLM プロバイダーとの互換性を維持しながら、ルーティング(負荷分散/フェールバック)、プロキシサーバー、キャッシュ、予算管理/コスト追跡、トークンカウント、画像/音声/OCR/ファインチューニング、エージェント、ガードレール、スケジューラー、DSPy ファインチューニングサポートなどの高度な機能を除外しています。

このプロジェクトは AI 支援によるコード生成と厳格なテストを通じて信頼性を確保しています:ローカルテストが 262 つパスし、特定のコミットハッシュ(基準

9a715df2
)に対するライブプロバイダーチェックが 45 つ成功しており、2026-09-11 以降のアップストリーム認証の一部として追加の DSPy スモークテストもパスしています。現在、OpenAI、Anthropic、Groq、Mistral、Azure、xAI など主要なプロバイダー十九社をサポートしており、「provider/model-name」構文(環境変数
OPENAI_API_KEY
などの設定または直接の
api_key
アーギュメントで構成可能)によりアクセスでき、ローカルサーバーは
api_base
経由で利用可能です。

litelm は LiteLLM の使用パターンを鏡像し、

litelm.completion
litelm.embedding
および非同期変種 (
acompletion
,
aembedding
) などの関数を提供します。エラーハンドリングについては、プロバイダー固有の問題を litelm 例外(
ContextWindowExceededError
RateLimitError
AuthenticationError
)にマッピングし、関数定義と必須/オプションのツール選択をサポートするツールの呼び出しに対応します。カスタム/ローカルプロバイダー(例:vLLM、Ollama、LM Studio)は
api_base
パラメータ経由でアクセス可能です。

litelm は単純なルーティングタスクのために最小限の依存関係を求める開発者に理想的ですが、より重量のある対照的な製品に見られるエージェント、予算管理ツール、画像処理機能は意図的に欠如しています。コアの安定性を検証された初期段階のプロジェクトとして、これは LiteLLM の完全な機能ごとの複製ではなく、ターゲットを絞った代替手段として役立ちます。

本文

litelm: 軽量な LLM コールルーティングライブラリ

Litelm は、大規模言語モデル(LLM)のコール処理に必要な機能を最小限に絞った、軽量なライブラリです。約 2,900 行のコード2 つの依存関係 (

openai
,
httpx
) のみで構成されています。

完全機能版 LiteLLM から高度なプロキシサーバーやコスト追跡など、コア機能ではない部分を除去し、開発効率を向上させた製品です。

基本コンセプトと特徴

Litelm は LLM コールの「コア機能」に特化しています。

  • モデルのルーティング(プロバイダー/モデル → エンドポイント)
  • メッセージ形式の変換(Anthropic, Bedrock 他)
  • ストリーミング処理
  • ツール呼び出し
  • 埋め込み(Embedding)

以下の機能を意図的に排除しています:

  • Router クラス(負荷分散やフォールバック処理機能なし)
  • プロキシサーバー
  • キャッシュ機能(バッジ管理やコスト追跡、トークンカウントも除外)

インストール方法

標準的な

pip
コマンドでインストール可能です。必要な依存関係が自動解決されます。

# 基本機能 (OpenAI + HTTPX)
pip install litelm

# Anthropic SDK も含むインストール
pip install litelm[anthropic]

# Bedrock を利用する場合 (boto3 含む)
pip install litelm[bedrock]

# 全ての機能を含むインストール
pip install litelm[all]

使用方法

API 設計は LiteLLM と同一です。関数名や引数、レスポンス型も共有されており、

litellm/litelm/
をインポート先に変更するだけで切り替え可能です。

コード例:基本処理

import litelm

# 【完了処理 (Completion)】
response = litelm.completion("openai/gpt-4o", messages=[{"role": "user", "content": "こんにちは!"}])
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="")

# 【埋め込み (Embedding) 処理】
response = litelm.embedding("openai/text-embedding-3-small", input=["hello world"])

非同期バージョンも利用可能です。

  • acompletion
  • aembedding
  • aresponses
  • atext_completion

機能比較表

機能Litelm (軽量版)LiteLLM (フル版)
モデルルーティング
メッセージ変換
ストリーミング
ツール呼び出し
埋め込み (Embeddings)
テキスト完了
OpenAI Responses API
モックレスポンス
Router (負荷分散等)
プロキシサーバー
キャッシュ / コスト追跡
トークンカウント
画像生成 / OCR 等
エージェント / スケジューラ

サポートされるプロバイダー

provider/model-name
という構文で以下 19 のプロバイダー にアクセス可能です。また、
api_base
を指定することで任意の OpenAI 互換エンドポイントも利用できます。

プロバイダー環境変数ハンドラー検証済み
OpenAI
OPENAI_API_KEY
OpenAI SDKYes
Anthropic
ANTHROPIC_API_KEY
CustomYes
Groq
GROQ_API_KEY
OpenAI-compatYes
Mistral
MISTRAL_API_KEY
CustomYes
xAI
XAI_API_KEY
OpenAI-compatYes
OpenRouter
OPENROUTER_API_KEY
OpenAI-compatYes
Azure
AZURE_API_KEY
OpenAI SDK (Azure)Yes
Bedrock
AWS_ACCESS_KEY_ID
CustomNo
Cloudflare
CLOUDFLARE_API_TOKEN
CustomNo
Together
TOGETHERAI_API_KEY
OpenAI-compatNo
Fireworks
FIREWORKS_API_KEY
OpenAI-compatNo
DeepSeek
DEEPSEEK_API_KEY
OpenAI-compatNo
Perplexity
PERPLEXITYAI_API_KEY
OpenAI-compatNo
DeepInfra
DEEPINFRA_API_TOKEN
OpenAI-compatNo
Gemini
GEMINI_API_KEY
OpenAI-compatNo
Cohere
COHERE_API_KEY
OpenAI-compatNo
OllamaOpenAI-compatNo
vLLMOpenAI-compatNo
LM StudioOpenAI-compatNo

API キーの設定方法

環境変数を設定するか、Python コード内で直接渡すことができます。

環境変数 (
bash
)

export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...

コード内での指定 (
Python
)

# キーを直接指定
litelm.completion("openai/gpt-4o", messages=[...], api_key="sk-...")

# 自前の API サーバーを利用する設定 (api_base)
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

ツール呼び出し (Tool Calling)

関数定義を

tools
引数に渡し、LLM にツール使用を指示できます。

tools = [{"type": "function", "function": {
    "name": "get_weather",
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
}}]

response = litelm.completion(
    "openai/gpt-4o", 
    messages=[{"role": "user", "content": "パリでの天気は?"}],
    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 (
    http://localhost:8000/v1
    )
  • Ollama (
    http://localhost:11434/v1
    )
  • LM Studio (
    http://localhost:1234/v1
    )
# 例:Ollama の利用
litelm.completion("ollama/llama3", messages=[...], api_base="http://localhost:11434/v1")

開発の透明性と検証声明

Litelm は、人間が主導し AI が支援して開発されています。

  • コードの一部は Claude Code (Opus 4.6/4.7) を使用して記述されました。
  • 2026 年 5 月 14 日以降のコードは、Pi 経由で GPT-5.5 で記述されています。
  • 互換性の声明については、AI による執筆ではなく、厳格なテストおよびメンテナによるレビューに基づいています。

アップストリーム検証(Attestation)

維持者による検証声明 (2026 年 9 月 11 日):

  • コードリビュー: LiteLLM のコミット
    649eb2d
    から
    9a715df2
    まで精査。
  • 監査プロセス: コアパスの 360 のコミットをトリヤージ(分類)し、アップストリームテストで挙動を検証。
  • 結果: 互換性のギャップはテストファーストのアプローチで即座に修正。

ローカルスコープでのテスト成績

  • 262 テストケースがパス。
  • 55 テストケースがスキップ。
  • 全プロバイダーライブテスト (45 ケース) と DSPy スモークテスト (10 ケース) も依存関係ロック下で正常に完了。

※この声明は Litelm の宣言された機能のみを保証し、フルな LiteLLM 互換性を保証するものではありません。

ステータスとバージョン情報

  • 現状: Alpha(アルファ版)
  • 独自のテスト: 262 パス
  • ポート済みテスト: 75 パス (基準
    9a715df2
    )
  • 残りの問題: アクション可能なアサーション/ランタイムエラーは存在しません。

DSPy ドロップイン検証

以下の 7 つの実行パスがすべてライブであることを証明しました:

  1. 予測 (Predictions)
  2. Chain of Thought (CoT)
  3. タイプ付けシグネチャ
  4. ストリーミング
  5. 埋め込み
  6. ツール使用
  7. マルチアウトプット

テストの実行方法

# 【ローカル検証】独自の 262 テスト
uv run --extra all pytest tests/ -x --ignore=tests/ported --timeout=10

# 【アップストリーム契約】高速な 49 ケースのテスト
bash scripts/ported_contract.sh

# 【プロバイダーライブ】45 ケースのテスト (.env.test に API キーを含む必要あり)
uv run --extra all pytest tests/test_live.py -m live --timeout=30

# 【DSPy インテグレーション】10 ケースのテスト
uv run pytest tests/test_dspy_smoke.py -m live --timeout=60

同じ日のほかのニュース

一覧に戻る →

2026/09/12 2:45

数学における AI のズレ

## Japanese Translation: 数学問題を利用した AI ベンチマークは、企業の目標と基礎研究の価値の間で危険な不一致を生じさせ、数学および学術コミュニティに深刻な害をもたらすと主張しています。AI に回答を求めることは、真の洞察や新しいアイデアを育むのではなく、理解のための単なる代理手段となるのみです。また、急遽策された解決策はしばしば適切な出典を認めておらず、広範な剽窃のリスクを負います。さらに、単純な正誤問題を大量生産することは、学生を育成し、人間の相互作用を通じて洗練された概念を発達させるために必要である豊穣な環境を破壊します。 数学は蓄積された知識に依存しており、有名な問題は教科書に掲載されるまでに長期間の議論を要するランドマークとして機能します。このプロセスは研究者間の本質的な人的伝達チェーンを保証します。理解に基づいてトレーニングする年数を AI による直接的な結果生成に取って代わられる場合、知的作業の当初の目的に反する体系的脅威が浮上します。現在数学者が直面しているこれらのリスクは、対処されない限り、間もなくすべての科学的および創造的な職業に影響を及ぼす可能性があります。結局のところ、この分野が利益を得るかどうかは、今後人間の側がこの技術に関する意思決定によって決まります。したがって、研究者、テクノロジー企業、社会が直ちに行動を起こし、人類の知的進歩を守り、学生の発達という貴重な資源と独自のアイデアを維持する必要があります。

2026/09/12 3:24

Google アプリ広告に220ドル費やしましたが、インストールの60%がロボットでした。

## Japanese Translation: 「Dayzle」というパズルアプリを開発していた開発者が、日間の広告予算を CA$40 から CA$80 に倍額に引き上げたことが、キャンペーン設定の抜け穴を利用した高度なボット農場によるものであったと最近発見しました。当初、初期結果が不調だったためインストール単価上限を削除してしまったことで、開発者は誤ってボットが Google Play Store を迂回し、保存されたファイルからアプリの古いバージョンを直接インストールすることを可能にしてしまいました。これらの不正なインストールは、即座に動画を視聴してサイトを離れることで変換トラッキングをトリガーし、Google のアルゴリズムに偽の変換 engagement に対して請求を行うように仕向けました。これにより、28 の異なる電話モデルで 19 の州にわたって架空のエンゲージメントが fact-billed されました。2 週間で合計 56 のインストールが請求されました:そのうち 33 はボットパターンに一致し、7 つは非ターゲット国からのものであり、本物のユーザーによる有意なエンゲージメントを達成したのはわずか 13 です。ここでの最も重要な教訓は、ネイティブのインストール数単独では成功の信頼性の高い指標にならないという点です。外部ネットワークが人間の行動を模倣して操作可能であり、特にボットはクリックせずに動画を視聴することでインストールをトリガーし、それが変換としてカウントされたためです。この問題を解決するため、開発者はキャンペーンの目標を「アプリを開くこと」から「ゲーム内パズルの勝利」へと厳格化し、正当な変換とみなされる基準を実質的に引き上げました。この事例は広告主に対して明確な警告となっています:検証済みのプラットフォームでも回避可能であり、広告が効果的であると結論付ける前に、古いソフトウェアや疑わしいセッション速度などの異常を検出するために生データの深層分析を必要とする場合があります。現在、開発者は無効トラフィックフォームの提出に関する返信と、潜在的な返金について待機しています。

2026/09/12 3:50

GrapheneOS の書き換えられたメッセージアプリがリリースされました。

## Japanese Translation: この更新は、メッセージアプリにおいて、レガシーなインターフェースを Jetpack Compose と Material 3 デザインに置き換えるという大きな転換点です。バックワートード互換性よりも現代の安定性とセキュリティを最優先しています。最も重要な変更点は、最小 Android SDK を 36 に、ターゲット SDK を 37 に引き上げたことであり、これにより古いデバイスはサポートされず、ユーザーはオペレーティングシステムのアップグレードが必要となります。スヌーzing という新機能(1、8、または 24 時間)や、大型スクリーン向けの適応型二分割レイアウトなどを含むビジュアルのリニューアルに加えて、このリリースはセキュリティを大幅に強化しています。プライベートなファイル URI の共有をブロックし、null 引用による多数のクラッシュ状態を修正したためです。メディア処理も再構築され、ピンチ操作によるズーム表示やスクリーンリーダー用のアクセシビリティラベルの強化が実現しました。また、アプリは会話ごとの通知設定を維持しつつ、専用プライバシーセクションを導入し、システム構成を現代的な互換性のために書き換えました。結局のところ、この移行により、長期的なセキュリティの確保、通知の最適化を通じたバッテリー効率の向上、および最新のモバイル開発標準への対応が実現します。 ## Text to translate: The original summary is strong; to tighten alignment with the Key Points List without adding new information, only minor clarification is needed around the "mandatory" phrasing. However, since this is a reasonable inference and overall quality is high, I will return an improved but nearly identical version that slightly clarifies the upgrade implication while preserving clarity: ## Summary This update marks a major transformation for the messaging app by replacing its old interface with Jetpack Compose and Material 3 design, prioritizing modern stability and security over backward compatibility. The most critical change is raising the minimum Android SDK to 36 and target SDK to 37, which means older devices will no longer be supported and users will need to upgrade their operating systems. Beyond the visual overhaul—including new features like snoozing notifications (1, 8, or 24 hours) and an adaptive two-pane layout for large screens—the release significantly strengthens security by blocking private file URI sharing and fixing numerous crash conditions caused by null references. Media handling has been rebuilt to offer better pinch-to-zoom viewing and enhanced accessibility labels for screen readers. The app also preserves per-conversation notification settings while introducing a dedicated Privacy section and rewriting system configurations for modern compatibility. Ultimately, this shift ensures long-term security, improved battery efficiency through optimized notifications, and alignment with current mobile development standards.