¿Qué hace que la salida de un LLM local incumpla un esquema JSON válido?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

La salida de un LLM local rompe un esquema JSON válido cuando la generación, el manejo de restricciones, las reglas de detención y la validación no aplican el mismo contrato.

Un flujo de trabajo autoalojado puede proporcionar un esquema conforme a los estándares para metadatos de archivos, acciones del hogar inteligente, extracción de documentos o argumentos de herramientas y aun así recibir una salida malformada o rechazada. «Esquema válido» describe el documento del esquema, no toda la ruta de ejecución. El modelo debe comprender la tarea, el decodificador debe admitir las funciones pertinentes del esquema, la generación debe finalizar antes de que una condición de detención la interrumpa, el analizador debe recuperar un valor JSON completo y el validador de la aplicación debe aplicar las reglas de borrador y coerción esperadas.

El JSON válido y el JSON válido según el esquema son resultados distintos

Un objeto puede analizarse correctamente y aun así infringir campos obligatorios, tipos, enumeraciones, límites de matrices o ramas condicionales. También puede contener nombres de campo correctos, pero añadir propiedades que el esquema prohíbe.

El módulo JSON de Python define la capa sintáctica para decodificar un documento JSON, pero el análisis no aplica un contrato independiente de JSON Schema.

Esta causa se reconoce cuando la salida se carga sin un error de sintaxis, pero falla únicamente después de la validación del esquema. Falta de una llave o una explicación final son fallos de serialización; una cadena donde se requiere un entero es un fallo del contrato.

La composición del esquema puede crear ramas difíciles de satisfacer

Palabras clave como allOf, anyOf, oneOf y not combinan restricciones. Una rama puede ser válida de forma aislada, mientras que el objeto combinado no satisface ninguna o satisface varias de las alternativas permitidas.

La guía de JSON Schema explica cómo las palabras clave de composición del esquema modifican si deben coincidir uno o varios subschemas.

Un modelo local suele manejar una lista plana de propiedades con más fiabilidad que una lógica condicional anidada. Si los fallos se concentran en uniones o formas de objetos mutuamente excluyentes, la presión principal proviene de la selección de ramas y no de la puntuación básica del JSON.

El decodificador restringido puede admitir solo una parte del esquema

Los motores de salida estructurada traducen los esquemas a restricciones de tokens, gramáticas, expresiones regulares o reglas específicas del backend. No todos implementan cada borrador o palabra clave de JSON Schema.

vLLM expone varios backends de salida estructurada, lo que muestra que las restricciones mediante esquema JSON, gramática, expresiones regulares y opciones fijas son modos de ejecución independientes.

Esta causa aparece cuando el mismo esquema se valida correctamente en un validador conforme a los estándares, pero falla únicamente con un backend de inferencia. La recursividad, las referencias, los patrones o las palabras clave condicionales no compatibles pueden simplificarse, ignorarse o rechazarse antes de que el modelo genere nada.

Las instrucciones del prompt pueden entrar en conflicto con el esquema

El prompt del usuario puede solicitar comentarios, citas, explicaciones, omisiones opcionales o incertidumbre expresada en lenguaje natural, mientras que el esquema exige un único objeto con campos fijos.

Entonces el modelo tiene dos criterios de éxito contrapuestos: responder al usuario de forma conversacional y emitir únicamente tokens permitidos por el contrato de la máquina. Un modelo local más pequeño puede seguir la instrucción más reciente o llamativa en lugar de conciliar ambas.

Estos fallos suelen añadir un preámbulo, un bloque Markdown, una explicación después del objeto o un valor que satisface la solicitud en prosa, pero infringe la enumeración declarada. El esquema es válido; la jerarquía de instrucciones es incoherente.

El truncamiento puede convertir un plan correcto en una salida no válida

Las matrices y los objetos anidados requieren suficientes tokens generados para cerrar todas las estructuras. Un límite de tokens, una cadena de detención, una solicitud cancelada o un flujo interrumpido pueden finalizar la respuesta antes de que lleguen los delimitadores finales.

Transformers expone controles de tokens máximos y detención que determinan cuándo termina la generación.

Esta causa se distingue por prefijos válidos que terminan abruptamente, especialmente en matrices grandes o campos de texto largos. Las infracciones repetidas de tipos al principio apuntan a otra causa; la falta de corchetes de cierre cerca del límite de salida indica una generación incompleta.

La semántica del validador puede rechazar valores que el modelo consideraba equivalentes

Un modelo puede emitir "3" para un entero, null para un campo omitido, una enumeración en minúsculas o una fecha ISO que la aplicación espera en otro formato.

Pydantic documenta distintas categorías de errores de validación para valores ausentes, JSON no válido, discrepancias de enumeración, campos adicionales prohibidos y tipos incompatibles.

Si todos los fallos llegan al mismo campo con un valor analizable, pero rechazado, la causa no es una ruptura aleatoria del esquema. Es un desacuerdo sobre coerción, estrictitud, nulabilidad, uso de mayúsculas y minúsculas o formatos definidos por la aplicación.

Las restricciones gramaticales pueden preservar la sintaxis, pero no el significado empresarial

Una gramática puede bloquear llaves y claves ilegales, pero seguir permitiendo una combinación semánticamente imposible, como una fecha de finalización anterior a la de inicio o una ruta de archivo inexistente.

llama-cpp-python proporciona generación restringida por gramática como control de inferencia, pero la gramática regula la estructura de tokens permitida, no la verdad externa.

Un fallo del esquema causado por reglas entre campos puede aparecer únicamente en una segunda capa de validación. La salida puede ser sintáctica y estructuralmente válida, pero seguir siendo inutilizable para el flujo de trabajo del servidor doméstico.

El posprocesamiento puede dañar una salida del modelo que era válida

Las aplicaciones a veces eliminan Markdown, extraen el primer bloque delimitado por llaves, combinan fragmentos de un flujo, reparan comas o convierten valores antes de la validación.

Una respuesta válida del modelo puede volverse no válida cuando se duplica un fragmento del flujo, se decodifica incorrectamente Unicode, se elimina una secuencia de escape o una función de reparación modifica contenido anidado. Por el contrario, una etapa de reparación puede ocultar que la salida sin procesar del modelo era inválida.

La explicación de ZimaSpace sobre por qué los modelos locales pequeños alucinan al generar JSON ofrece el contexto adyacente: la validez del esquema y la corrección factual deben medirse por separado, y la respuesta sin procesar debe conservarse antes de las transformaciones de la aplicación.

Preguntas frecuentes

¿El JSON válido demuestra que la salida coincide con el esquema?

No. El análisis de JSON comprueba la sintaxis. La validación del esquema comprueba por separado las propiedades obligatorias, los tipos, las enumeraciones, las ramas, los límites y otras restricciones declaradas.

¿La temperatura cero evitará los fallos del esquema?

No. Puede hacer que una ruta de decodificación sea más repetible, pero no añade funciones de esquema no compatibles, evita el truncamiento ni resuelve instrucciones contradictorias.

¿La decodificación restringida garantiza un registro de automatización utilizable?

No. Puede garantizar las restricciones estructurales compatibles, pero las reglas empresariales, la fundamentación en fuentes, la existencia de archivos, los permisos y la coherencia entre campos aún requieren validación por parte de la aplicación.

Centro de Tecnología e IA

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.