From 3b2ad902ddc46bde120314cf7f6133a555b694c9 Mon Sep 17 00:00:00 2001 From: Trevor Decker Date: Wed, 29 Mar 2023 05:56:51 +0000 Subject: [PATCH] retry requests incase we openai rate limit is reached --- agent/agi.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/agent/agi.py b/agent/agi.py index ebe0ad3..4d1d064 100644 --- a/agent/agi.py +++ b/agent/agi.py @@ -1,5 +1,6 @@ import os import subprocess +import time import openai @@ -36,15 +37,23 @@ def run_gpt( ) + prompt_template.format(**prompt_kwargs) if VERBOSE: print(LOG_PROMPT.format(content)) - resp = openai.ChatCompletion.create( - model=MODEL, - messages=[ - {"role": "system", "content": content}, - ], - temperature=0.0, - max_tokens=max_tokens, - stop=stop_tokens if stop_tokens else None, - )["choices"][0]["message"]["content"] + # we may get rate limited, so retry a few times + for _ in range(3): + try: + resp = openai.ChatCompletion.create( + model=MODEL, + messages=[ + {"role": "system", "content": content}, + ], + temperature=0.0, + max_tokens=max_tokens, + stop=stop_tokens if stop_tokens else None, + )["choices"][0]["message"]["content"] + # we successfully got a response, so we can break the try loop + break + except openai.error.RateLimitError: + print("Rate limit exceeded, waiting 1 minute") + time.sleep(60) if VERBOSE: print(LOG_RESPONSE.format(resp)) return resp