Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import os | |
| import uvicorn | |
| from app.config import settings | |
| from app.services.rag import MedicalRAGService | |
| def build_index_if_possible() -> None: | |
| try: | |
| service = MedicalRAGService( | |
| pdf_path=settings.pdf_source_path, | |
| index_path=settings.vector_index_path, | |
| metadata_path=settings.vector_metadata_path, | |
| embedding_model=settings.openai_embedding_model, | |
| top_k=settings.top_k_results, | |
| api_key=settings.openai_api_key, | |
| ) | |
| if service.indexed: | |
| print("MedBRAIN AI: vector index already present.") | |
| return | |
| if not settings.pdf_source_path.exists(): | |
| print(f"MedBRAIN AI: PDF not found at {settings.pdf_source_path}.") | |
| return | |
| if not settings.openai_api_key: | |
| print("MedBRAIN AI: OPENAI_API_KEY missing, skipping index build.") | |
| return | |
| print("MedBRAIN AI: building vector index for first startup...") | |
| result = service.build_index() | |
| print( | |
| f"MedBRAIN AI: indexed {result['pages']} pages into {result['chunks']} chunks." | |
| ) | |
| except Exception as exc: | |
| print(f"MedBRAIN AI: startup indexing skipped due to error: {exc}") | |
| def main() -> None: | |
| build_index_if_possible() | |
| port = int(os.getenv("PORT", "7860")) | |
| reload_enabled = os.getenv("MEDBRAIN_RELOAD", "false").lower() == "true" | |
| uvicorn.run("app.main:app", host="0.0.0.0", port=port, reload=reload_enabled) | |
| if __name__ == "__main__": | |
| main() | |