【报错】 openai.error.RateLimitError: Rate limit reached for default-text-davinci-003 in organization

使用open AI的API调用模型的时候,会出现以下报错:

openai.error.RateLimitError: Rate limit reached for default-text-davinci-003 in organization XXX on requests per min. Limit: 60 / min. Please try again in 1s.

原因就是调用API的频率太过于频繁。

在这里插入图片描述

例如,free trial的用户,每分钟限制的request的上限是20次,15万tokens。超过这部分,访问就会受拒。

解决方案

官方提供了解决方案:

import openai  # for OpenAI API calls
from tenacity import (
    retry,
    stop_after_attempt,
    wait_random_exponential,
)  # for exponential backoff


@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
def completion_with_backoff(**kwargs):
    return openai.Completion.create(**kwargs)


completion_with_backoff(model="text-davinci-002", prompt="Once upon a time,")

如上图,安装tenacity包,然后给的自己的脚本,访问API那段函数,添加修饰:@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))

这样的话,在访问之间会自动增加一定时间间隔,并在访问受拒之后,再次进行尝试。


除了上述tenacity,还可以使用backoff。以及尝试自己手动添加停顿等。

import backoff  # for exponential backoff
import openai  # for OpenAI API calls


@backoff.on_exception(backoff.expo, openai.error.RateLimitError)
def completions_with_backoff(**kwargs):
    return openai.Completion.create(**kwargs)


completions_with_backoff(model="text-davinci-002", prompt="Once upon a time,")

参考:

笔者还是建议读者去阅读官方的notebook:
How_to_handle_rate_limits.ipynb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值