Amey9766's picture
Update app.py
4e90c33 verified
Raw
History Blame Contribute Delete
1.69 kB
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
MODEL_NAME = "Amey9766/llama32-1b-maintenance-classifier"
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
# Load model on CPU to avoid meta tensor issues
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
torch_dtype=torch.float32,
device_map=None
)
model.to("cpu")
def classify(text):
# Strong classification prompt to force label output
prompt = (
"You are a maintenance request classifier. "
"Your job is to output ONLY ONE WORD: urgent, routine, or cosmetic.\n\n"
f"Request: {text}\n"
"Category:"
)
inputs = tokenizer(prompt, return_tensors="pt").to("cpu")
outputs = model.generate(
**inputs,
max_new_tokens=3,
temperature=0.0,
do_sample=False,
eos_token_id=tokenizer.eos_token_id
)
raw = tokenizer.decode(outputs[0], skip_special_tokens=True).lower()
# Extract only the part after "category:"
if "category:" in raw:
raw = raw.split("category:")[-1].strip()
# Match labels
if "urgent" in raw:
return "🔴 URGENT"
if "routine" in raw:
return "🟡 ROUTINE"
if "cosmetic" in raw:
return "🟢 COSMETIC"
return f"Unrecognized output: {raw}"
# Gradio UI
demo = gr.Interface(
fn=classify,
inputs=gr.Textbox(label="Enter maintenance request"),
outputs=gr.Textbox(label="Predicted Category"),
title="Maintenance Request Classifier",
description="Predicts whether a maintenance request is urgent, routine, or cosmetic."
)
if __name__ == "__main__":
demo.launch()