chikki2004's picture
Update app.py
47fe6f5 verified
Raw
History Blame Contribute Delete
1.96 kB
import torch
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import gradio as gr
import json
import os
from datetime import datetime
import firebase_admin
from firebase_admin import credentials, firestore
# === Firebase Setup ===
firebase_key = json.loads(os.environ["FIREBASE_CREDENTIALS_JSON"])
cred = credentials.Certificate(firebase_key)
firebase_admin.initialize_app(cred)
db = firestore.client()
# === Load Model ===
model_checkpoint = "chikki2004/incident-bart-model"
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = AutoModelForSeq2SeqLM.from_pretrained(model_checkpoint)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
def parse_gradio_result(response_text):
attributes = {}
if ";" in response_text:
lines = response_text.strip().split(";")
else:
lines = response_text.strip().split("\n")
for line in lines:
if ":" in line:
key, value = line.split(":", 1)
attributes[key.strip().lower().replace(" ", "_")] = value.strip()
return attributes
def predict(input_text):
# Predict
inputs = tokenizer(input_text, return_tensors="pt", truncation=True, padding="max_length", max_length=256)
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model.generate(**inputs, max_length=256)
decoded = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Log to Firebase
parsed = parse_gradio_result(decoded)
db.collection("gradio_predictions").add({
"input_text": input_text,
"raw_prediction": decoded,
"parsed_attributes": parsed,
"timestamp": datetime.now().isoformat()
})
return decoded
# ✅ This line exposes it at /run/predict
iface = gr.Interface(
fn=predict,
inputs=gr.Textbox(lines=5),
outputs="text",
title="Incident Attribute Predictor",
api_name="/predict"
)
iface.launch(ssr_mode=False,share=True)