|
2 | 2 | API routes for model management
|
3 | 3 | """
|
4 | 4 |
|
5 |
| -from fastapi import APIRouter, HTTPException, Request |
| 5 | +from fastapi import APIRouter, HTTPException, Request, BackgroundTasks |
6 | 6 | from pydantic import BaseModel
|
7 |
| -from typing import Dict, Any, Optional |
| 7 | +from typing import Dict, Any, Optional, List |
8 | 8 | import os
|
9 | 9 |
|
10 | 10 | from ..logger import get_logger
|
11 | 11 | from ..core.app import model_manager
|
12 | 12 | from ..logger.logger import log_model_loaded, log_model_unloaded
|
13 |
| -from ..config import get_env_var |
| 13 | +from ..config import get_env_var, MODEL_REGISTRY |
14 | 14 |
|
15 | 15 | # Get logger
|
16 | 16 | logger = get_logger("locallab.routes.models")
|
17 | 17 |
|
18 | 18 | # Create router
|
19 | 19 | router = APIRouter(tags=["Models"])
|
20 | 20 |
|
| 21 | +class ModelInfo(BaseModel): |
| 22 | + """Model information response""" |
| 23 | + id: str |
| 24 | + name: str |
| 25 | + can_load: bool = True |
| 26 | + description: str = "" |
| 27 | + is_loaded: bool = False |
| 28 | + |
| 29 | +class ModelResponse(BaseModel): |
| 30 | + """Response model for model status""" |
| 31 | + id: str |
| 32 | + name: str |
| 33 | + is_loaded: bool |
| 34 | + loading_progress: float = 0.0 |
| 35 | + |
| 36 | +class ModelsListResponse(BaseModel): |
| 37 | + """Response model for listing models""" |
| 38 | + models: List[ModelInfo] |
| 39 | + current_model: Optional[str] = None |
| 40 | + |
21 | 41 | class LoadModelRequest(BaseModel):
|
22 | 42 | """Request model for loading a model"""
|
23 | 43 | model_id: str
|
|
0 commit comments