速率限制错误(“太多请求”、“达到速率限制”)是由于达到了您组织的速率限制,即每分钟可以提交的请求和令牌的最大数量。如果达到限制,组织将无法成功提交请求,直到重置速率限制。错误消息如下所示:
Rate limit reached for default-code-davinci-002 in organization org-exampleorgid123 on tokens per min.
Limit: 10000.000000 / min. Current: 10020.000000 / min.
Contact support@openai.com if you continue to have issues.
我们建议使用指数退避来处理这些错误。指数退避意味着当遇到速率限制错误时执行短暂的休眠,然后重试不成功的请求。如果请求仍然不成功,则增加睡眠时间并重复该过程。这一直持续到请求成功或达到最大重试次数为止。
由于不成功的请求会影响您的每分钟限制,因此连续重新发送请求将不起作用。可以在较短的时间内应用速率限制 - 例如,每秒 1 个请求以限制 60 RPM - 这意味着短时间的大量请求突发也可能导致速率限制错误。指数退避通过将请求间隔开以最小化这些错误的频率来很好地工作。
在 Python 中,指数退避解决方案可能如下所示:
from openai.error import RateLimitError
import backoff
@backoff.on_exception(backoff.expo, RateLimitError)
def completions_with_backoff(**kwargs):
response = openai.Completion.create(**kwargs)
return response
(请注意:退避库是第三方工具。我们鼓励所有客户在验证其项目的任何外部代码时进行尽职调查。)
如果实施指数退避仍然导致此错误,请填写Rate Limit Increase Request。我们仍然会尽快回复您。
要了解有关每种引擎类型的默认速率限制的更多信息,请参阅此处。