import gradio as gr from Backend import process_and_generate_report # Import backend functions with gr.Blocks() as iface: gr.Markdown("##
AI-DRIVEN DROPOUT PREDICTION AND PREVENTION TOOL
") with gr.Row(): with gr.Column(): inputs = {} gr.Markdown("### Basic Information") with gr.Row(): inputs["roll_no"] = gr.Textbox(label="Roll No", value="7376211CS203") inputs["semester"] = gr.Dropdown(label="Semester", choices=["I", "II", "III", "IV", "V", "VI", "VII", "VIII"], value="VIII", interactive=True) gr.Markdown("### Degree Information") inputs["degree"] = gr.Dropdown(label="Degree", choices=[ "B.E. - ELECTRONICS AND INSTRUMENTATION ENGINEERING", "B.E. - ELECTRONICS AND COMMUNICATION ENGINEERING", "B.E. - ELECTRICAL AND ELECTRONICS ENGINEERING", "B.E. - COMPUTER SCIENCE AND ENGINEERING", "B.E. - MECHANICAL ENGINEERING", "B.E. - MECHATRONICS ENGINEERING", "B.Tech. - AGRICULTURAL ENGINEERING", "B.Tech. - ARTIFICIAL INTELLIGENCE AND DATA SCIENCE", "B.Tech. - ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING", "B.Tech. - COMPUTER SCIENCE AND BUSINESS SYSTEMS", "B.Tech. - INFORMATION TECHNOLOGY","B.Tech. - BIOTECHNOLOGY", ], value="B.E. - COMPUTER SCIENCE AND ENGINEERING", interactive=True) inputs["special_lab"] = gr.Dropdown(label="Special Lab", choices=["Active", "Non-Active"], value="Non-Active", interactive=True) gr.Markdown("### Academic Performance") with gr.Row(): inputs["attendance_percentage"] = gr.Number(label="Attendance Percentage", minimum=0, maximum=100, value=90) inputs["formative_assessment"] = gr.Number(label="Formative Assessment (Academic %)", minimum=0, maximum=100, value=50) with gr.Row(): inputs["cgpa"] = gr.Number(label="CGPA", minimum=0, maximum=10, value=8.0) inputs["current_sgpa"] = gr.Number(label="Current SGPA", minimum=0, maximum=10, value=7.5) inputs["arrear_count"] = gr.Number(label="Arrear Count", minimum=0, maximum=48, value=1) gr.Markdown("### Placement and Assessments") with gr.Row(): inputs["placement_fa"] = gr.Number(label="Placement FA %", minimum=0, maximum=100, value=50) inputs["placement_cumulative"] = gr.Number(label="Placement Cumulative", minimum=0, maximum=100, value=60) inputs["placement_Attendence"] = gr.Number(label="Placement Attendance", minimum=0, maximum=100, value=70) inputs["interim_assessment_status"] = gr.Number(label="Interim Assessment Status", minimum=0, maximum=100, value=70) inputs["training_assessment_status"] = gr.Number(label="Training Assessment Status", minimum=0, maximum=100, value=75) inputs["mock_assessment_status"] = gr.Number(label="Mock Assessment Status", minimum=0, maximum=100, value=80) gr.Markdown("### Skill Rankings") with gr.Row(): inputs["full_stack_rank"] = gr.Number(label="Full Stack Rank", minimum=0, maximum=1700, value=850) inputs["ps_rank"] = gr.Number(label="PS Level Completed", minimum=0, maximum=30, value=3) inputs["Overall_Skills_Acquired"] = gr.Number(label="Total Skills Acquired", value=7) gr.Markdown("### Extracurricular Activities") with gr.Row(): for key in ["Technical_Competition", "Paper_Presentation", "Project_Competition", "Product_Development", "Patent", "Internship", "Online_Course"]: inputs[key] = gr.Number(label=key.replace("_", " ").title(), value=0) submit = gr.Button("Predict Dropout") with gr.Column(): gr.Markdown("### Prediction Output") output_plot = gr.Plot(label="Dropout Risk Graph") summary = gr.Textbox(label="Final Summary") download_btn = gr.File(label="Download Report", interactive=False) submit.click( lambda *args: process_and_generate_report(**dict(zip(inputs.keys(), args))), inputs=list(inputs.values()), outputs=[output_plot, summary, download_btn] ) iface.launch()