Added endpoint for /fetch_tips
This commit is contained in:
24
app.py
24
app.py
@@ -3,7 +3,7 @@ from flask_jwt_extended import JWTManager, jwt_required
|
|||||||
from functools import reduce
|
from functools import reduce
|
||||||
import firebase_admin
|
import firebase_admin
|
||||||
from firebase_admin import credentials
|
from firebase_admin import credentials
|
||||||
from helper.api_messages import QuestionType, get_grading_messages, get_question_gen_messages
|
from helper.api_messages import QuestionType, get_grading_messages, get_question_gen_messages, get_question_tips
|
||||||
from helper.file_helper import delete_files_older_than_one_day
|
from helper.file_helper import delete_files_older_than_one_day
|
||||||
from helper.firebase_helper import download_firebase_file, upload_file_firebase
|
from helper.firebase_helper import download_firebase_file, upload_file_firebase
|
||||||
from helper.speech_to_text_helper import speech_to_text, text_to_speech
|
from helper.speech_to_text_helper import speech_to_text, text_to_speech
|
||||||
@@ -11,6 +11,7 @@ from helper.token_counter import count_tokens
|
|||||||
from helper.openai_interface import make_openai_call
|
from helper.openai_interface import make_openai_call
|
||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
|
import re
|
||||||
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
@@ -140,6 +141,27 @@ def grade_writing_task_2():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return str(e)
|
return str(e)
|
||||||
|
|
||||||
|
@app.route('/fetch_tips', methods=['POST'])
|
||||||
|
@jwt_required()
|
||||||
|
def fetch_answer_tips():
|
||||||
|
try:
|
||||||
|
data = request.get_json()
|
||||||
|
context = data.get('context')
|
||||||
|
question = data.get('question')
|
||||||
|
answer = data.get('answer')
|
||||||
|
correct_answer = data.get('correct_answer')
|
||||||
|
messages = get_question_tips(question, answer, correct_answer, context)
|
||||||
|
token_count = reduce(lambda count, item: count + count_tokens(item)['n_tokens'],
|
||||||
|
map(lambda x: x["content"], filter(lambda x: "content" in x, messages)), 0)
|
||||||
|
response = make_openai_call(GPT_3_5_TURBO, messages, token_count, GRADING_FIELDS, GRADING_TEMPERATURE)
|
||||||
|
|
||||||
|
if isinstance(response, str):
|
||||||
|
response = re.sub(r"^[a-zA-Z0-9_]+\:\s*", "", response)
|
||||||
|
|
||||||
|
return response
|
||||||
|
except Exception as e:
|
||||||
|
return str(e)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/writing_task2', methods=['GET'])
|
@app.route('/writing_task2', methods=['GET'])
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
|
|||||||
@@ -344,3 +344,37 @@ def get_question_gen_messages(question_type: QuestionType):
|
|||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
raise Exception("Question type not implemented: " + question_type.value)
|
raise Exception("Question type not implemented: " + question_type.value)
|
||||||
|
|
||||||
|
|
||||||
|
def get_question_tips(question: str, answer: str, correct_answer: str, context: str = None):
|
||||||
|
messages = [
|
||||||
|
{
|
||||||
|
"role": "system",
|
||||||
|
"content": "You are a IELTS exam program that analyzes incorrect answers to questions and gives tips to "
|
||||||
|
"help students understand why it was a wrong answer and explains how their thought process "
|
||||||
|
"should have been. The tip should refer to the context and question.",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if not (context is None or context == ""):
|
||||||
|
messages.append({
|
||||||
|
"role": "system",
|
||||||
|
"content": f"This is the context for the question: {context}",
|
||||||
|
})
|
||||||
|
|
||||||
|
messages.extend([
|
||||||
|
{
|
||||||
|
"role": "system",
|
||||||
|
"content": f"This is the question: {question}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "system",
|
||||||
|
"content": f"This is the answer: {answer}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "system",
|
||||||
|
"content": f"This is the correct answer: {correct_answer}",
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
return messages
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"info": {
|
"info": {
|
||||||
"_postman_id": "2e0eed9d-6a6f-4785-9972-087d51ac0265",
|
"_postman_id": "c3a09737-c624-4b32-9e9a-af8ee8084764",
|
||||||
"name": "ielts",
|
"name": "ielts",
|
||||||
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
|
||||||
"_exporter_id": "26107457"
|
"_exporter_id": "29491168"
|
||||||
},
|
},
|
||||||
"item": [
|
"item": [
|
||||||
{
|
{
|
||||||
@@ -257,6 +257,53 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"response": []
|
"response": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fetch Answer Tips",
|
||||||
|
"request": {
|
||||||
|
"auth": {
|
||||||
|
"type": "bearer",
|
||||||
|
"bearer": [
|
||||||
|
{
|
||||||
|
"key": "token",
|
||||||
|
"value": "{{jwt_token}}",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{
|
||||||
|
"key": "Content-Type",
|
||||||
|
"value": "application/json",
|
||||||
|
"type": "text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\n \"question\": \"When did Kendrick Lamar sign for TDE?\",\n \"answer\": \"Hello GPT.\",\n\t\t\"correct_answer\": \"2005\",\n \"context\": \"Kendrick Lamar Duckworth (born June 17, 1987) is an American rapper and songwriter. Known for his progressive musical styles and socially conscious songwriting, he is often considered one of the most influential hip hop artists of his generation. Born and raised in Compton, California, Lamar began his career as a teenager performing under the stage name K.Dot. He quickly garnered local attention which led to him signing a recording contract with Top Dawg Entertainment (TDE) in 2005.\"\n}\n",
|
||||||
|
"options": {
|
||||||
|
"raw": {
|
||||||
|
"language": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "http://127.0.0.1:5000/fetch_tips",
|
||||||
|
"protocol": "http",
|
||||||
|
"host": [
|
||||||
|
"127",
|
||||||
|
"0",
|
||||||
|
"0",
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"port": "5000",
|
||||||
|
"path": [
|
||||||
|
"fetch_tips"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user