kn29 commited on
Commit
2367fbf
·
verified ·
1 Parent(s): e611cc9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -0
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"""