Rate Limit
レート制限
れえとせいげん
Definition
A rate limit is a cap on how many requests or tokens you can send within a time window, set for stability and fairness. It affects throughput planning and practical cost estimation.
APIを呼び出していたら突然「429 Too Many Requests」というエラーが返ってきた経験はありませんか。これはレート制限に引っかかったサインです。レート制限(Rate Limit)とは、一定時間あたりのAPIリクエスト数やトークン数に上限を設ける仕組みで、サービスの安定性を保ち、すべてのユーザーに公平なアクセスを提供するために設けられています。
何が制限されるのか
レート制限は通常、複数の軸で設定されます。RPM(Requests Per Minute)は1分あたりのリクエスト数、TPM(Tokens Per Minute)は1分あたりの処理トークン数、RPD(Requests Per Day)は1日あたりのリクエスト数の上限です。たとえば、OpenAIのGPT-4oはTier 1で500 RPM・30,000 TPMという制限があります。RPMとTPMのどちらか一方でも超過すると制限がかかります。
なぜレート制限が必要なのか
GPUリソースは有限であり、一部のユーザーが大量のリクエストを送信するとサーバーに過負荷がかかり、他のユーザーの応答速度が低下します。レート制限は、すべてのユーザーが安定してサービスを利用できるようにするための交通整理の役割を果たします。また、バグや悪意のあるリクエストによる異常なAPI呼び出しからシステムを保護する安全弁でもあります。
429エラーへの対処法
429エラーが発生した場合、最も一般的な対処法は指数バックオフ(Exponential Backoff)です。最初は1秒待って再試行し、それでも失敗すれば2秒、次は4秒と待機時間を倍増させていく方法です。レスポンスヘッダーに含まれる`Retry-After`の値を確認するのも有効です。多くのSDKにはリトライロジックが組み込まれていますが、自前で実装する場合はジッター(ランダムな遅延)を加えることで、複数クライアントの同時リトライを避けられます。
スループット計画の実践
本番サービスでは、ピーク時のリクエスト数がレート制限を超えないよう設計する必要があります。リクエストキューを実装して流量を平準化する、複数のAPIキーを使い分ける、バッチAPIを活用して非同期処理に回すといった手法があります。利用量が増えればティアの昇格によって制限も緩和されるため、OpenAIやAnthropicのダッシュボードで現在のティアと制限値を定期的に確認することが大切です。