コードベースのどこかに pick_model.py があって、if/elseの分岐が乱立していませんか。

OrcaRouter Lite はそのファイルを削除するためのOSSサーバーです。model="auto" を渡すだけで、設定済みプロバイダーの中から要件を満たす最安モデルへ自動でルーティングします。

この記事でわかること:

  • OrcaRouter Liteがどんな問題を解決するか
  • model="auto" の仕組みと判定の軸
  • クロスプロバイダープロンプトキャッシュの仕組み
  • LiteLLM・OpenRouter・Ollamaとの違い
  • Dockerで60秒以内に起動する手順

プロバイダーが増えるほど煩雑になるモデル選択

複数のAIプロバイダーを使う開発では、リクエストごとにモデルを手動で選ぶコードが蓄積しやすい。「この呼び出しにはvision対応が要る」「このユースケースはコストを抑えたい」「OpenAIが落ちたらAnthropicへフォールバックしたい」——こうした判断をif/else分岐で書き続けると、価格改定やプロバイダーの追加のたびに修正が発生する。

OrcaRouter Liteはその判断をルーターに委譲するOSSサーバーです。

https://github.com/Continuum-AI-Corp/OrcaRouter-Lite

OpenAI互換のAPIサーバーとして動作するため、既存のSDKコードは変えずにベースURLとAPIキーを差し替えるだけで導入できます。

model=”auto” でコスト最適化を自動化する

OrcaRouter Liteの中心機能が model="auto" です。通常のモデル名の代わりに "auto" を指定すると、設定済みプロバイダーのモデルカタログからリクエストの要件を満たす最安モデルを自動で選びます。

要件の判定は3つの軸で行われます。

  • supports_tools:ファンクションコールが必要かどうか
  • supports_vision:画像入力が含まれているかどうか
  • supports_json_mode:JSON出力モードが必要かどうか
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="sk-orca-abc123...",
)
r = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "この画像に何が映っていますか?"},
        {"type": "image_url", "image_url": {"url": "data:..."}},
    ]}],
)

このリクエストには画像が含まれているため、model="auto" はvision対応モデルの中から最安を選びます。実際にどのモデルが使われたかはレスポンスヘッダー x-orca-resolved-model で確認できます。

ルーティング戦略は4種類から選択できます。balancedcheapestfastestquality の中から PUT /v1/routing で変更します。デフォルトは balanced(機能と価格のバランス)です。

モデルカタログはLiteLLMがコミュニティで管理している100以上のモデルの価格データベースから起動時に自動ロードされます。モデルリストを手動で更新する作業は不要です。

プロバイダーをまたいで機能するプロンプトキャッシュ

temperature=0 または seed を固定したリクエストは、同じペイロードで再送した場合にキャッシュから返されます。AnthropicのプロンプトキャッシングはAnthropicモデルにしか効きませんが、OrcaRouter Liteのキャッシュはプロバイダーを横断して機能します

$ curl ... -d '{"model":"auto","messages":[...],"temperature":0}' -i
HTTP/1.1 200 OK
x-orca-cache: MISS
x-orca-resolved-model: gpt-4o-mini

$ curl ...  # 同じペイロードで再送
HTTP/1.1 200 OK
x-orca-cache: HIT   ← キャッシュから返却、APIコールなし

キャッシュのバックエンドは REDIS_URL を設定するとRedis、未設定の場合はプロセス内LRUが使われます。ヒット時のコストは $0 です。

Dockerで60秒以内に起動する

git clone https://github.com/Continuum-AI-Corp/OrcaRouter-Lite.git
cd OrcaRouter-Lite
cp .env.example .env
# .envにAPIキーを追加:OPENAI_API_KEY=sk-...

docker compose up
# ✓ orcarouter-lite ready. API key: sk-orca-abc123...

起動ログに sk-orca-* 形式のAPIキーが出力されます。ベースURLは http://localhost:8000/v1 です。

http://localhost:8000/ でダッシュボードが開きます。プロバイダーの設定・ルーティング戦略の切り替え・リクエストのアナリティクス・コスト節約額の確認をブラウザ上から行えます。GET /v1/analytics/savings?baseline=gpt-4o&days=7 を叩くと「常にGPT-4を使った場合との比較コスト」を数値で取得でき、ダッシュボードにはタイルとして表示されます。

Fly.io・Render・Railwayへのデプロイにも対応しており、クラウドに置く場合はリポジトリを接続してルートディレクトリを . に指定するだけです。

ホステッドフォールバックで安全網を設ける

.envORCAROUTER_API_KEY をセットすると、ローカルキーでカバーできないモデルや、プロバイダー障害時のフォールバック先として orcarouter.ai がルーティングチェーンに加わります。「手元のキーでは届かないモデルを試したい」「プロバイダーが落ちても止まらないようにしたい」という用途に対応します。

LiteLLM・OpenRouter・Ollamaとの違い

LLM呼び出しを束ねるツールは複数ありますが、OrcaRouter Liteは「セルフホストサーバー + マネージドフォールバック」の組み合わせが他にない点です。

LiteLLMはPythonライブラリとして提供されるため、サーバーとして立てるには自前の実装が必要です。OpenRouterはクローズドソースのホスティング型サービスで、自前サーバーは立てられません。OllamaはローカルLLMの実行に特化しており、OpenAI・Anthropicといった外部プロバイダーには非対応です。

OrcaRouter Liteはこの3つのどれにも当てはまらない「セルフホスト可能なサーバー」として動作します。ダッシュボードは内蔵、PostgresもRedisも不要(SQLiteデフォルト)、BYOKで鍵は手元に保持できます。

Cursor・Aider・Continue.dev・LangChain・LlamaIndexとの統合設定ファイルも同梱されており、コーディングアシスタントのバックエンドとして使う場合はリポジトリ内の integrations/ フォルダのファイルをそのまま使えます。

まとめ

OrcaRouter Liteは、複数LLMプロバイダーの使い分けを model="auto" の一言に集約するOSSルーターです。MITライセンス・BYOK・SQLiteデフォルトと、個人プロジェクトから小規模チームまで導入コストが低い構成です。

LLMを使うコードにif/elseのモデル選択ロジックが蓄積してきたと感じているなら、OrcaRouter Liteは有力な選択肢です。