Skip to main content

冗長性とフェイルオーバー

Completions API は、プロバイダー呼び出しが失敗したときに、あるモデルから別のモデルに自動的にフェイルオーバーできます。順序付けされたチェーン (プライマリ モデルと最大 2 つのフォールバック) を定義すると、SecureAI はいずれかが成功するまで順番にそれぞれを試行します。これにより、独自のコードに再試行ロジックを追加しなくても、プロバイダーの停止、レート制限、タイムアウトに対する回復力が得られます。 冗長性は、クラシック /chat/completions エンドポイントと OpenAI 互換 /v1/chat/completions エンドポイントの両方で利用できます。

チェーンの定義方法

チェーンをリクエストするには、優先順位に従って 3 つの方法があります。 チェーンには 最大 3 つの異なるモデルを含めることができます。重複するエントリは折りたたまれます。各チェーン エントリは、プレーンなモデル文字列または試行ごとのタイムアウトを持つオブジェクトにすることができます。
同じリクエスト内で modelsfallback_models を組み合わせることはできません。

チェーン全体のオプション (redundancy)

試行ごとのタイムアウト (models[] エントリ内で設定) は、その試行のチェーン全体の値をオーバーライドします。

フェイルオーバートリガー

失敗した試行は、次のいずれかの理由に分類されます。フェイルオーバーは、理由が on リストに含まれており、** チェーン内に別のモデルが残っている場合にのみ発生します。 再試行不可能な障害 (意図的なゲートウェイ レート制限/トークン予算ブロック、オープン サーキット ブレーカー、ポリシー/検証の拒否など) がフェイルオーバーをトリガーすることはありません。フォールバックも同様に失敗するか、ブロックが意図的に行われます。

ストリーミング動作

ストリーミング リクエストの場合、フェイルオーバーは最初のコンテンツ トークンが到着する前にのみ可能です。 SecureAI は、最初のトークン (first_token_timeout_ms によって制限される) までアップストリーム ストリームをプルします。それが失敗した場合は、次のモデルにフェイルオーバーします。最初のトークンがクライアントに送信されると、サービス提供モデルはロックインされます。その後のストリーム途中の中断は、フェイルオーバーではなく error フレームとして表面化します。

得られるもの

マルチモデル チェーンが実行されると、応答には フェイルオーバー レポートが含まれます。
  • クラシック エンドポイント: metadata.failover
  • OpenAI 互換エンドポイント: secureai.failover
metadata.served_model / secureai.served_model はどのモデルが実際に応答したかを示し、requested_model はチェーン内の最初のモデルです。単一モデル (レガシー) リクエストでは、フェイルオーバー レポートは生成されません。

チェーン全体が失敗した場合

すべての試行が失敗した場合、リクエストはすべての試行をリストしたエラーを返します。
  • 429 すべての失敗がレート制限だった場合。
  • 502 それ以外の場合。
OpenAI 互換エンドポイントでは、同じ条件により code: "all_models_failed" の OpenAI エラー エンベロープが返されます。

管理者のデフォルト (failoverDefaults)

管理者はデフォルトのチェーンを API キーに添付できるため、呼び出し元はリクエストごとにチェーンを送信せずにフェイルオーバーを取得できます。 [管理] → [API キー] で構成すると、ペイロードが検証され、クランプされます。
  • models: 最大 3 つの異なるモデル名。
  • timeout_ms: 1000 ~ 300000。
  • first_token_timeout_ms: 500 ~ 60000。
  • on: 4 つのトリガーの任意のサブセット。
呼び出し元が model: "a" のみを送信し、failoverDefaults.modelsa が存在する場合、チェーンは a の位置から開始され、残りのデフォルトまで継続します。

セキュリティと試行ごとの課金

すべての試行は、SMLTP ラッパーを介した完全な独立した呼び出しです。ポリシーの適用、出力/常駐ガバナンス、および署名付き資格トークンのミントはすべて試行ごとに再実行され、その試行のモデルと正確な要求バイトにバインドされます。請求には、実際に応答を提供したモデルが反映されます。各フェイルオーバーは、api:model_failover セキュリティ イベント (サブスクライブされた webhooks に配信される) と監査ログ エントリも生成します。

関連