Initial updates to most recent openai api version.
This commit is contained in:
178
app.py
178
app.py
@@ -239,17 +239,27 @@ def grade_writing_task_1():
|
||||
}
|
||||
}
|
||||
else:
|
||||
message = ("Evaluate the given Writing Task 1 response based on the IELTS grading system, ensuring a "
|
||||
"strict assessment that penalizes errors. Deduct points for deviations from the task, and "
|
||||
"assign a score of 0 if the response fails to address the question. Additionally, provide an "
|
||||
"exemplary answer with a minimum of 150 words, along with a detailed commentary highlighting "
|
||||
"both strengths and weaknesses in the response. Present your evaluation in JSON format with "
|
||||
"the following structure: {'perfect_answer': 'example perfect answer', 'comment': "
|
||||
"'comment about answer quality', 'overall': 0.0, 'task_response': {'Task Achievement': 0.0, "
|
||||
"'Coherence and Cohesion': 0.0, 'Lexical Resource': 0.0, 'Grammatical Range and Accuracy': "
|
||||
"0.0}}\n Question: '" + question + "' \n Answer: '" + answer + "'")
|
||||
token_count = count_tokens(message)["n_tokens"]
|
||||
response = make_openai_instruct_call(GPT_3_5_TURBO_INSTRUCT, message, token_count,
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": ('You are a helpful assistant designed to output JSON on this format: '
|
||||
'{"perfect_answer": "example perfect answer", "comment": '
|
||||
'"comment about answer quality", "overall": 0.0, "task_response": '
|
||||
'{"Task Achievement": 0.0, "Coherence and Cohesion": 0.0, '
|
||||
'"Lexical Resource": 0.0, "Grammatical Range and Accuracy": 0.0 }')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": ('Evaluate the given Writing Task 1 response based on the IELTS grading system, '
|
||||
'ensuring a strict assessment that penalizes errors. Deduct points for deviations '
|
||||
'from the task, and assign a score of 0 if the response fails to address the question. '
|
||||
'Additionally, provide an exemplary answer with a minimum of 150 words, along with a '
|
||||
'detailed commentary highlighting both strengths and weaknesses in the response. '
|
||||
'\n Question: "' + question + '" \n Answer: "' + answer + '"')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
response = make_openai_call(GPT_3_5_TURBO, messages, token_count,
|
||||
["comment"],
|
||||
GRADING_TEMPERATURE)
|
||||
response["overall"] = fix_writing_overall(response["overall"], response["task_response"])
|
||||
@@ -265,16 +275,29 @@ def get_writing_task_1_general_question():
|
||||
difficulty = request.args.get("difficulty", default=random.choice(difficulties))
|
||||
topic = request.args.get("topic", default=random.choice(mti_topics))
|
||||
try:
|
||||
gen_wt1_question = "Craft a prompt for an IELTS Writing Task 1 General Training exercise that instructs the " \
|
||||
"student to compose a letter. The prompt should present a specific scenario or situation, " \
|
||||
"based on the topic of '" + topic + "', " \
|
||||
"requiring the student to provide information, advice, or instructions within the letter. " \
|
||||
"Make sure that the generated prompt is of " + difficulty + " difficulty and does not contain forbidden subjects in muslim countries."
|
||||
token_count = count_tokens(gen_wt1_question)["n_tokens"]
|
||||
response = make_openai_instruct_call(GPT_3_5_TURBO_INSTRUCT, gen_wt1_question, token_count, None,
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": ('You are a helpful assistant designed to output JSON on this format: '
|
||||
'{"prompt": "prompt content"}')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": ('Craft a prompt for an IELTS Writing Task 1 General Training exercise that instructs the '
|
||||
'student to compose a letter. The prompt should present a specific scenario or situation, '
|
||||
'based on the topic of "' + topic + '", requiring the student to provide information, '
|
||||
'advice, or instructions within the letter. '
|
||||
'Make sure that the generated prompt is '
|
||||
'of ' + difficulty + 'difficulty and does not contain '
|
||||
'forbidden subjects in muslim '
|
||||
'countries.')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
response = make_openai_call(GPT_3_5_TURBO, messages, token_count, "prompt",
|
||||
GEN_QUESTION_TEMPERATURE)
|
||||
return {
|
||||
"question": response.strip(),
|
||||
"question": response["prompt"].strip(),
|
||||
"difficulty": difficulty,
|
||||
"topic": topic
|
||||
}
|
||||
@@ -312,18 +335,27 @@ def grade_writing_task_2():
|
||||
}
|
||||
}
|
||||
else:
|
||||
message = ("Evaluate the given Writing Task 2 response based on the IELTS grading system, ensuring a "
|
||||
"strict assessment that penalizes errors. Deduct points for deviations from the task, and "
|
||||
"assign a score of 0 if the response fails to address the question. Additionally, provide an "
|
||||
"exemplary answer with a minimum of 250 words, along with a detailed commentary highlighting "
|
||||
"both strengths and weaknesses in the response. Present your evaluation in JSON format with "
|
||||
"the following structure: {'perfect_answer': 'example perfect answer', 'comment': "
|
||||
"'comment about answer quality', 'overall': 0.0, 'task_response': {'Task Achievement': 0.0, "
|
||||
"'Coherence and Cohesion': 0.0, 'Lexical Resource': 0.0, 'Grammatical Range and Accuracy': "
|
||||
"0.0}}\n Question: '" + question + "' \n Answer: '" + answer + "'")
|
||||
token_count = count_tokens(message)["n_tokens"]
|
||||
response = make_openai_instruct_call(GPT_3_5_TURBO_INSTRUCT, message, token_count,
|
||||
["comment"],
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": ('You are a helpful assistant designed to output JSON on this format: '
|
||||
'{"perfect_answer": "example perfect answer", "comment": '
|
||||
'"comment about answer quality", "overall": 0.0, "task_response": '
|
||||
'{"Task Achievement": 0.0, "Coherence and Cohesion": 0.0, '
|
||||
'"Lexical Resource": 0.0, "Grammatical Range and Accuracy": 0.0 }')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": ('Evaluate the given Writing Task 2 response based on the IELTS grading system, ensuring a '
|
||||
'strict assessment that penalizes errors. Deduct points for deviations from the task, and '
|
||||
'assign a score of 0 if the response fails to address the question. Additionally, provide an '
|
||||
'exemplary answer with a minimum of 250 words, along with a detailed commentary highlighting '
|
||||
'both strengths and weaknesses in the response.'
|
||||
'\n Question: "' + question + '" \n Answer: "' + answer + '"')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
response = make_openai_call(GPT_4_O, messages, token_count, ["comment"],
|
||||
GEN_QUESTION_TEMPERATURE)
|
||||
response["overall"] = fix_writing_overall(response["overall"], response["task_response"])
|
||||
response['fixed_text'] = get_fixed_text(answer)
|
||||
@@ -345,16 +377,24 @@ def get_writing_task_2_general_question():
|
||||
difficulty = request.args.get("difficulty", default=random.choice(difficulties))
|
||||
topic = request.args.get("topic", default=random.choice(mti_topics))
|
||||
try:
|
||||
gen_wt2_question = "Craft a comprehensive question of " + difficulty + " difficulty for IELTS Writing Task 2 General Training that directs the candidate " \
|
||||
"to delve into an in-depth analysis of contrasting perspectives on the topic of '" + topic + "'. The candidate " \
|
||||
"should be asked to discuss the strengths and weaknesses of both viewpoints, provide evidence or " \
|
||||
"examples, and present a well-rounded argument before concluding with their personal opinion on the " \
|
||||
"subject."
|
||||
token_count = count_tokens(gen_wt2_question)["n_tokens"]
|
||||
response = make_openai_instruct_call(GPT_3_5_TURBO_INSTRUCT, gen_wt2_question, token_count, None,
|
||||
GEN_QUESTION_TEMPERATURE)
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": ('You are a helpful assistant designed to output JSON on this format: '
|
||||
'{"prompt": "prompt content"}')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": ('Craft a comprehensive question of ' + difficulty + 'difficulty like the ones for IELTS Writing Task 2 General Training that directs the candidate '
|
||||
'to delve into an in-depth analysis of contrasting perspectives on the topic of "' + topic + '". '
|
||||
'The candidate should be asked to discuss the strengths and weaknesses of both viewpoints, provide evidence or '
|
||||
'examples, and present a well-rounded argument before concluding with their personal opinion on the subject.')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
response = make_openai_call(GPT_4_O, messages, token_count, "prompt", GEN_QUESTION_TEMPERATURE)
|
||||
return {
|
||||
"question": response.strip(),
|
||||
"question": response["prompt"].strip(),
|
||||
"difficulty": difficulty,
|
||||
"topic": topic
|
||||
}
|
||||
@@ -384,32 +424,50 @@ def grade_speaking_task_1():
|
||||
logging.info("POST - speaking_task_1 - " + str(request_id) + " - Transcripted answer: " + answer)
|
||||
|
||||
if has_x_words(answer, 20):
|
||||
message = ("Evaluate the given Speaking Part 1 response based on the IELTS grading system, ensuring a "
|
||||
"strict assessment that penalizes errors. Deduct points for deviations from the task, and "
|
||||
"assign a score of 0 if the response fails to address the question. Additionally, provide "
|
||||
"detailed commentary highlighting both strengths and weaknesses in the response. Present your "
|
||||
"evaluation in JSON format with "
|
||||
"the following structure: {'comment': 'comment about answer quality', 'overall': 0.0, "
|
||||
"'task_response': {'Fluency and Coherence': 0.0, 'Lexical Resource': 0.0, 'Grammatical Range "
|
||||
"and Accuracy': 0.0, 'Pronunciation': 0.0}}\n Question: '" + question + "' \n Answer: '" + answer + "'")
|
||||
token_count = count_tokens(message)["n_tokens"]
|
||||
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": ('You are a helpful assistant designed to output JSON on this format: '
|
||||
'{"comment": "comment about answer quality", "overall": 0.0, '
|
||||
'"task_response": {"Fluency and Coherence": 0.0, "Lexical Resource": 0.0, '
|
||||
'"Grammatical Range and Accuracy": 0.0, "Pronunciation": 0.0}}')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": ('Evaluate the given Speaking Part 1 response based on the IELTS grading system, ensuring a '
|
||||
'strict assessment that penalizes errors. Deduct points for deviations from the task, and '
|
||||
'assign a score of 0 if the response fails to address the question. Additionally, provide '
|
||||
'detailed commentary highlighting both strengths and weaknesses in the response.'
|
||||
'\n Question: "'+ question + '" \n Answer: "'+ answer + '"')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
logging.info("POST - speaking_task_1 - " + str(request_id) + " - Requesting grading of the answer.")
|
||||
response = make_openai_instruct_call(GPT_3_5_TURBO_INSTRUCT, message, token_count,
|
||||
["comment"],
|
||||
response = make_openai_call(GPT_3_5_TURBO, messages, token_count,["comment"],
|
||||
GRADING_TEMPERATURE)
|
||||
logging.info("POST - speaking_task_1 - " + str(request_id) + " - Answer graded: " + str(response))
|
||||
|
||||
perfect_answer_message = ("Provide a perfect answer according to ielts grading system to the following "
|
||||
"Speaking Part 1 question: '" + question + "'")
|
||||
token_count = count_tokens(perfect_answer_message)["n_tokens"]
|
||||
perfect_answer_messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": ('You are a helpful assistant designed to output JSON on this format: '
|
||||
'{"answer": "perfect answer"}')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": (
|
||||
'Provide a perfect answer according to ielts grading system to the following '
|
||||
'Speaking Part 1 question: "' + question + '"')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(perfect_answer_messages)
|
||||
|
||||
logging.info("POST - speaking_task_1 - " + str(request_id) + " - Requesting perfect answer.")
|
||||
response['perfect_answer'] = make_openai_instruct_call(GPT_3_5_TURBO_INSTRUCT,
|
||||
perfect_answer_message,
|
||||
token_count,
|
||||
None,
|
||||
GEN_QUESTION_TEMPERATURE)
|
||||
response['perfect_answer'] = make_openai_call(GPT_3_5_TURBO,
|
||||
perfect_answer_messages,
|
||||
token_count,
|
||||
None,
|
||||
GEN_QUESTION_TEMPERATURE)["answer"]
|
||||
logging.info("POST - speaking_task_1 - " + str(
|
||||
request_id) + " - Perfect answer: " + response['perfect_answer'])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user