【结合OpenAI官方文档】解决Chatgpt的API接口请求速率限制

本文介绍了OpenAIAPI接口的速率限制机制,包括RPM、RPD、TPM、TPD和IPM,并提供了两种解决方案:使用指数退避重试避免速率限制,以及通过批量处理和合理设置max_tokens以提高吞吐量。还提到组织级速率限制、模型差异和使用限制的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenAI API接口请求速率限制

速率限制以五种方式衡量:RPM(每分钟请求数)、RPD(每天请求数)、TPM(每分钟令牌数)、TPD(每天令牌数)和IPM(每分钟图像数)。

任何选项都可能会达到速率限制,具体取决于首先发生的情况。例如,向 ChatCompletions 端点发送仅包含 100 个令牌的 20 个请求,这将达到限制(如果RPM 为 20),即使在这 20 个请求中没有发送 150k 令牌(如果TPM 限制为 150k) 。

其他值得注意的重要事项:

  • 速率限制是在组织级别而不是用户级别施加的。
  • 速率限制因所使用的模型而异。
  • 组织每月可以在 API 上花费的总金额也受到限制。这些也称为“使用限制”。

OpenAI官网免费用户速率限制
请求头限制

解决方法

OpenAI Cookbook 有一个Python 笔记本,解释了如何避免速率限制错误,以及一个用于在批处理 API 请求时保持速率限制的示例Python 脚本。

在提供编程访问、批量处理功能和自动社交媒体发布时,考虑只为部分用户启用这些功能。

为了防止自动和大量滥用,请在指定时间范围内(每日、每周或每月)为单个用户设置使用限制。考虑对超出限制的用户实施硬上限或手动审核流程。

方法一:使用指数退避重试

避免速率限制错误的一种简单方法是使用随机指数退避自动重试请求。使用指数退避重试意味着在遇到速率限制错误时执行短暂睡眠,然后重试不成功的请求。如果请求仍然不成功,则增加睡眠长度并重复该过程。这将持续到请求成功或达到最大重试次数为止。这种方法有很多好处:

  • 自动重试意味着您可以从速率限制错误中恢复,而不会崩溃或丢失数据
  • 指数退避意味着您可以快速尝试第一次重试,同时如果前几次重试失败,仍然可以从更长的延迟中受益
  • 在延迟中添加随机抖动有助于同时重试所有命中。

请注意,不成功的请求会影响您的每分钟限制,因此连续重新发送请求将不起作用。

下面是一些使用指数退避的Python解决方案示例

示例 1:使用 Tenacity 库

Tenacity 是一个 Apache 2.0 许可的通用重试库,用 Python 编写,用于简化向任何事物添加重试行为的任务。要为您的请求添加指数退避,您可以使用tenacity.retry装饰器。下面的示例使用该tenacity.wait_random_exponential函数向请求添加随机指数退避。

from openai import OpenAI
client = OpenAI()

from tenacity import (
    retry,
    stop_after_attempt,
    wait_random_exponential,
)  # 指数退避
 
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
def completion_with_backoff</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值