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) | |