''' an abstraction over GPT-4 for easy substitution later if needed ''' import openai import os from tenacity import retry, wait_random_exponential, stop_after_attempt openai.api_key = os.getenv('OPENAI_KEY') MODEL = 'gpt-4' #MODEL = 'gpt-3.5-turbo' TEMPERATURE = 0.8 @retry(wait=wait_random_exponential(multiplier=1, max=40), stop=stop_after_attempt(3)) def answer(system_message, user_and_assistant_messages): messages = [{ "role":"system", "content": system_message }] messages.extend(user_and_assistant_messages) try: chat_completion = openai.ChatCompletion.create( model=MODEL, messages=messages, temperature = TEMPERATURE ) output = chat_completion.choices[0].message.content return output except Exception as e: print("Unable to generate ChatCompletion response") print(f"Exception: {e}") return e