Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException | |
| from pydantic import BaseModel | |
| from typing import List | |
| from gliner import GLiNER | |
| import os | |
| import time | |
| app = FastAPI(title="SIGAP AI ML Service (HF Spaces)") | |
| MODEL_HUB = "urchade/gliner_multi-v2.1" | |
| print(f"Downloading model {MODEL_HUB} from HuggingFace...", flush=True) | |
| try: | |
| model = GLiNER.from_pretrained(MODEL_HUB) | |
| print("Model GLiNER loaded successfully!", flush=True) | |
| except Exception as e: | |
| print(f"Failed loading GLiNER model: {e}", flush=True) | |
| raise e | |
| LABELS = ["nama", "usia", "kondisi medis", "keterbatasan mobilitas", "asal lokasi", "anggota keluarga", "ketiadaan obat"] | |
| class ExtractRequest(BaseModel): | |
| teks: str | |
| class Entity(BaseModel): | |
| label: str | |
| text: str | |
| confidence: float | |
| async def extract_entities(req: ExtractRequest): | |
| start_time = time.time() | |
| try: | |
| predictions = model.predict_entities(req.teks, LABELS, threshold=0.4) | |
| entities = [{"label": p["label"], "text": p["text"], "confidence": float(p["score"])} for p in predictions] | |
| latency = (time.time() - start_time) * 1000 | |
| return {"entities": entities, "latency_ms": latency} | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| async def root(): | |
| return {"status": "Model GLiNER Ready!"} |