メインコンテンツへスキップ
ARouter はモデルの可用性、プロバイダーの健全性、コスト効率に基づいて、各リクエストを最適なアップストリームプロバイダーに自動的にルーティングします。ほとんどのユースケースでは、設定なしで自動的に行われます。 高度な制御が必要な場合は、リクエストボディに provider オブジェクトを渡して、ルーティング決定のカスタマイズができます。

provider オブジェクト

任意の /v1/chat/completions リクエストに provider オブジェクトを含めて、ルーティングのデフォルトをオーバーライドします:
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello!" }],
  "provider": {
    "sort": "throughput",
    "allow_fallbacks": true
  }
}

フィールドリファレンス(全項目)

フィールドデフォルト説明
orderstring[]順番に試すプロバイダースラッグのリスト。例:["openai", "azure"]
allow_fallbacksbooleantrueプライマリが利用不可の場合にバックアッププロバイダーを許可するか
require_parametersbooleanfalseリクエスト内の全パラメータをサポートするプロバイダーのみを使用
data_collection"allow" | "deny""allow"リクエストデータを保存する可能性のあるプロバイダーの使用を制御
zdrbooleanZero Data Retention エンドポイントのみにルーティングを制限
onlystring[]このリクエストで許可するプロバイダースラッグのリスト
ignorestring[]このリクエストでスキップするプロバイダースラッグのリスト
quantizationsstring[]量子化レベルでフィルタリング。例:["int4", "int8"]
sortstring | object"price""throughput""latency" でプロバイダーをソート
preferred_min_throughputnumber | object優先する最低スループット(tokens/秒)
preferred_max_latencynumber | object優先する最大レイテンシー(秒)
max_priceobjectトークンあたりの支払い上限価格

デフォルト戦略:コストベースの負荷分散

デフォルトでは、ARouter はコストを優先しながら、正常なプロバイダー間でリクエストを負荷分散します。アルゴリズム:
  1. 過去30秒間に重大な障害があったプロバイダーを除外
  2. 安定したプロバイダーの中で、価格の逆数の二乗で重み付けして選択
  3. 残りのプロバイダーを自動フォールバックとして使用
: プロバイダーAが1/Mトークン、プロバイダーB1/Mトークン、プロバイダーBが2/M、プロバイダーCが$3/Mの場合:
  • プロバイダーAはプロバイダーCより9倍選ばれやすい(逆数二乗重み付け)
  • プロバイダーAが失敗した場合、次にプロバイダーCを試みる
  • プロバイダーB(最近劣化)は最後に試みる
sort または order を設定すると、負荷分散は無効になり、プロバイダーは厳密な順序で試みられます。

プロバイダーソート

sort フィールドを使用してプロバイダー属性に明示的な優先度を付けます。負荷分散は無効になり、プロバイダーは順番に試みられます。 利用可能なソート値:
  • "price" — 最低トークンコストを優先
  • "throughput" — 最高 tokens/秒を優先
  • "latency" — 最低 Time-to-first-token を優先
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.arouter.ai/v1",
  apiKey: "lr_live_xxxx",
});

const response = await client.chat.completions.create({
  model: "openai/gpt-5.4",
  messages: [{ role: "user", content: "Hello" }],
  // @ts-ignore
  provider: { sort: "throughput" },
});

:nitro:floor ショートカット

モデルスラッグにサフィックスを追加してソートの省略記法として使用:
サフィックス同等の設定
:nitroprovider.sort = "throughput"
:floorprovider.sort = "price"
{"model": "openai/gpt-5.4:nitro"}  // スループットでソート
{"model": "openai/gpt-5.4:floor"}  // 価格でソート

パーティションを使った高度なソート

候補モデルリスト(models[])を使用する場合、sort フィールドは partition オプションを持つオブジェクトにして、エンドポイントがモデルをまたいでどのようにソートされるかを制御できます。
フィールドデフォルト説明
sort.bystring"price""throughput""latency"
sort.partitionstring"model""model"(プライマリモデルを最初に試みる)または "none"(グローバルにソート)
デフォルト(partition: "model")では、エンドポイントはモデルごとにグループ化されます——最初のモデルのエンドポイントは常に2番目のモデルより先に試みられます。partition: "none" を設定すると、このグループ化が解除され、全候補モデルにわたるグローバルソートが可能になります。

