【报错】 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

猜你喜欢

转载自blog.csdn.net/weixin_43301333/article/details/129892064