OpenAI
页面内容为机器翻译。查看英文原文

如何解决 429:“请求过多”错误?

更新于:7 days ago

速率限制错误('请求过多',‘已达到速率限制’)是由于达到了您组织的速率限制而导致的,这指的是每分钟可提交的最大请求数和Token数。如果达到该限制,在速率限制重置之前,组织将无法成功提交请求。错误消息如下所示:

组织 org-exampleorgid123 中 gpt-3.5-turbo 的每分钟 Token数已达到速率限制。
限制:10000.000000 / 分钟。当前:10020.000000 / 分钟。

我们建议使用指数退避来处理这些错误。指数退避是指在遇到速率限制错误时先短暂等待,然后重试失败的请求。如果请求仍然失败,则增加等待时长并重复该过程。此过程会持续进行,直到请求成功或达到最大重试次数。

由于失败的请求也会计入您的每分钟限制,因此不断重复发送请求是行不通的。速率限制也可能应用于更短的时间段——例如,60 RPM 的限制可能等同于每秒 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 库是第三方工具。对于项目中使用的任何外部代码,我们鼓励所有客户先进行充分审查和验证。)

如果实现指数退避后仍然出现此错误,您可能需要提高您的使用层级。您可以在账户设置的限制部分查看当前速率限制,以及如何提高您的信任层级以提升速率限制。

这篇文章对你有帮助吗?