Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| # Path to your local model folder inside this Space | |
| MODEL_PATH = "./intent_model" | |
| # Load the text classification pipeline | |
| intent_model = pipeline("text-classification", model=MODEL_PATH) | |
| # Map model labels to human-readable intent names | |
| LABEL_TO_INTENT = { | |
| "LABEL_0": "admission_process", | |
| "LABEL_1": "eligibility", | |
| "LABEL_2": "fees_info", | |
| "LABEL_3": "admission_dates", | |
| "LABEL_4": "user_info", | |
| "LABEL_5": "document_requirements", | |
| "LABEL_6": "evaluation_process", | |
| "LABEL_7": "contact_info", | |
| "LABEL_8": "scholarship_info", | |
| "LABEL_9": "technical_support", | |
| "LABEL_10": "academic_details", | |
| "LABEL_11": "campus_life", | |
| } | |
| def predict_intent(query: str): | |
| """ | |
| Takes a user query string and returns: | |
| - Predicted intent name | |
| - Confidence (percentage string) | |
| """ | |
| if not query.strip(): | |
| return "Please enter a message", "" | |
| # Run the model | |
| result = intent_model(query)[0] # e.g. {"label": "LABEL_1", "score": 0.98} | |
| label = result["label"] | |
| confidence = float(result["score"]) | |
| # Convert LABEL_X to human-readable intent | |
| intent_name = LABEL_TO_INTENT.get(label, label) | |
| return intent_name, f"{confidence:.2%}" | |
| # Gradio interface (UI + REST API) | |
| demo = gr.Interface( | |
| fn=predict_intent, | |
| inputs=gr.Textbox(lines=3, label="User message"), | |
| outputs=[ | |
| gr.Textbox(label="Predicted intent"), | |
| gr.Textbox(label="Confidence"), | |
| ], | |
| title="University Intent Classifier", | |
| description="Classifies queries into intents like admission, eligibility, fees, campus life, etc.", | |
| examples=[ | |
| ["How can I apply for admission?"], | |
| ["What is the eligibility for BTech?"], | |
| ["Is there any scholarship available?"], | |
| ["When do admissions start?"], | |
| ["Who should I contact for technical issues?"], | |
| ], | |
| api_name="predict", # exposes /run/predict endpoint | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |