You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cbmc/specgen/util/chatgpt_wrapper.py

62 lines
1.8 KiB

import openai
import os
import signal
import time
from openai import AzureOpenAI
import httpx
def create_chatgpt_config(messages):
config = {
"model": "gpt-3.5-turbo",
"temperature": 0.4,
"messages": []
}
config["messages"] = messages
return config
def handler(signum, frame):
raise Exception("end of time")
def request_chatgpt_engine(config):
ret = None
while ret is None:
try:
signal.signal(signal.SIGALRM, handler)
signal.alarm(100)
ret = openai.ChatCompletion.create(**config)
signal.alarm(0) # cancel alarm
except openai.error.InvalidRequestError as e:
print(e)
signal.alarm(0) # cancel alarm
except openai.error.RateLimitError as e:
print("Rate limit exceeded. Waiting...")
print(e)
signal.alarm(0) # cancel alarm
time.sleep(5) # wait for a minute
except openai.error.APIConnectionError as e:
print("API connection error. Waiting...")
signal.alarm(0) # cancel alarm
time.sleep(5) # wait for a minute
except Exception as e:
print(e)
print("Unknown error. Waiting...")
signal.alarm(0) # cancel alarm
time.sleep(1) # wait for a minute
return ret
"""
with open("./api_key.txt", 'r') as f:
api_key = f.read().strip()
client = AzureOpenAI(
azure_endpoint = "https://mygavin.openai.azure.com/",
api_key = api_key,
api_version="2024-02-01"
)
completion = client.chat.completions.create(
model="Gavin_deployment",
messages=config["messages"]
)
return {
'choices': [ {'message': {'role':completion.choices[0].message.role, 'content':completion.choices[0].message.content}} ]
}
"""