mance-sandbox / app.py
ihounie's picture
Update app.py
f5ceb1f verified
import gradio as gr
def extract_text_from_pdf(file):
return None
def generate_multiple_choice_question(text):
# Placeholder function to simulate question generation
question = "What is the capital of France?"
option_a = "Berlin"
option_b = "Paris"
correct_option = "b"
explanation = "Paris is the capital and most populous city of France."
return {
"question": question,
"option_a": option_a,
"option_b": option_b,
"correct_option": correct_option,
"explanation": explanation
}
def check_answer(selected_option, correct_option, explanation):
success = selected_option == correct_option
result_text = f"Correct! {explanation}" if success else f"Incorrect. {explanation}"
return result_text, success
def main(pdf_file):
text = extract_text_from_pdf(pdf_file)
mcq = generate_multiple_choice_question(text)
question = mcq["question"]
option_a = mcq["option_a"]
option_b = mcq["option_b"]
correct_option = mcq["correct_option"]
explanation = mcq["explanation"]
return question, option_a, option_b, correct_option, explanation
with gr.Blocks() as demo:
pdf_file = gr.File(label="Upload PDF", file_types=["pdf"])
question = gr.Textbox(label="Generated Question", interactive=False)
option_a = gr.Textbox(label="Option A", interactive=False)
option_b = gr.Textbox(label="Option B", interactive=False)
selected_option = gr.Radio(choices=["a", "b"], label="Select your answer")
result = gr.Textbox(label="Result", interactive=False)
def process(pdf_file):
q, a, b, correct, expl = main(pdf_file)
return q, a, b, correct, expl
def evaluate(selected_option, correct_option, explanation):
result_text, success = check_answer(selected_option, correct_option, explanation)
return result_text
process_button = gr.Button("Generate Question")
evaluate_button = gr.Button("Submit Answer")
process_button.click(fn=process, inputs=[pdf_file], outputs=[question, option_a, option_b, selected_option, result])
evaluate_button.click(fn=evaluate, inputs=[selected_option, selected_option, result], outputs=result)
demo.launch()