File size: 1,394 Bytes
86f402d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | """
Lazy singleton loader for all 4 ML models used by the MCP server.
Fixes sys.path so the subprocess can import from models/.
"""
import sys
import os
# Ensure project root is on path (this file lives at project_root/mcp_server/tool_registry.py)
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
_monet = None
_convnext = None
_gradcam = None
_rag = None
def get_monet():
global _monet
if _monet is None:
from models.monet_tool import MonetTool
_monet = MonetTool()
_monet.load()
return _monet
def get_convnext():
global _convnext
if _convnext is None:
from models.convnext_classifier import ConvNeXtClassifier
root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
_convnext = ConvNeXtClassifier(
checkpoint_path=os.path.join(root, "models", "seed42_fold0.pt")
)
_convnext.load()
return _convnext
def get_gradcam():
global _gradcam
if _gradcam is None:
from models.gradcam_tool import GradCAMTool
_gradcam = GradCAMTool(classifier=get_convnext())
_gradcam.load()
return _gradcam
def get_rag():
global _rag
if _rag is None:
from models.guidelines_rag import get_guidelines_rag
_rag = get_guidelines_rag()
if not _rag.loaded:
_rag.load_index()
return _rag
|