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