Minor speaking improvements.
This commit is contained in:
103
app.py
103
app.py
@@ -314,6 +314,11 @@ def grade_writing_task_1():
|
||||
'Additionally, provide a detailed commentary highlighting both strengths and '
|
||||
'weaknesses in the response. '
|
||||
'\n Question: "' + question + '" \n Answer: "' + answer + '"')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": ('Refer to the parts of the letter as: "Greeting Opener", "bullet 1", "bullet 2", '
|
||||
'"bullet 3", "closer (restate the purpose of the letter)", "closing greeting"')
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
@@ -713,7 +718,8 @@ def get_speaking_task_1_question():
|
||||
"first_topic": "topic 1",
|
||||
"second_topic": "topic 2",
|
||||
"questions": [
|
||||
"Introductory question, should start with a greeting and introduce a question about the first topic, starting the topic with 'Let's talk about x' and then the question.",
|
||||
"Introductory question about the first topic, starting the topic with 'Let's talk about x' and then the "
|
||||
"question.",
|
||||
"Follow up question about the first topic",
|
||||
"Follow up question about the first topic",
|
||||
"Question about second topic",
|
||||
@@ -731,21 +737,25 @@ def get_speaking_task_1_question():
|
||||
{
|
||||
"role": "user",
|
||||
"content": (
|
||||
'Craft 5 simple questions of easy difficulty for IELTS Speaking Part 1 '
|
||||
'Craft 5 simple and single questions of easy difficulty for IELTS Speaking Part 1 '
|
||||
'that encourages candidates to delve deeply into '
|
||||
'personal experiences, preferences, or insights on the topic '
|
||||
'of "' + first_topic + '" and the topic of "' + second_topic + '". Instruct the candidate '
|
||||
'to offer not only detailed '
|
||||
'descriptions but also provide '
|
||||
'nuanced explanations, examples, '
|
||||
'or anecdotes to enrich their response. '
|
||||
'Make sure that the generated question '
|
||||
'does not contain forbidden subjects in '
|
||||
'of "' + first_topic + '" and the topic of "' + second_topic + '". '
|
||||
'Make sure that the generated '
|
||||
'question'
|
||||
'does not contain forbidden '
|
||||
'subjects in'
|
||||
'muslim countries.')
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": 'The questions should lead to the usage of 4 verb tenses (present perfect, present, past and future).'
|
||||
"content": 'The questions should lead to the usage of 4 verb tenses (present perfect, present, '
|
||||
'past and future).'
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": 'They must be 1 single question each and not be double-barreled questions.'
|
||||
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
@@ -785,7 +795,8 @@ def grade_speaking_task_2():
|
||||
"task_response": {
|
||||
"Fluency and Coherence": {
|
||||
"grade": 0.0,
|
||||
"comment": "extensive comment about fluency and coherence, use examples to justify the grade awarded."
|
||||
"comment": "extensive comment about fluency and coherence, use examples to justify the grade "
|
||||
"awarded."
|
||||
},
|
||||
"Lexical Resource": {
|
||||
"grade": 0.0,
|
||||
@@ -793,11 +804,13 @@ def grade_speaking_task_2():
|
||||
},
|
||||
"Grammatical Range and Accuracy": {
|
||||
"grade": 0.0,
|
||||
"comment": "extensive comment about grammatical range and accuracy, use examples to justify the grade awarded."
|
||||
"comment": "extensive comment about grammatical range and accuracy, use examples to justify the "
|
||||
"grade awarded."
|
||||
},
|
||||
"Pronunciation": {
|
||||
"grade": 0.0,
|
||||
"comment": "extensive comment about pronunciation on the transcribed answer, use examples to justify the grade awarded."
|
||||
"comment": "extensive comment about pronunciation on the transcribed answer, use examples to "
|
||||
"justify the grade awarded."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -974,11 +987,16 @@ def get_speaking_task_3_question():
|
||||
{
|
||||
"role": "user",
|
||||
"content": (
|
||||
'Formulate a set of 5 questions of hard difficulty for IELTS Speaking Part 3 that encourage candidates to engage in a '
|
||||
'Formulate a set of 5 single questions of hard difficulty for IELTS Speaking Part 3 that encourage candidates to engage in a '
|
||||
'meaningful discussion on the topic of "' + topic + '". Provide inquiries, ensuring '
|
||||
'they explore various aspects, perspectives, and implications related to the topic.'
|
||||
'Make sure that the generated question does not contain forbidden subjects in muslim countries.')
|
||||
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": 'They must be 1 single question each and not be double-barreled questions.'
|
||||
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
@@ -1203,7 +1221,7 @@ def save_speaking():
|
||||
def generate_video_1():
|
||||
try:
|
||||
data = request.get_json()
|
||||
sp3_questions = []
|
||||
sp1_questions = []
|
||||
avatar = data.get("avatar", random.choice(list(AvatarEnum)).value)
|
||||
|
||||
request_id = str(uuid.uuid4())
|
||||
@@ -1211,8 +1229,24 @@ def generate_video_1():
|
||||
"Use this id to track the logs: " + str(request_id) + " - Request data: " + str(
|
||||
request.get_json()))
|
||||
|
||||
id_to_name = {
|
||||
"5912afa7c77c47d3883af3d874047aaf": "MATTHEW",
|
||||
"9e58d96a383e4568a7f1e49df549e0e4": "VERA",
|
||||
"d2cdd9c0379a4d06ae2afb6e5039bd0c": "EDWARD",
|
||||
"045cb5dcd00042b3a1e4f3bc1c12176b": "TANYA",
|
||||
"1ae1e5396cc444bfad332155fdb7a934": "KAYLA",
|
||||
"0ee6aa7cc1084063a630ae514fccaa31": "JEROME",
|
||||
"5772cff935844516ad7eeff21f839e43": "TYLER",
|
||||
|
||||
}
|
||||
|
||||
standard_questions = [
|
||||
"Hello my name is " + id_to_name.get(avatar) + ", what is yours?",
|
||||
"Do you work or do you study?"
|
||||
]
|
||||
questions = standard_questions + data["questions"]
|
||||
logging.info("POST - generate_video_1 - " + str(request_id) + " - Creating videos for speaking part 1.")
|
||||
for question in data["questions"]:
|
||||
for question in questions:
|
||||
logging.info("POST - generate_video_1 - " + str(request_id) + " - Creating video for question: " + question)
|
||||
result = create_video(question, avatar)
|
||||
logging.info("POST - generate_video_1 - " + str(request_id) + " - Video created: " + result)
|
||||
@@ -1231,13 +1265,13 @@ def generate_video_1():
|
||||
"video_path": firebase_file_path,
|
||||
"video_url": url
|
||||
}
|
||||
sp3_questions.append(video)
|
||||
sp1_questions.append(video)
|
||||
else:
|
||||
logging.error("POST - generate_video_1 - " + str(
|
||||
request_id) + " - Failed to create video for part 1 question: " + question)
|
||||
|
||||
response = {
|
||||
"prompts": sp3_questions,
|
||||
"prompts": sp1_questions,
|
||||
"first_title": data["first_topic"],
|
||||
"second_title": data["second_topic"],
|
||||
"type": "interactiveSpeaking",
|
||||
@@ -1607,6 +1641,39 @@ def get_custom_level():
|
||||
|
||||
return response
|
||||
|
||||
@app.route('/grade_short_answers', methods=['POST'])
|
||||
@jwt_required()
|
||||
def grade_short_answers():
|
||||
data = request.get_json()
|
||||
|
||||
json_format = {
|
||||
"exercises": [
|
||||
{
|
||||
"id": 1,
|
||||
"correct": True,
|
||||
"correct_answer": " correct answer if wrong"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
try:
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": (
|
||||
'You are a helpful assistant designed to output JSON on this format: ' + str(json_format))
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": 'Grade these answers according to the text content and write a correct answer if they are wrong. Text, questions and answers:\n ' + str(data)
|
||||
|
||||
}
|
||||
]
|
||||
token_count = count_total_tokens(messages)
|
||||
response = make_openai_call(GPT_4_O, messages, token_count, GEN_FIELDS, GEN_QUESTION_TEMPERATURE)
|
||||
return response
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
|
||||
@app.route('/fetch_tips', methods=['POST'])
|
||||
@jwt_required()
|
||||
|
||||
Reference in New Issue
Block a user