File size: 1,066 Bytes
9e6a1d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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)