144 lines
7.8 KiB
Python
144 lines
7.8 KiB
Python
from enum import Enum
|
|
|
|
|
|
class QuestionType(Enum):
|
|
WRITING_TASK_2 = "Writing Task 2"
|
|
SPEAKING = "Speaking Task"
|
|
|
|
|
|
def get_grading_messages(question_type: QuestionType, question: str, answer: str):
|
|
if QuestionType.WRITING_TASK_2 == question_type:
|
|
return [
|
|
{
|
|
"role": "user",
|
|
"content": "You are a IELTS examiner.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": f"The question you have to grade is of type Writing Task 2 and is the following: {question}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "It is mandatory for you to provide your response with the overall grade and breakdown grades, "
|
|
"with just the following json format: {'comment': 'comment about answer quality', 'overall': 7.0, "
|
|
"'task_response': {'Task Achievement': 8.0, 'Coherence and Cohesion': 6.5, 'Lexical Resource': 7.5, "
|
|
"'Grammatical Range and Accuracy': 6.0}}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Example output: { 'comment': 'Overall, the response is good but there are some areas that need "
|
|
"improvement.\n\nIn terms of Task Achievement, the writer has addressed all parts of the question "
|
|
"and has provided a clear opinion on the topic. However, some of the points made are not fully "
|
|
"developed or supported with examples.\n\nIn terms of Coherence and Cohesion, there is a clear "
|
|
"structure to the response with an introduction, body paragraphs and conclusion. However, there "
|
|
"are some issues with cohesion as some sentences do not flow smoothly from one to another.\n\nIn "
|
|
"terms of Lexical Resource, there is a good range of vocabulary used throughout the response and "
|
|
"some less common words have been used effectively.\n\nIn terms of Grammatical Range and Accuracy, "
|
|
"there are some errors in grammar and sentence structure which affect clarity in places.\n\nOverall, "
|
|
"this response would score a band 6.5.', 'overall': 6.5, 'task_response': "
|
|
"{ 'Coherence and Cohesion': 6.5, 'Grammatical Range and Accuracy': 6.0, 'Lexical Resource': 7.0, "
|
|
"'Task Achievement': 7.0}}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": f"Evaluate this answer according to ielts grading system: {answer}",
|
|
},
|
|
]
|
|
elif QuestionType.SPEAKING == question_type:
|
|
return [
|
|
{
|
|
"role": "user",
|
|
"content": "You are a IELTS examiner.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": f"The question you have to grade is of type Speaking and is the following: {question}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "It is mandatory for you to provide your response with the overall grade and breakdown grades, "
|
|
"with just the following json format: {'comment': 'comment about answer quality', 'overall': 7.0, "
|
|
"'task_response': {'Fluency and Coherence': 8.0, 'Lexical Resource': 6.5, "
|
|
"'Grammatical Range and Accuracy': 7.5, 'Pronunciation': 6.0}}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Example output: { 'comment': 'The candidate has provided a clear response to the question and has "
|
|
"given examples of how they spend their weekends. However, there are some issues with grammar and "
|
|
"pronunciation that affect the overall score. In terms of fluency and coherence, the candidate speaks "
|
|
"clearly and smoothly with only minor hesitations. They have also provided a well-organized response "
|
|
"that is easy to follow. Regarding lexical resource, the candidate has used a range of vocabulary "
|
|
"related to weekend activities but there are some errors in word choice that affect the meaning of "
|
|
"their sentences. In terms of grammatical range and accuracy, the candidate has used a mix of simple "
|
|
"and complex sentence structures but there are some errors in subject-verb agreement and preposition "
|
|
"use. Finally, regarding pronunciation, the candidate's speech is generally clear but there are some "
|
|
"issues with stress and intonation that make it difficult to understand at times.', 'overall': 6.5, "
|
|
"'task_response': {'Fluency and Coherence': 7.0, 'Lexical Resource': 6.5, 'Grammatical Range and Accuracy': 7.0,"
|
|
" 'Pronunciation': 6.0}}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": f"Evaluate this answer according to ielts grading system: {answer}",
|
|
},
|
|
]
|
|
else:
|
|
raise Exception("Question type not implemented: " + question_type.value)
|
|
|
|
|
|
def get_question_gen_messages(question_type: QuestionType):
|
|
if QuestionType.WRITING_TASK_2 == question_type:
|
|
return [
|
|
{
|
|
"role": "user",
|
|
"content": "You are a IELTS program that generates questions for the exams.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "The question you have to generate is of type Writing Task 2.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "It is mandatory for you to provide your response with the question "
|
|
"just with the following json format: {'question': 'question'}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Example output: { 'question': 'We are becoming increasingly dependent on computers. "
|
|
"They are used in businesses, hospitals, crime detection and even to fly planes. What things will "
|
|
"they be used for in the future? Is this dependence on computers a good thing or should we he more "
|
|
"auspicious of their benefits?'}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Generate a question for IELTS exam Writing Task 2.",
|
|
},
|
|
]
|
|
elif QuestionType.SPEAKING == question_type:
|
|
return [
|
|
{
|
|
"role": "user",
|
|
"content": "You are a IELTS program that generates questions for the exams.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "The question you have to generate is of type Speaking Task.",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "It is mandatory for you to provide your response with the question "
|
|
"just with the following json format: {'question': 'question'}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Example output: { 'question': 'Describe someone you know who does something well. You should say "
|
|
"who this person is, how do you know this person, what they do well and explain why you think this "
|
|
"person is so good at doing this.'}",
|
|
},
|
|
{
|
|
"role": "user",
|
|
"content": "Generate a question for IELTS exam Speaking Task.",
|
|
},
|
|
]
|
|
else:
|
|
raise Exception("Question type not implemented: " + question_type.value)
|