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()