Catálogo de modelos

5.1 Listar modelos

GET /lmsp/v1/models?capability=chat&ready_only=false
Authorization: Bearer <token>
Parámetro de consulta Significado
capability Devuelve solo los modelos que tienen la capacidad indicada, por ejemplo chat, embeddings o tools.
ready_only Si es true, devuelve solo los modelos cuyo status es ready. Por defecto es false.
{
  "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
      }
    }
  ]
}

Para que los clientes no tengan que obtener el catálogo completo una y otra vez, un servicio DEBERÍA devolver una cabecera ETag, un campo catalog_revision, o ambos:

  • catalog_revision es una cadena opaca que cambia cada vez que cambia el catálogo.
  • Un servicio que envía ETag DEBERÍA responder con 304 Not Modified a un If-None-Match coincidente.

5.2 Objeto de modelo

Campo Significado
id Identificador estable del modelo, usado en toda solicitud que nombra un modelo.
object Siempre "model".
display_name Nombre legible. El usuario puede cambiarlo.
aliases Lista opcional de nombres alternativos. Son solo informativos.
owned_by De dónde procede el modelo. local para los modelos instalados en este dispositivo.
family Familia del modelo, como qwen3.
revision Resumen criptográfico del contenido del modelo, como sha256:8f27....
status Estado del ciclo de vida (sección 5.3).
capabilities Indicadores booleanos: chat, completion, embeddings, tools, vision, structured_output y streaming.
input_modalities, output_modalities Los tipos de contenido que el modelo lee y escribe. text es la única modalidad definida en 1.0.
context_window Número máximo de tokens de contexto.
max_output_tokens Número máximo de tokens en una respuesta.
runtime backend (por ejemplo llama.cpp), device (por ejemplo metal) y load_on_demand.
error Presente cuando status es error. Un objeto de problema (sección 9.3).

El id de un modelo DEBE ser estable. El usuario puede cambiar el nombre para mostrar y los alias, así que NO DEBEN usarse como clave primaria.

5.3 Ciclo de vida del modelo

installed --> loading --> ready --> unloading --> installed
                 |
                 +-----> error
Estado Significado
installed El modelo existe pero no está cargado.
loading Se está asignando memoria o el entorno de ejecución se está inicializando.
ready El modelo puede procesar solicitudes de inmediato.
unloading Se están liberando recursos.
error La carga falló. El objeto de modelo DEBERÍA incluir un error estructurado.

Una nueva solicitud de carga devuelve a loading un modelo que está en estado error.

Cuando una solicitud nombra un modelo que está installed y su runtime.load_on_demand es true, el servicio lo carga como parte de la solicitud. Si el modelo no puede usarse de inmediato y no se carga bajo demanda, el servicio responde 409 con model_not_ready. Si la carga falla, el error es model_load_failed.

5.4 Operaciones con modelos

GET /lmsp/v1/models/{model_id} devuelve un objeto de modelo. Un id desconocido produce 404 con model_not_found.

Dos endpoints opcionales controlan la carga de forma explícita. Están disponibles cuando la capacidad model_management es true, y requieren el ámbito models:manage (sección 10.3):

Endpoint Comportamiento
POST /lmsp/v1/models/{model_id}/load Precarga el modelo. Devuelve el objeto de modelo con 202 Accepted cuando la carga ha comenzado, o 200 cuando ya está ready.
POST /lmsp/v1/models/{model_id}/unload Libera el modelo de la memoria. Devuelve el objeto de modelo. Repetir la solicitud es inocuo.

Ambos aceptan un Idempotency-Key (sección 9.2).