ユースケース1:複数モデルにわたる最高スループットへのルーティング

複数の許容可能なモデルがあり、現在最も速いものを使いたい場合:
const response = await client.chat.completions.create({
  // @ts-ignore
  models: [
    "anthropic/claude-sonnet-4.6",
    "openai/gpt-5.4",
    "google/gemini-2.5-flash",
  ],
  messages: [{ role: "user", content: "Hello" }],
  provider: {
    sort: { by: "throughput", partition: "none" },
  },
});

ユースケース2:パフォーマンス要件を満たす最安値モデル

partition: "none" とパフォーマンス閾値を組み合わせて、SLAを満たしながら最低コストのオプションを見つける:
const response = await client.chat.completions.create({
  // @ts-ignore
  models: [
    "anthropic/claude-sonnet-4.6",
    "openai/gpt-5.4",
    "google/gemini-2.5-flash",
  ],
  messages: [{ role: "user", content: "Hello" }],
  provider: {
    sort: { by: "price", partition: "none" },
    preferred_min_throughput: { p90: 50 },
  },
});

パフォーマンス閾値

プロバイダーをフィルタリングするための最低スループットまたは最大レイテンシーの設定。閾値を満たさないプロバイダーは優先度が下げられます(末尾に移動)が、完全に除外されるわけではありません。
フィールド説明
preferred_min_throughput最低 tokens/秒。数値(p50 に適用)またはパーセンタイルキーを持つオブジェクト
preferred_max_latency最大 Time-to-first-token(秒)。数値またはパーセンタイルキーを持つオブジェクト

パーセンタイルの仕組み

ARouter はローリング5分間ウィンドウでプロバイダーパフォーマンスを追跡します:
パーセンタイル意味
p50リクエストの50%がこの値より良い(中央値)
p75リクエストの75%がこの値より良い
p90リクエストの90%がこの値より良い
p99リクエストの99%がこの値より良い
高いパーセンタイル(p90/p99)は最悪ケースのパフォーマンスに対する信頼度を高めます。指定した全パーセンタイルカットオフを満たすプロバイダーが優先グループに入ります。
{
  "provider": {
    "preferred_min_throughput": {
      "p50": 100,
      "p90": 50
    },
    "preferred_max_latency": {
      "p99": 3.0
    }
  }
}
preferred_min_throughputpreferred_max_latency はソフトな設定です——リクエストの処理を阻害することはありません。これは max_price とは異なります。max_price はハード制限です。

特定プロバイダーの順序指定

order を使用して、試みるプロバイダーとその順序を指定します。order が設定されると負荷分散は無効になります。
const response = await client.chat.completions.create({
  model: "openai/gpt-5.4",
  messages: [{ role: "user", content: "Hello" }],
  // @ts-ignore
  provider: {
    order: ["openai", "azure"],
  },
});

特定プロバイダーのみを許可

only を使用してルーティングを特定のプロバイダーセットに制限:
{
  "model": "meta-llama/llama-4-maverick",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "only": ["groq", "together"]
  }
}

プロバイダーの無視

ignore を使用してこのリクエストの特定プロバイダーをスキップ:
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "ignore": ["azure"]
  }
}

フォールバックの無効化

デフォルトでは、プライマリプロバイダーが利用不可の場合、ARouter は代替プロバイダーにフォールバックします。allow_fallbacks: false を設定すると、正確なプロバイダーを要求します:
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "order": ["openai"],
    "allow_fallbacks": false
  }
}
指定したプロバイダーが利用不可の場合、ARouter は他の場所にルーティングする代わりに 503 エラーを返します。

パラメータサポートの要求

require_parameters: true を設定すると、リクエスト内の全パラメータをサポートするプロバイダーのみにルーティングします。デフォルトでは、ARouter はサポートされていないパラメータを無視するプロバイダーにルーティングする場合があります。
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello" }],
  "tools": [...],
  "provider": {
    "require_parameters": true
  }
}

