File size: 1,422 Bytes
dea3e5d
 
 
 
0f4a21d
 
 
 
dea3e5d
 
 
 
 
0f4a21d
dea3e5d
 
 
 
0f4a21d
dea3e5d
 
 
 
 
 
 
0f4a21d
 
 
 
 
 
 
dea3e5d
c2f86a5
 
0f4a21d
 
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
import json
from openai_utils import get_ai_response
from cv_prompt import get_spelling_grammar_prompt

# Load the error scoring data
with open('error_scoring.json', 'r') as f:
    error_scoring = json.load(f)

def check_spelling_and_grammar(text):
    prompt = get_spelling_grammar_prompt(text)
    messages = [
        {"role": "user", "content": prompt}
    ]

    response = get_ai_response(messages)
    
    if not response:
        print("Unexpected response from OpenAI API")
        return 100, -10  # Assume 100% errors if we can't get a response

    try:
        result = json.loads(response)
        error_percentage = result.get('error_percentage', 100)
        return min(max(float(error_percentage), 0), 100)  # Ensure the percentage is between 0 and 100
    except (json.JSONDecodeError, ValueError):
        print(f"Unable to parse error percentage from API response: {response}")
        return 100, -10  # Assume 100% errors if we can't parse the response

def get_error_score(error_percentage):
    for error_score in error_scoring['error_scores']:
        if error_score['min'] <= error_percentage <= error_score['max']:
            return error_score['score']
    return -10  # Default score if no matching range is found

def evaluate_cv_text(text):
    error_percentage = check_spelling_and_grammar(text)
    error_score = get_error_score(error_percentage)
    return error_percentage, error_score