Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -103,6 +103,15 @@ async def startup_event():
|
|
| 103 |
logger.info("🔐 HUGGINGFACE_TOKEN detected for NER model access")
|
| 104 |
else:
|
| 105 |
logger.info("ℹ️ No HUGGINGFACE_TOKEN provided (NER model assumed public)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
|
| 107 |
# Start cleanup task
|
| 108 |
cleanup_task = asyncio.create_task(periodic_cleanup())
|
|
@@ -559,6 +568,30 @@ async def health_check():
|
|
| 559 |
}
|
| 560 |
)
|
| 561 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 562 |
@app.delete("/session/{session_id}")
|
| 563 |
async def delete_session(session_id: str):
|
| 564 |
"""Manually delete a session and all related data"""
|
|
|
|
| 103 |
logger.info("🔐 HUGGINGFACE_TOKEN detected for NER model access")
|
| 104 |
else:
|
| 105 |
logger.info("ℹ️ No HUGGINGFACE_TOKEN provided (NER model assumed public)")
|
| 106 |
+
|
| 107 |
+
# Eagerly load and validate NER model once on startup for peace of mind
|
| 108 |
+
try:
|
| 109 |
+
ner_model_id = "kn29/my-ner-model"
|
| 110 |
+
logger.info(f"🧠 Preloading NER model: {ner_model_id}")
|
| 111 |
+
_ = run_ner("Warmup NER model load.", model_id=ner_model_id)
|
| 112 |
+
logger.info(f"✅ NER model ready: {ner_model_id}")
|
| 113 |
+
except Exception as e:
|
| 114 |
+
logger.error(f"❌ NER preload failed: {str(e)}")
|
| 115 |
|
| 116 |
# Start cleanup task
|
| 117 |
cleanup_task = asyncio.create_task(periodic_cleanup())
|
|
|
|
| 568 |
}
|
| 569 |
)
|
| 570 |
|
| 571 |
+
@app.get("/ner/health")
|
| 572 |
+
async def ner_health_check():
|
| 573 |
+
"""Verify NER model can load and process a tiny input."""
|
| 574 |
+
try:
|
| 575 |
+
ner_model_id = "kn29/my-ner-model"
|
| 576 |
+
result = run_ner("Test entity: Supreme Court.", model_id=ner_model_id)
|
| 577 |
+
return JSONResponse(
|
| 578 |
+
status_code=200,
|
| 579 |
+
content={
|
| 580 |
+
"status": "ready",
|
| 581 |
+
"model_id": ner_model_id,
|
| 582 |
+
"total_entities": result.get("total_entities", 0),
|
| 583 |
+
"labels": result.get("unique_labels", []),
|
| 584 |
+
}
|
| 585 |
+
)
|
| 586 |
+
except Exception as e:
|
| 587 |
+
return JSONResponse(
|
| 588 |
+
status_code=503,
|
| 589 |
+
content={
|
| 590 |
+
"status": "error",
|
| 591 |
+
"error": str(e)
|
| 592 |
+
}
|
| 593 |
+
)
|
| 594 |
+
|
| 595 |
@app.delete("/session/{session_id}")
|
| 596 |
async def delete_session(session_id: str):
|
| 597 |
"""Manually delete a session and all related data"""
|