fakeguard-th-api / main.py
Pottersk's picture
Upload folder using huggingface_hub
c71be75 verified
Raw
History Blame Contribute Delete
1.71 kB
"""FakeGuard-TH Backend API — Hugging Face Space (Docker)
โหลดโมเดลทั้ง 3 ตัว (SVM, Random Forest, WangchanBERTa) จาก HF Model Hub
ตอน container start แล้วให้บริการผ่าน FastAPI เหมือน backend/main.py ทุกอย่าง
"""
import os
from contextlib import asynccontextmanager
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel, Field
from inference import ModelRegistry
registry = ModelRegistry()
FRONTEND_ORIGIN = os.environ.get("FRONTEND_ORIGIN", "*")
@asynccontextmanager
async def lifespan(app: FastAPI):
registry.warmup()
yield
app = FastAPI(
title="FakeGuard-TH API",
description="ระบบตรวจสอบความน่าเชื่อถือของข่าวภาษาไทย (โครงงาน JSTP รุ่นที่ 29)",
version="0.1.0",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"] if FRONTEND_ORIGIN == "*" else [FRONTEND_ORIGIN],
allow_methods=["*"],
allow_headers=["*"],
)
class PredictRequest(BaseModel):
text: str = Field(min_length=10, max_length=2000)
model: str | None = Field(default=None)
@app.get("/api/health")
def health() -> dict:
return {"status": "ok", "best_model": registry.best}
@app.get("/api/models")
def models() -> dict:
return registry.metrics
@app.post("/api/predict")
def predict(req: PredictRequest) -> dict:
try:
return registry.predict(req.text, req.model)
except KeyError as e:
raise HTTPException(status_code=400, detail=str(e)) from e