Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI, HTTPException | |
| from pydantic import BaseModel | |
| from gliner import GLiNER | |
| import gradio as gr | |
| import spaces | |
| 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) | |
| model = GLiNER.from_pretrained(MODEL_HUB) | |
| print("Model GLiNER loaded successfully!", flush=True) | |
| 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 | |
| def predict_entities(teks: str): | |
| predictions = model.predict_entities(teks, LABELS, threshold=0.4) | |
| return [ | |
| { | |
| "label": p["label"], | |
| "text": p["text"], | |
| "confidence": float(p["score"]), | |
| } | |
| for p in predictions | |
| ] | |
| async def extract_entities(req: ExtractRequest): | |
| start_time = time.time() | |
| try: | |
| entities = predict_entities(req.teks) | |
| 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!"} | |
| def ui_predict(teks): | |
| return predict_entities(teks) | |
| demo = gr.Interface( | |
| fn=ui_predict, | |
| inputs="text", | |
| outputs="json", | |
| title="SIGAP AI ML Service" | |
| ) | |
| app = gr.mount_gradio_app(app, demo, path="/ui") |