Как преодолеть ошибку ограничения скорости при работе с моделями 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
Другие вопросы по тегам