コンテンツにスキップ

サーキットブレーカーとフェイルオーバー

Claudex には各プロバイダープロファイル向けの組み込みサーキットブレーカーが含まれており、障害が検出された際はバックアッププロバイダーへ自動的にフェイルオーバーします。

success
┌──────────────┐
│ │
▼ failure │
Closed ────────► Open
▲ │
│ timeout │
│ expired ▼
└─────────── HalfOpen
failure → back to Open
状態動作
Closed通常動作。リクエストは通過します。失敗がカウントされます。
Openリクエストがブロックされます。バックアッププロバイダーへのフェイルオーバーをトリガーします。
HalfOpenリカバリタイムアウト後、1 つのプローブリクエストが通過を許可されます。成功すると Closed へ、失敗すると Open に戻ります。
パラメータ
失敗しきい値3 回連続の失敗
リカバリタイムアウト30 秒

自動フェイルオーバーを有効にするには、プロファイルにバックアッププロバイダーを定義します:

[[profiles]]
name = "grok"
provider_type = "OpenAICompatible"
base_url = "https://api.x.ai/v1"
api_key = "xai-..."
default_model = "grok-3-beta"
backup_providers = ["deepseek", "chatgpt"] # フェイルオーバーチェーン

grok が 3 回連続して失敗した場合:

  1. grok のサーキットブレーカーがオープンになる
  2. deepseek でリクエストがリトライされる
  3. deepseek も失敗した場合は chatgpt を試みる
  4. 各バックアッププロバイダーは独立したサーキットブレーカーを持つ

OAuth プロファイルでは、HTTP 401 レスポンスに対して特別な処理が行われます:

  1. プロキシが現在の OAuth トークンを無効化
  2. クレデンシャルチェーンから新しいトークンの読み込みを試行
  3. 新しいトークンでリクエストをリトライ
  4. リトライも失敗した場合のみサーキットブレーカーの失敗としてカウント

これにより、一時的なトークン期限切れによる不要なフェイルオーバーを防止します。

バックグラウンドのヘルスチェッカーが約 30 秒ごとに実行され、有効なすべてのプロファイルに軽量なプローブリクエストを送信します。ヘルスステータスは TUI ダッシュボードにカラーコーディングで表示されます:

  • 緑: 正常
  • 黄: 低下(最近の失敗あり)
  • 赤: サーキットブレーカーがオープン