Spaces:
Runtime error
Runtime error
import requests | |
import gradio as gr | |
from helper import generate_access_token | |
def generate_mcq_questions(grade, board, subject, topics, number_of_questions, multiple_answer, single_answer, | |
easy, medium, hard, remember, understand, apply, analyze, evaluate, create, | |
hint, curricular_goal, competency, lo, lob, difficulty_level, bloom_taxonomy, | |
solution_sheet): | |
data = { | |
"institution_id": "string", | |
"teacher_id": "string", | |
"board": board, | |
"grade": grade, | |
"subject": subject, | |
"topics": topics.split(", "), | |
"number_of_questions": number_of_questions, | |
"question_type_distribution_percentage": { | |
"multiple_answer": multiple_answer, | |
"single_answer": single_answer, | |
}, | |
"difficulty_distribution_percentage": { | |
"easy": easy, | |
"medium": medium, | |
"hard": hard | |
}, | |
"blooms_taxonomy_distribution_percentage": { | |
"Remember": remember, | |
"Understand": understand, | |
"Apply": apply, | |
"Analyze": analyze, | |
"Evaluate": evaluate, | |
"Create": create | |
}, | |
"question_tagging_options": { | |
"Hint": hint, | |
"Curricular_Goal": curricular_goal, | |
"Competency": competency, | |
"LO": lo, | |
"LOB": lob, | |
"Difficulty_level": difficulty_level, | |
"Bloom_Taxonomy": bloom_taxonomy | |
}, | |
"solution_sheet": solution_sheet | |
} | |
print(data) | |
access_token = generate_access_token() | |
if access_token is None: | |
return {"Error": "Failed to generate access token"} | |
response = requests.post("http://20.193.151.200:8080/v1/k12/generate/mcqs", | |
headers={ | |
"accept": "application/json", | |
"content-type": "application/json", | |
"Authorization": f"{access_token}"}, | |
json=data) | |
if(str(response.status_code)[0] != '2'): | |
return {"Error": f"{response.status_code}"} | |
return response.json() | |
def get_mcq_questions(request_id): | |
access_token = generate_access_token() | |
if access_token is None: | |
return {"Error": "Failed to generate access token"} | |
url = f"http://20.193.151.200:8080/v1/k12/generate/mcqs/{request_id}" | |
headers = {"accept": "application/json", | |
"Authorization": access_token} | |
response = requests.get(url, headers=headers) | |
if response.status_code == 200: | |
return response.json() | |
else: | |
return {"Error" : f"{response.status_code}"} | |
def post_interface(): | |
with gr.Blocks() as post_page: | |
grade = gr.Textbox(label="Grade", value="6") | |
board = gr.Textbox(label="Board", value="NCERT") | |
subject = gr.Textbox(label="Subject", value="Science") | |
topics = gr.Textbox(label="Topics (comma-separated)", value="Light") | |
number_of_questions = gr.Number(label="Number of Questions", value=20) | |
gr.Markdown("## Question Type (Multiple Answer, Single Answer) - Absolute") | |
with gr.Row(): | |
with gr.Column(): | |
multiple_answer = gr.Number(label="Multiple Answer Questions", minimum=0, maximum=100, value=0) | |
with gr.Column(): | |
single_answer = gr.Number(label="Single Answer Questions", minimum=0, maximum=100, value=0) | |
# easy = gr.Slider(label="Easy Questions (%)", minimum=0, maximum=100, value=0) | |
# medium = gr.Slider(label="Medium Questions (%)", minimum=0, maximum=100, value=0) | |
# hard = gr.Slider(label="Hard Questions (%)", minimum=0, maximum=100, value=0) | |
gr.Markdown("## Difficulty Distribution (easy, medium, hard) - Percentage") | |
# Difficulty Distribution (easy, medium, hard) | |
with gr.Row(): | |
with gr.Column(): | |
easy = gr.Number(label="Easy", minimum=0, maximum=100, value=0) | |
with gr.Column(): | |
medium = gr.Number(label="Medium", minimum=0, maximum=100, value=0) | |
with gr.Column(): | |
hard = gr.Number(label="Hard", minimum=0, maximum=100, value=0) | |
# remember = gr.Slider(label="Remember (%)", minimum=0, maximum=100, value=0) | |
# understand = gr.Slider(label="Understand (%)", minimum=0, maximum=100, value=0) | |
# apply = gr.Slider(label="Apply (%)", minimum=0, maximum=100, value=0) | |
# analyze = gr.Slider(label="Analyze (%)", minimum=0, maximum=100, value=0) | |
# evaluate = gr.Slider(label="Evaluate (%)", minimum=0, maximum=100, value=0) | |
# create = gr.Slider(label="Create (%)", minimum=0, maximum=100, value=0) | |
gr.Markdown("## Bloom Taxonomy Distribution (Remember, Understand, Apply, Analyze, Evaluate, Create) - Percentage") | |
# Bloom Taxonomy Distribution (Remember, Understand, Apply, Analyze, Evaluate, Create) | |
with gr.Row(): | |
with gr.Column(): | |
remember = gr.Number(minimum=0, maximum=100, step=1, label="Remember", value=0) | |
with gr.Column(): | |
understand = gr.Number(minimum=0, maximum=100, step=1, label="Understand", value=0) | |
with gr.Column(): | |
apply = gr.Number(minimum=0, maximum=100, step=1, label="Apply", value=0) | |
with gr.Row(): | |
with gr.Column(): | |
analyze = gr.Number(minimum=0, maximum=100, step=1, label="Analyze", value=0) | |
with gr.Column(): | |
evaluate = gr.Number(minimum=0, maximum=100, step=1, label="Evaluate", value=0) | |
with gr.Column(): | |
create = gr.Number(minimum=0, maximum=100, step=1, label="Create", value=0) | |
hint = gr.Radio(label="Hint", choices=["Yes", "No"], value="No") | |
curricular_goal = gr.Radio(label="Curricular Goal", choices=["Yes", "No"], value="No") | |
competency = gr.Radio(label="Competency", choices=["Yes", "No"], value="No") | |
lo = gr.Radio(label="LO", choices=["Yes", "No"], value="No") | |
lob = gr.Radio(label="LOB", choices=["Yes", "No"], value="No") | |
difficulty_level = gr.Radio(label="Difficulty Level", choices=["Yes", "No"], value="No") | |
bloom_taxonomy = gr.Radio(label="Bloom Taxonomy", choices=["Yes", "No"], value="No") | |
solution_sheet = gr.Radio(label="Solution Sheet", choices=["Yes", "No"], value="Yes") | |
submit_button = gr.Button("Invoke Request") | |
submit_button.click(generate_mcq_questions, | |
inputs= [grade, board, subject, topics, number_of_questions, multiple_answer, single_answer, | |
easy, medium, hard, remember, understand, apply, analyze, evaluate, create, | |
hint, curricular_goal, competency, lo, lob, difficulty_level, bloom_taxonomy, | |
solution_sheet], | |
outputs=gr.JSON()) | |
return post_page | |
def get_interface(): | |
with gr.Blocks() as get_page: | |
interface = gr.Interface( | |
fn=get_mcq_questions, | |
inputs=gr.Textbox(label="Enter Request ID"), | |
outputs="json", | |
) | |
return get_page | |
def mcq_generation(): | |
gr.Markdown("# MCQ Generation") | |
with gr.Blocks() as mcq_generation: | |
with gr.Tabs(): | |
with gr.TabItem("POST"): | |
post_interface() | |
with gr.TabItem("GET"): | |
get_interface() | |
return mcq_generation |