レート制限
ai& は共有負荷下でプラットフォームを健全に保つため、組織単位でレート制限を適用します。上限はティアによって決まり、推論エンドポイントに適用されます — 管理 API には別途 (緩めの) 制限があります。
| ティア | 説明 |
|---|---|
| Tier 0 | 評価用ティア。分あたり上限が低め。開発や小規模プロジェクト向け。新規組織はこのティアから始まります。 |
| Tier 1 | 本番用ティア。上限が高く、高スループットモデルへもアクセス可能。初回の決済成功時に自動昇格します。 |
各リクエストは 6 つのバケットで判定されます — モデル単位の 4 つと、組織単位の 2 つ (global):
- Per-model RPM — 特定モデルに対する 1 分間のリクエスト数。
- Per-model Input TPM — 特定モデルに対する 1 分間の入力トークン数 (リクエストボディから事前に見積もり)。
- Per-model Output TPM — 特定モデルに対する 1 分間の出力トークン数 (レスポンス完了後に計上)。
- Per-model Concurrency — 特定モデルに対する同時実行中リクエスト数の上限。
- Global RPM — すべてのモデルを合わせた 1 分間のリクエスト数。
- Global Concurrency — すべてのモデルを合わせた同時実行中リクエスト数の上限。
いずれかのバケットが先に埋まった時点でスロットルされます。
すべてのレスポンスに以下のヘッダが含まれます:
| ヘッダ | 意味 |
|---|---|
X-RateLimit-Limit | 現在の実効 RPM 上限 — per-model RPM と global RPM のうち、より制約が厳しい方。 |
X-RateLimit-Remaining | 同じバケットの残リクエスト数。 |
429 Too Many Requests の場合、さらに以下が追加されます:
| ヘッダ | 意味 |
|---|---|
X-RateLimit-Policy | 拒否したバケット: rpm / global_rpm / input_tpm / output_tpm / concurrency / global_concurrency。 |
Retry-After | 該当バケットの空きが戻るまでの秒数。concurrency と global_concurrency の拒否では付かない — 実行中リクエストの完了/キャンセルで解消する。 |
レート制限以外のヘッダは レスポンスヘッダ を参照。
429 レスポンス
Section titled “429 レスポンス”スロットルされると 429 Too Many Requests が返されます。2 種類のバケットは解消の仕方が異なるため、X-RateLimit-Policy を確認して拒否の種類に応じて対処してください — 同じ「バックオフして再試行」は concurrency の拒否には当てはまりません。
時間ベースの拒否 — rpm / global_rpm / input_tpm / output_tpm。ウィンドウの経過とともに回復します。Retry-After が最小の安全な待機時間を示すので、少なくともその時間だけ待ってから、ジッタ付きの指数バックオフで再試行してください。
concurrency の拒否 — concurrency / global_concurrency。時間では解消せず、実行中のリクエストが完了またはキャンセルされたときにのみ空くため、Retry-After は付きません。すぐに再試行すると同じ上限に対して実行中リクエストが 1 つ増え、状況が悪化します — 新たに送信する前に、実行中のリクエストを消化させる (または同時実行数を下げる) 必要があります。