feat(ai): commandes @/ & skills, analyse d'images et capacites des modeles (#81)
This commit is contained in:
+32
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
import logging
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from backend.ai import (
|
||||
@@ -25,6 +25,8 @@ from backend.ai import (
|
||||
ai_translate,
|
||||
get_default_provider,
|
||||
)
|
||||
from backend.auth.middleware import require_auth
|
||||
from backend.model_capabilities import get_model_capabilities
|
||||
from backend.schemas import AIStatusResponse
|
||||
|
||||
logger = logging.getLogger("obsigate.ai_routes")
|
||||
@@ -232,3 +234,32 @@ async def api_inline_complete(req: AIRequest):
|
||||
async def api_to_canvas(req: AIRequest):
|
||||
"""Convert to Mermaid diagram or outline."""
|
||||
return await _handle(ai_convert_to_canvas, req)
|
||||
|
||||
|
||||
class ModelCapabilitiesResponse(BaseModel):
|
||||
"""Capabilities of a single provider/model pair."""
|
||||
|
||||
provider: str
|
||||
model: str
|
||||
capabilities: dict[str, bool] = Field(
|
||||
description="Flags: chat, embeddings, rerank, images, video, "
|
||||
"audio_speech, audio_transcription, vision",
|
||||
)
|
||||
|
||||
|
||||
@router.get("/model-capabilities", response_model=ModelCapabilitiesResponse)
|
||||
async def api_model_capabilities(
|
||||
provider: str = Query(..., description="Provider identifier"),
|
||||
model: str = Query("", description="Model identifier (optional)"),
|
||||
current_user=Depends(require_auth),
|
||||
):
|
||||
"""Return the curated capability flags for a provider/model pair.
|
||||
|
||||
The table is static (see ``backend.model_capabilities``) so the answer is
|
||||
available offline and never depends on a provider API call.
|
||||
"""
|
||||
return {
|
||||
"provider": provider,
|
||||
"model": model,
|
||||
"capabilities": get_model_capabilities(provider, model),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user