File size: 1,348 Bytes
df4a21a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Model listing routes.
"""

from fastapi import APIRouter

from app.core.logging import get_logger
from app.schemas.models import ModelsListResponse, ModelInfo
from app.services.model_registry import get_model_registry

logger = get_logger(__name__)
router = APIRouter(tags=["models"])


@router.get(
    "/models",
    response_model=ModelsListResponse,
    summary="List loaded models",
    description="Get information about all loaded models including fusion and submodels"
)
async def list_models() -> ModelsListResponse:
    """
    List all loaded models.
    
    Returns information about the fusion model and all submodels,
    including their Hugging Face repository IDs and configurations.
    """
    registry = get_model_registry()
    models = registry.list_models()
    
    fusion_info = None
    submodels_info = []
    
    for model in models:
        model_info = ModelInfo(
            repo_id=model["repo_id"],
            name=model["name"],
            model_type=model["model_type"],
            config=model.get("config")
        )
        
        if model["model_type"] == "fusion":
            fusion_info = model_info
        else:
            submodels_info.append(model_info)
    
    return ModelsListResponse(
        fusion=fusion_info,
        submodels=submodels_info,
        total_count=len(models)
    )