Spaces:
Running
Running
from fastapi import FastAPI | |
from pydantic import BaseModel | |
from transformers import pipeline | |
from datetime import datetime | |
import os | |
app = FastAPI() | |
# Load model | |
classifier = pipeline( | |
"zero-shot-classification", | |
model="MoritzLaurer/DeBERTa-v3-base-mnli-fever-anli" | |
) | |
# Pydantic input model | |
class EmailRequest(BaseModel): | |
email: str | |
# Endpoint to classify email | |
def classify_email(request: EmailRequest): | |
labels = ["Approved", "Rejected", "Unclear"] | |
result = classifier(request.email, candidate_labels=labels) | |
top_label = result['labels'][0] | |
confidence = round(result['scores'][0], 2) | |
# Logging | |
log_line = f"{datetime.now()} | {top_label:<9} ({confidence}) | {request.email}\n" | |
os.makedirs("logs", exist_ok=True) | |
with open("logs/inputs.log", "a", encoding="utf-8") as f: | |
f.write(log_line) | |
return {"label": top_label, "confidence": confidence} | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run("app:app", host="0.0.0.0", port=7860) | |