APIエラー429 Too Many Requests:レート制限、Retry-After、安全なバックオフ設定
LLM APIにおけるHTTP 429エラー対策ガイド:RPM/TPM制限の仕組み、Retry-Afterヘッダーの正確な読み取り、Full Jitter指数バックオフの実装方法。
HTTP 429 Too Many Requests エラーは、クライアントがAPIプロバイダーのレート制限やトークンクォータを超過した際に発生します。無秩序な即時リトライは問題を解決しないばかりか、リトライストーム(Retry Storm)を引き起こし、アカウントの一時凍結を長期化させる原因になります。
アプリケーションの安定稼働を確保するためには、制限の種類(RPM、TPM、残高不足)を的確に見極め、Retry-After ヘッダーを正しく解析した上で、ランダムな揺らぎを加えた指数バックオフ(Full Jitter Exponential Backoff)を実装する必要があります。
HTTP 429が発生する原因:レート制限の仕組み
最新の大規模言語モデル(LLM)APIでは、主に以下の3つの要因で429ステータスが返されます:
- RPM (Requests Per Minute):1分あたりのリクエスト数制限。キューを介さずに多数のスレッドで並列呼び出しを行った際に発生します。
- TPM (Tokens Per Minute):1分あたりの合計トークン量(入力+出力)の制限。長いプロンプトや大量の文脈を一度に送信すると到達しやすくなります。
- クォータ・残高の枯渇:デポジット残高がゼロになった場合や、設定された利用上限(Spend Limit)に達したことによる制限。
残高不足やサブスクリプションの固定制限が原因である場合、リトライを繰り返してもネットワーク帯域を浪費するだけです。ログの解析に時間をかけずエラー原因を直感的に把握するため、BetterToken では透過的なダッシュボードを提供しています。各リクエストのHTTPステータス、入力・出力・キャッシュトークンの詳細、従量課金残高をリアルタイムで確認でき、突然の5時間利用制限に悩まされる心配がありません。
429エラー診断マトリクス
Retry-Afterヘッダーの正確な読み取り方
RFC 6585 では、Retry-After ヘッダーで待機時間を指定する形式として以下の2種類が定義されています:
- 相対秒数(整数または小数、例:
Retry-After: 12) - HTTP-Date形式の日時(例:
Retry-After: Sun, 23 Aug 2026 03:05:00 GMT)
Full Jitter 指数バックオフの実装
Retry-After ヘッダーが存在しない場合は、Jitterを加えた指数バックオフ(Full Jitter Exponential Backoff)を使用します。試行回数 に対する待機時間計算式は以下の通りです:
冪等性と安全なリトライ
GET メソッドなどの読み取り操作は安全にリトライできますが、LLM推論などの POST 操作では注意が必要です:
- 重複実行の防止:タイムアウトが発生した場合は、再送前にトークンの消費状況や生成状態を確認してください。
- リクエストIDの付与:
X-Request-IDヘッダーを送信し、ログ上で各試行を一意に追跡できるようにします。 - 401/403エラーを429と混同しない:認証エラーは待機しても解消しないため、APIキーの設定を修正する必要があります。
復旧確認とテスト
通常のトラフィックに戻す前に:
- 最小限のプロンプト(
max_tokens: 5)でプローブテストを実行します。 - HTTP 200が返されること、および
x-ratelimit-remaining-requestsヘッダーを確認します。 - 429エラー率を監視しながら段階的に並列リクエスト数を引き上げます。
厳格な分単位の制限による突然の429エラーを防ぎ、リクエスト状況を完全に可視化するために、BetterToken API へ移行し、専用APIキーを発行してダッシュボードでリアルタイムにトークン消費を管理しましょう。