LogoToRouterドキュメント
LogoToRouterドキュメント
ホームToRouter とは5 分で始めるコアコンセプト
よくある HTTP エラーレートリミット超過 — 対処法キーがブロックまたは失効した上流プロバイダエラーとフェイルオーバー本番運用ベストプラクティス
トラブルシューティング

本番運用ベストプラクティス

ToRouter 連携を本番で「退屈」に保つための 8 つの習慣。

ToRouter を本番で動かすための短いチェックリストです。どれも特別なものではなく、初めてのインシデントの前にやっておけばよかったと誰もが思うものです。

1. 環境ごとに 1 つのキー

dev、staging、prod で別々のキーを作成しましょう。クォータ上限を厳しくした dev キーが漏れても困るだけですが、上限なしの prod キーが漏れたら請求が来ます。

2. 本番キーには IP ホワイトリストを設定

/keys で本番 egress(Fly.io リージョン、VPC NAT、k8s egress gateway など)の CIDR を追加します。ホワイトリスト外で漏洩したキーは使えなくなります。

3. キーごとに支出上限を設定

すべてのキーに、コンソールで支出上限(USD または CNY)を設定してください。暴走ループが短時間で請求を膨らませた場合でも、ゲートウェイが 429 で止めます。

目安:本番 は月次予算の約 9 割、ステージング は数十ドル規模、開発 は十ドル程度から /keys で調整してください。

4. モデルのバージョンを固定

# よい例
model="claude-opus-4-7"
model="gpt-5.3-codex"

# 悪い例 — 時間とともに静かに挙動が変わる
model="claude"
model="gpt-4"

バージョンを固定すれば、プロバイダのスケジュールではなく自分のスケジュールで次バージョンと A/B 比較できます。

5. 429 と一時的な 5xx は指数バックオフでリトライ

OpenAI と Anthropic の SDK は max_retries を設定すれば自動で処理します。生 HTTP の場合は レートリミット超過 に最小実装があります。4xx(400/401/403/404)を絶対にリトライしないでください — 同じレスポンスが返ってきます。

6. 常に x-request-id をログに残す

resp = client.chat.completions.with_raw_response.create(...)
print(resp.headers["x-request-id"])

サポートチケットを切る必要があるとき、これがゲートウェイ、スケジューラ、上流を数秒で追跡できる唯一の手がかりになります。

7. フォールバックモデルを用意

主モデルが gpt-5 で全面ダウンしたとき、エンジニアを呼ぶ前に claude-opus-4-7(または同じグループ内の別モデル)を試すコードを書きましょう:

fallback
def chat(messages, primary="gpt-5", fallback="claude-opus-4-7"):
    try:
        return client.chat.completions.create(model=primary, messages=messages)
    except Exception:
        return client.chat.completions.create(model=fallback, messages=messages)

8. ダッシュボードと支出を把握する

  • /dashboard を週 1 回は開く — モデル別・キー別の異常な支出スパイクを探します。
  • トラフィックが増える前に チャージ で十分な残高を確保し、突然の 402 を避けます。
  • 支出がおかしいときは 利用状況の詳細 でリクエスト単位に掘り下げます。

インシデントがなくても四半期ごとにキーをローテーションしましょう。定期的なローテーションは漏洩検知(監査ログの不一致、「あれ、なんでこのキーがまだ使われてる?」)を簡単にします。

次のステップ

キー単位の上限

本ページが推奨する設定項目を構成。

利用状況ダッシュボード

支出、クォータ、推移を一箇所で。

チャージ

402 の不意打ちを防ぐ。

上流プロバイダエラーとフェイルオーバー

上流プロバイダに問題が起きたとき ToRouter がどのようにチャネルをまたいでリトライするか、そして救えないケースで何が見えるか。

エラーコード完全リファレンス

ゲートウェイが返すエラータイプと HTTP ステータス、意味、次の一手。

目次

1. 環境ごとに 1 つのキー2. 本番キーには IP ホワイトリストを設定3. キーごとに支出上限を設定4. モデルのバージョンを固定5. 429 と一時的な 5xx は指数バックオフでリトライ6. 常に x-request-id をログに残す7. フォールバックモデルを用意8. ダッシュボードと支出を把握する次のステップ