リクエストの上限
推論APIには、組織やプロジェクトで設定する利用制限とは別に、リクエスト自体に対する上限があります。 設定で変更できる上限と、サービス側で定められた上限があります。
リクエストサイズ
ボディの上限はJSONのUTF-8バイト数で10 MiB(10,485,760 bytes)です。 会話履歴とツール定義を含むリクエスト全体に適用され、モデルごとのコンテキスト上限とは別の制限です。
Content-Length が上限を超えている場合は、ボディを読む前に拒否します。
ヘッダーがない場合も、読み取り中に上限を超えた時点で打ち切ります。
どちらも 413 が返ります。
OpenAI互換のパスでは、本文は次の形です。
{
"error": {
"message": "Request body is too large",
"type": "invalid_request_error",
"code": "payload_too_large"
}
}同時受付
ボディの読み取りは、同時に処理できるリクエスト数の枠を取ってから始めます。
枠が空いていない場合は 429 と retry-after: 1 が返ります。
認証の試行にも同様のレート制限があり、超えると 429 が返ります。
429 には、再実行までの秒数を示す retry-after ヘッダーが付く場合があります。
HTTP/1.1 429 Too Many Requests
retry-after: <秒数>
cache-control: no-store出力トークン
| 項目 | 値 |
|---|---|
max_tokens の既定値 | 4096(max_tokens と max_completion_tokens のどちらも未指定のとき) |
max_tokens、max_completion_tokens、n | 正の整数のみ。それ以外は 400 |
n の上限 | 128 |
利用制限とクレジット
組織、プロジェクト、APIキー、ルールで設定した制限は、リクエストを受け付ける時点で判定します。
| 状況 | 応答 |
|---|---|
| 予算の上限を超えている | 403 / budget_guardrail_exceeded |
| RPM・TPMの上限を超えている | 429 / rate_limit_exceeded |
| 前払いのクレジット残高が足りない | 402 / insufficient_balance |
クレジットと利用制限は、リクエストを受け付けた時点で max_tokens を上限とした見積りで予約し、応答が終わってから実際の利用量で精算します。
そのため、直後に残高や利用状況を見ると、予約中の分だけ多く見えることがあります。
ストリーミングでは、ストリームを読んでいる間も予約が保持されます。
タイムアウトと再実行
timeout や request_timeout などのタイムアウトをボディで指定することはできません。
クライアント側のタイムアウトで打ち切ってください。
打ち切ったリクエストも、そこまでの利用は記録されます。
再実行するときは、間隔を空けずに繰り返さないでください。
認証試行と同時受付の制限に触れ、429 が続く原因になります。
retry-after がある場合はその秒数を待ち、ない場合は指数バックオフで間隔を広げてください。