MCQA-Quiz / app.py
mou3az's picture
Update app.py
e577e73 verified
raw
history blame
2.28 kB
from flask import Flask, request, jsonify, render_template
from huggingface_hub import InferenceClient
from requests.exceptions import RequestException
app = Flask(__name__)
client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.2")
def system_instructions(context):
return f"""<s> [INST] Your are a great teacher and your task is to create 6 questions with answer and 4 choices based on the following context:\n\n{context}\n\n. Each example should be like this
Question: ""
Choices:
A): ""
B): ""
C): ""
D): ""
Answer: "Choose either A, B, C, or D as the correct answer"
Explanation: ""
\n
[/INST]
"""
def generate_quiz(context):
formatted_prompt = system_instructions(context)
generate_kwargs = dict(
temperature=0.1,
max_new_tokens=2048,
top_p=0.95,
repetition_penalty=1.0,
do_sample=True,
seed=42,)
try:
response = client.text_generation(
formatted_prompt,
**generate_kwargs,
stream=False,
details=False,
return_full_text=False,
)
return response
except (RequestException, SystemExit) as e:
return {"error": str(e)}
@app.route("/", methods=["GET", "POST"])
def generate_quiz_page():
if request.method == "POST":
if request.content_type == 'application/json':
data = request.get_json()
context = data.get("context")
if context is None or context.strip() == "":
return jsonify({"error": "Missing or empty 'context' parameter"}), 400
else:
context = request.form.get("context")
if context is None or context.strip() == "":
return jsonify({"error": "Missing or empty 'context' parameter"}), 400
response = generate_quiz(context)
if request.content_type == 'application/json':
return jsonify(response)
response_text = response.get('text', '') if isinstance(response, dict) else ''
return render_template('quiz.html', textWithAnswers=response_text)
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=True)