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