FinSightAI / backend /core /bootstrap.py
Aniket2003333333's picture
start
7248d39
Raw
History Blame Contribute Delete
2.89 kB
"""Shared service initialization for FastAPI and Gradio."""
from __future__ import annotations
import logging
from typing import Optional
from db.chat_store import ChatStore
from db.faiss_client import FaissDB
from models.embedder import MiniCPMEmbedder
from models.llm import MiniCPMLLM
from models.ocr import MiniCPMVOCR
from services.chart_extractor import ChartExtractorService
from services.ingestion import IngestionService
from services.qa import QAService
from services.summarizer import SummarizerService
logger = logging.getLogger(__name__)
_embedder: Optional[MiniCPMEmbedder] = None
_llm: Optional[MiniCPMLLM] = None
_ocr: Optional[MiniCPMVOCR] = None
_db: Optional[FaissDB] = None
_chat_store: Optional[ChatStore] = None
_ingestion: Optional[IngestionService] = None
_qa: Optional[QAService] = None
_summarizer: Optional[SummarizerService] = None
_chart_extractor: Optional[ChartExtractorService] = None
def init_services() -> None:
"""Initialize all backend services (call once at startup)."""
global _embedder, _llm, _ocr, _db, _chat_store
global _ingestion, _qa, _summarizer, _chart_extractor
logger.info("Initializing FinSight services…")
_embedder = MiniCPMEmbedder()
_llm = MiniCPMLLM()
_ocr = MiniCPMVOCR()
_db = FaissDB()
_chat_store = ChatStore()
_chat_store.init_db()
_ingestion = IngestionService(_embedder, _ocr, _db)
_qa = QAService(_embedder, _llm, _db)
_summarizer = SummarizerService(_llm, _db)
_chart_extractor = ChartExtractorService(_ocr)
logger.info("FinSight services ready.")
def shutdown_services() -> None:
"""Release resources (FAISS index flush, etc.)."""
global _db
if _db is not None:
_db.close()
_db = None
logger.info("FinSight services shut down.")
def get_embedder() -> MiniCPMEmbedder:
assert _embedder is not None, "Services not initialized"
return _embedder
def get_llm() -> MiniCPMLLM:
assert _llm is not None, "Services not initialized"
return _llm
def get_ocr() -> MiniCPMVOCR:
assert _ocr is not None, "Services not initialized"
return _ocr
def get_db() -> FaissDB:
assert _db is not None, "Services not initialized"
return _db
def get_chat_store() -> ChatStore:
assert _chat_store is not None, "Services not initialized"
return _chat_store
def get_ingestion_service() -> IngestionService:
assert _ingestion is not None, "Services not initialized"
return _ingestion
def get_qa_service() -> QAService:
assert _qa is not None, "Services not initialized"
return _qa
def get_summarizer_service() -> SummarizerService:
assert _summarizer is not None, "Services not initialized"
return _summarizer
def get_chart_extractor_service() -> ChartExtractorService:
assert _chart_extractor is not None, "Services not initialized"
return _chart_extractor