使い方
extra_body.models にモデル ID の順序付きリストを置き、
extra_body.route を "fallback" に設定します。トップレベルの
model フィールドは依然として意味を持ちます——最初の試行——が、
チェーンが存在する場合 OrcaRouter はそれを優先します。
ルール
- チェーンには最大 5 モデル。超過分は黙って切り詰められます。
- 推奨: チェーン内のすべてのモデルは 同じエンドポイント種別
(すべて chat、またはすべて image) であるべきです。チャットモデルと
画像モデルを混在させてもゲートウェイはクラッシュしませんが、実際に
リクエストを処理するフォールバックは呼び出したエンドポイントと
一致する必要があります (例:
/v1/chat/completionsを呼ぶ場合、 チェーン内のチャットモデルのみ使用可能)。 - フォールバックの挙動:
- 解決不能な
orcarouter/{name}エントリ (誤名、無効化されたルーター) は黙ってスキップされます。 - 呼び出すキーがアクセスできないモデル (モデル許可リスト不一致) は黙ってスキップされます。
- 主モデルが上流で失敗したとき (5xx / 429 / ネットワークエラー)、 次のチェーンエントリが試されます。
- リクエストが失敗するのは、チェーン全エントリを使い切ったとき のみです。
- ストリーミングの注意: レスポンスの最初の 1 バイトでも クライアントに送信されると、フォールバックはもう発動できません ——上流がストリーム中に切断した場合、クライアントには切り詰め られたストリームが見えるだけで、次モデルへの透明な再試行は 起きません。
- 解決不能な
- 課金はレスポンスを実際に処理したモデルのレートで行われます ——主モデルのレートではありません。
extra_body.routeは厳密に"fallback"でなければチェーンは 発動しません。それ以外の値 (または欠如) はチェーンが無視され、 トップレベルのmodelのみが使われます。
どのモデルが処理したかを知る方法
X-Orca-Fallback-Level と X-Orca-Fallback-Model のレスポンス
ヘッダを確認してください。レスポンスヘッダ
を参照。
このパターンを使わない方が良いとき
OrcaRouter にチェーンを書かずに 自動で 最安の利用可能なモデルを 選ばせたい場合は、orcarouter/auto を
使ってください。フォールバックチェーンは、順序を明示的に制御したい
ケースのためのものです。