khhuiyh's picture
Update tool.py
60fec2c
import time
import random
from openai import OpenAI
def get_response(prompt: str, ak: str) -> str:
'''
prompt:
'''
client = OpenAI(api_key=ak)
completion = client.chat.completions.create(
model="gpt-4-1106-preview",
messages=[
{"role": "user", "content": prompt}
]
)
return completion.choices[0].message.content
def check_judge(answer: str) -> str:
assert len(answer.split('\n')[0])>=1 , "Answer has no analysis."
assert answer.split('\n')[-1] in ['0', '1'], "Judge output is not 0 or 1." + answer.split('\n')[-1]
assert not (answer.split('\n')[0] in ['0', '1']), "Answer has no analysis."
return answer.split('\n')[-1]
def judge(rule: str, answer: str, ak: str):
return get_response(rule.replace("[Answer to be judged]:", "[Answer to be judged]: " + answer + '\n'), ak)
def alternate_judge(rule, answer, ak):
maxtry = 10
while True:
try:
out = judge(rule, answer, ak)
bitout = check_judge(out)
return out, bitout
except Exception as e:
if maxtry <= 0:
return None, "0"
if not isinstance(e, KeyError):
maxtry -= 1
print(e)
else:
print("Request Error: " + str(e))
print("Retrying...")
time.sleep(random.uniform(1, 2))
continue
def count_lines(file_path: str):
with open(file_path, 'r') as f:
return sum(1 for _ in f)