量子化フィルタリング

プロバイダーが提供するモデルの量子化レベルでフィルタリングします。特定の精度/パフォーマンストレードオフが必要な場合に便利です:
{
  "model": "meta-llama/llama-4-maverick",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "quantizations": ["fp16", "bf16"]
  }
}
一般的な量子化値:"fp32""fp16""bf16""int8""int4"

データ収集ポリシー

ARouter がリクエストデータを保存する可能性のあるプロバイダーにルーティングするかどうかを制御:
動作
"allow"(デフォルト)データを保存する可能性があるプロバイダーを含む、あらゆるプロバイダーにルーティング
"deny"リクエスト/レスポンスデータを保存しないプロバイダーのみにルーティング
{
  "model": "anthropic/claude-sonnet-4.6",
  "messages": [{ "role": "user", "content": "Sensitive content" }],
  "provider": {
    "data_collection": "deny"
  }
}

Zero Data Retention(ZDR)

最大限のプライバシーのために、Zero Data Retention 保証のあるプロバイダーのみにルーティングを制限:
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "zdr": true
  }
}
ZDR プロバイダーはリクエストデータをログ記録、保存、またはトレーニングに使用しません。詳細はデータ収集を参照してください。

最大価格

トークンあたりの支払い上限を設定します。価格要件を満たすプロバイダーがない場合、リクエストは高価なプロバイダーにルーティングされる代わりに失敗します:
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "max_price": {
      "prompt": "0.000010",
      "completion": "0.000030"
    }
  }
}
パフォーマンス閾値とは異なり、max_price はハード制限です。価格要件を満たすプロバイダーがない場合、リクエストはエラーを返します。

プロバイダーの健全性と可用性

ARouter はサーキットブレーカーメカニズムを使用してプロバイダーの健全性を継続的に追跡します:
ステータス動作
正常プロバイダーはリクエストを通常通り受け付けている
劣化最近の障害が検出された;異なるキーでリクエストが再試行される場合がある
利用不可全てのキーがサーキットブレーク済み;ARouter は 503 を返す
これは完全に透明です——アプリケーションはプロバイダーレベルの再試行ロジックを実装する必要はありません。

モデルプレフィックスによるプロバイダーの指定

どのプロバイダーがリクエストを処理するかを制御する主な方法は provider/model フォーマットです:
{
  "model": "openai/gpt-5.4",
  "messages": [{ "role": "user", "content": "Hello!" }]
}
サポートされるフォーマットの完全なリストはモデルルーティングを参照してください。

ネイティブプロバイダープロキシ

完全な制御のために、プロバイダープロキシエンドポイント /{provider}/{path} を使用して、ARouter のモデルルーティング層を完全にバイパスします:
# OpenAI に直接
curl https://api.arouter.ai/openai/v1/chat/completions \
  -H "Authorization: Bearer lr_live_xxxx" \
  -d '{"model": "gpt-5.4", "messages": [...]}'

# Anthropic に直接
curl https://api.arouter.ai/anthropic/v1/messages \
  -H "Authorization: Bearer lr_live_xxxx" \
  -d '{"model": "claude-sonnet-4.6", "messages": [...]}'
完全なリファレンスはプロバイダープロキシを参照してください。

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

プロバイダープレフィックスモデル例
OpenAIopenaiopenai/gpt-5.4
Anthropicanthropicanthropic/claude-sonnet-4.6
Googlegooglegoogle/gemini-2.5-flash
DeepSeekdeepseekdeepseek/deepseek-v3.2
xAIx-aix-ai/grok-4.20
Mistralmistralaimistralai/mistral-large-2512
Metameta-llamameta-llama/llama-4-maverick
Qwenqwenqwen/qwen3-235b
MiniMaxminimaxminimax/minimax-m2.7
Groqgroqgroq/llama-3.3-70b-versatile
Kimimoonshotaimoonshotai/kimi-k2.5
Dashscopedashscopedashscope/qwen-max
機能の完全なリストはプロバイダーを参照してください。