textclarity / app.py
ganna217's picture
Initial commit with all files for TexClarity
d6791c3
raw
history blame
1.42 kB
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from transformers import pipeline
import os
import uvicorn
app = FastAPI()
# Mount the templates directory for serving HTML
templates = Jinja2Templates(directory="templates")
# Load the zero-shot classification model
classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
# Route to serve index.html
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
# Route to handle text classification requests
@app.post("/classify")
async def classify_text(data: dict):
try:
text = data.get("document")
labels = data.get("labels")
if not text or not labels:
return {"error": "Please provide both text and labels"}, 400
# Perform classification
result = classifier(text, labels, multi_label=False)
response = {
"labels": result["labels"],
"scores": result["scores"]
}
return response, 200
except Exception as e:
return {"error": str(e)}, 500
# Run the app on HF中国镜像站's required port
if __name__ == "__main__":
port = int(os.environ.get("PORT", 7860))
uvicorn.run(app, host="0.0.0.0", port=port)