レート制限エラー(「Too Many Requests」、「Rate limit reached」)は、組織のレート制限に達したために発生します。これは 1 分あたりに送信できるリクエスト数とトークン数の上限です。制限に達した場合、レート制限がリセットされるまで、その組織はリクエストを正常に送信できません。エラーメッセージは次のようになります:
gpt-3.5-turbo で、組織 org-exampleorgid123 の 1 分あたりのトークン数のレート制限に達しました。
上限: 10000.000000 / min.現在: 10020.000000 / min. これらのエラーは、指数バックオフを使用して処理することをおすすめします。指数バックオフとは、レート制限エラーが発生したときに短時間スリープしてから、失敗したリクエストを再試行することです。リクエストがまだ成功しない場合は、スリープ時間を長くして、このプロセスを繰り返します。これは、リクエストが成功するか、最大再試行回数に達するまで続きます。
失敗したリクエストも毎分の制限にカウントされるため、リクエストを継続的に再送しても効果はありません。レート制限はより短い期間に適用される場合があります。たとえば、60 RPM の制限では 1 秒あたり 1 リクエストのように適用されるため、短時間に大量のリクエストを集中させると、レート制限エラーにつながることもあります。指数バックオフは、リクエストの間隔を空けてこれらのエラーの発生頻度を最小限に抑えるため、有効に機能します。
Python では、指数バックオフの実装例は次のようになります:
from openai import OpenAI, RateLimitError
import backoff
client = OpenAI()
@backoff.on_exception(backoff.expo, RateLimitError)
def completions_with_backoff(**kwargs):
response = client.completions.create(**kwargs)
return response(注意:backoff ライブラリはサードパーティ製ツールです。プロジェクトで外部コードを検証する際には、お客様ご自身で十分な確認を行うことをおすすめします。)
指数バックオフを実装してもこのエラーが解消しない場合は、使用量ティアを引き上げる必要があるかもしれません。アカウント設定の制限セクションで、現在のレート制限と、レート制限を引き上げるために信頼ティアを上げる方法を確認できます。
