Как преодолеть ошибку ограничения скорости при работе с моделями GPT3 с использованием Tenacity
В моей ситуации я пытаюсь передать подсказку с помощью вспомогательной функции реальным моделям GPT3, в моем случае text-ada-001, а затем в конечном итоге применить ее к столбцу pandas, используя следующий код. но я исправляю следующую ошибку:
def sentiment_prompt(text):
return """Is the sentiment Positive, Negative or Neutral for the following text:
"{}"
""".format(text)
def sentiment_text(text):
response = openai.Completion.create(
engine="text-ada-001",
prompt=sentiment_prompt(text),
max_tokens=1000,
temperature=0,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
sentiment = response.choices[0].text
return sentiment
и затем, в конечном итоге, применил его к моей колонке pandas:
df['sentiment'] = df['text'].apply(lambda x :sentiment_text(x))
И ошибка;
RateLimitError: Rate limit reached for default-global-with-image-limits in organization org-XXXX on requests per min. Limit: 60 / min. Please try again in 1s. Contact support@openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://platform.openai.com/account/billing to add a payment method.
Чтобы преодолеть эту ошибку, я просмотрел эту ссылку и обнаружил, что упорство может помочь решить мою проблему. Но я не уверен, как структурировать свой код. в данный момент я делаю следующее
Как мне использовать код, предложенный в ссылке, чтобы преодолеть ошибку ограничения скорости?
1 ответ
Импортируйте Tenacity в начало вашего кода, а затем добавьте его оформление там, где вы вызываете библиотеку OpenAI с помощью create. Итак, ваш код будет выглядеть так:
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 sentiment_text(text):
your_prompt = """Is the sentiment Positive, Negative or Neutral for the
following text:
"{}"
""".format(text)
response = openai.Completion.create(
engine="text-ada-001",
prompt=your_prompt ,
max_tokens=1000,
temperature=0,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
sentiment = response.choices[0].text
return sentiment