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