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 @app.post("/classify") 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)