Catalogue de modèles

5.1 Lister les modèles

GET /lmsp/v1/models?capability=chat&ready_only=false
Authorization: Bearer <token>
Paramètre de requête Signification
capability Ne renvoie que les modèles qui possèdent la capacité nommée, par exemple chat, embeddings ou tools.
ready_only Si la valeur est true, ne renvoie que les modèles dont le status est ready. Vaut false par défaut.
{
  "object": "list",
  "catalog_revision": "42",
  "data": [
    {
      "id": "qwen3:14b-q4_k_m",
      "object": "model",
      "display_name": "Qwen3 14B Q4_K_M",
      "owned_by": "local",
      "family": "qwen3",
      "revision": "sha256:8f27c1a4e9b05d36f2a7c8e1b4d90a63c5e2f7b8a1d4c9e60b3f5a7d2c8e1b04",
      "status": "ready",
      "capabilities": {
        "chat": true,
        "completion": true,
        "embeddings": false,
        "tools": true,
        "vision": false,
        "structured_output": true,
        "streaming": true
      },
      "input_modalities": ["text"],
      "output_modalities": ["text"],
      "context_window": 32768,
      "max_output_tokens": 8192,
      "runtime": {
        "backend": "llama.cpp",
        "device": "metal",
        "load_on_demand": true
      }
    }
  ]
}

Pour éviter aux clients de récupérer sans cesse le catalogue complet, un service DEVRAIT renvoyer un en-tête ETag, un champ catalog_revision, ou les deux :

  • catalog_revision est une chaîne opaque qui change chaque fois que le catalogue change.
  • Un service qui envoie ETag DEVRAIT répondre 304 Not Modified à un If-None-Match correspondant.

5.2 Objet modèle

Champ Signification
id Identifiant stable du modèle, utilisé dans chaque requête qui nomme un modèle.
object Toujours "model".
display_name Nom lisible. L’utilisateur peut le modifier.
aliases Liste facultative de noms alternatifs. Ils sont purement informatifs.
owned_by Provenance du modèle. local pour les modèles installés sur cet appareil.
family Famille du modèle, comme qwen3.
revision Empreinte du contenu du modèle, comme sha256:8f27....
status État du cycle de vie (section 5.3).
capabilities Indicateurs booléens : chat, completion, embeddings, tools, vision, structured_output et streaming.
input_modalities, output_modalities Les types de contenu que le modèle lit et écrit. text est la seule modalité définie dans la version 1.0.
context_window Nombre maximal de tokens de contexte.
max_output_tokens Nombre maximal de tokens dans une réponse.
runtime backend (par exemple llama.cpp), device (par exemple metal) et load_on_demand.
error Présent lorsque status vaut error. Un objet problème (section 9.3).

L’id d’un modèle DOIT être stable. L’utilisateur peut modifier le nom d’affichage et les alias ; ils NE DOIVENT PAS servir de clé primaire.

5.3 Cycle de vie du modèle

installed --> loading --> ready --> unloading --> installed
                 |
                 +-----> error
État Signification
installed Le modèle existe mais n’est pas chargé.
loading De la mémoire est en cours d’allocation ou l’environnement d’exécution s’initialise.
ready Le modèle peut traiter immédiatement des requêtes.
unloading Les ressources sont en cours de libération.
error Le chargement a échoué. L’objet modèle DEVRAIT porter une erreur structurée.

Une nouvelle demande de chargement fait repasser à loading un modèle à l’état error.

Lorsqu’une requête nomme un modèle à l’état installed dont le runtime.load_on_demand vaut true, le service le charge dans le cadre de la requête. Si le modèle ne peut pas être utilisé immédiatement et n’est pas chargé à la demande, le service répond 409 avec model_not_ready. Si le chargement échoue, l’erreur est model_load_failed.

5.4 Opérations sur les modèles

GET /lmsp/v1/models/{model_id} renvoie un objet modèle. Un identifiant inconnu donne 404 avec model_not_found.

Deux points de terminaison facultatifs contrôlent explicitement le chargement. Ils sont disponibles lorsque la capacité model_management vaut true, et exigent la portée models:manage (section 10.3) :

Point de terminaison Comportement
POST /lmsp/v1/models/{model_id}/load Précharge le modèle. Renvoie l’objet modèle avec 202 Accepted lorsque le chargement a commencé, ou 200 lorsqu’il est déjà ready.
POST /lmsp/v1/models/{model_id}/unload Décharge le modèle. Renvoie l’objet modèle. Répéter la requête est sans conséquence.

Les deux acceptent un Idempotency-Key (section 9.2).