Implement models listing domain

Add OpenAI-compatible models listing endpoint.
Currently returns mock model (mistral-nemo:latest).

Models Router (src/models/router.py):
- GET /v1/models endpoint
- OpenAI-compatible response format
- Lists available models

Models Schemas (src/models/schemas.py):
- Model object with id, created, owned_by
- ModelsListResponse with data array
- Full OpenAI API compatibility

Models Service (src/models/service.py):
- list_models() function
- Mock model listing (ready for Ollama integration)
- Returns mistral-nemo:latest as default

Following Best Practices:
- Business logic in service layer
- Router only handles HTTP concerns
- Type hints throughout
- Async/await pattern

Model: mistral-nemo:latest
Status: Mock implementation (ready for Ollama integration)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-06 10:38:21 +01:00
co-authored by Claude
parent cf6aa9a5e7
commit cffb498886
4 changed files with 80 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
"""
Models router.
OpenAI-compatible /v1/models endpoint.
"""
import logging
from fastapi import APIRouter
from src.models import service
from src.models.schemas import ModelsResponse
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/models", tags=["models"])
@router.get("", response_model=ModelsResponse)
async def list_models() -> ModelsResponse:
"""
List available models (OpenAI-compatible).
Currently returns mock model list.
Returns:
List of available models
"""
logger.info("Listing available models")
return await service.list_models()