File size: 1,512 Bytes
60fec2c
 
 
0e38352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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)