import gradio as gr import random from datasets import load_dataset # # Sample dataset with unique 10-digit IDs # qa_dataset = { # "1234567890": { # "question": "What is the capital of France?", # "choices": ["A. Berlin", "B. Madrid", "C. Paris", "D. Lisbon"], # "answer": "C. Paris" # }, # "0987654321": { # "question": "What is the largest planet in our solar system?", # "choices": ["A. Earth", "B. Jupiter", "C. Saturn", "D. Mars", "E. Venus"], # "answer": "B. Jupiter" # }, # # Add more questions with unique IDs as needed # } truth_data = load_dataset("commonsense-index-dev/commonsense-candidates", "iter6-0520-error", split="train") qa_dataset = {} for item in truth_data: qa_dataset[item["id"]] = { "question": item["task"], "choices": item["choices"], "answer": item["answer"] } def get_random_question(): question_id = random.choice(list(qa_dataset.keys())) question_data = qa_dataset[question_id] return question_id, question_data["question"], question_data["choices"] def get_question_by_id(question_id): if question_id in qa_dataset: question_data = qa_dataset[question_id] return question_id, question_data["question"], question_data["choices"] else: return None, "Invalid question ID", [] def check_answer(question_id, choice): correct_answer = qa_dataset[question_id]["answer"] return "Correct!" if choice == correct_answer else f"Incorrect. The correct answer is {correct_answer}." def load_question(question_id=None): if question_id: question_id, question, choices = get_question_by_id(question_id) else: question_id, question, choices = get_random_question() question = f"## {question}" choices_markdown = "\n".join(choices) return question_id, question, choices_markdown, gr.update(visible=True), gr.update(value="", visible=True) def show_buttons(choices_markdown): choices = choices_markdown.split("\n") visibility = [gr.update(visible=False)] * 10 for i in range(len(choices)): visibility[i] = gr.update(visible=True, value=choices[i]) return visibility with gr.Blocks() as app: gr.Markdown("# Multiple Choice QA Dataset Viewer") question_id_input = gr.Textbox(label="Enter Question ID", placeholder="leave empty for random sampling") random_button = gr.Button("Retrieve or Random Sample") question_display = gr.Markdown(visible=True) choices_markdown = gr.Markdown(visible=False) choice_buttons = [gr.Button(visible=False) for _ in range(10)] result_display = gr.Markdown(visible=True) question_id = gr.State() question_id_input.submit(fn=load_question, inputs=question_id_input, outputs=[question_id, question_display, choices_markdown, result_display]) random_button.click(fn=load_question, outputs=[question_id, question_display, choices_markdown, result_display]) choices_markdown.change(fn=show_buttons, inputs=choices_markdown, outputs=choice_buttons) for i, button in enumerate(choice_buttons): button.click(fn=check_answer, inputs=[question_id, button], outputs=result_display) app.launch()