Quién es más riguroso con JSON: OpenAI, Gemini y xAI se someten a pruebas de cumplimiento de esquemas
Los desarrolladores de Habr realizaron pruebas adversariales de Structured Outputs en OpenAI, Gemini y xAI para comprobar con qué fidelidad cumplen con JSON Sch

Los desarrolladores de Habr realizaron un estudio que probó cómo funcionan realmente Structured Outputs en tres proveedores principales de LLM: OpenAI, Gemini y xAI. En lugar de leer documentación, utilizaron un método de prueba adversarial—rompiendo deliberadamente esquemas para ver dónde cada proveedor mantiene la rigidez y dónde cede.
Cómo Probaron la Conformidad con Esquemas
Los autores no simplemente pidieron a los modelos que devolvieran JSON válido. Construyeron deliberadamente prompts intentando forzar al modelo a violar su propio JSON Schema. Pidieron colocar valores del tipo incorrecto en campos, agregar claves adicionales, usar valores enum inválidos, violar la longitud mínima o máxima de cadena, exceder rangos numéricos. Observaron dónde el modelo obedecía strict: true y dónde se rompía devolviendo JSON inválido. Probaron por separado construcciones complejas: anyOf, oneOf, allOf—reglas combinatorias que son más difíciles de implementar en LLMs. En la práctica, muchos sistemas simplifican, ignoran o implementan parcialmente estas construcciones. Los autores comprobaron cómo cada proveedor interpreta estas reglas.
Qué Descubrieron Sobre Diferentes Proveedores
Los resultados son sorprendentes: cada proveedor tiene su propio conjunto de restricciones duras y suaves. OpenAI mantiene la rigidez mejor, especialmente cuando strict: true está habilitado. Gemini permite más libertad con enum y objetos anidados. xAI muestra estabilidad en complejidad media pero tiene puntos ciegos en construcciones allOf y campos condicionales.
La matriz de restricciones del artículo muestra:
- OpenAI: confiable en tipos primitivos (string, number, boolean), a veces se desliza en estructuras anidadas complejas
- Gemini: interpreta anyOf y oneOf más libremente, puede agregar claves adicionales a objetos, menos estricto con valores enum
- xAI: bueno en complejidad media y reglas básicas, más débil en validación multinivel y patternProperties
Incluso strict: true no garantiza conformidad del 100%. Esto traslada la responsabilidad de vuelta al desarrollador.
Conclusiones Prácticas para Production
Si está construyendo un sistema que llama a múltiples proveedores de LLM en paralelo, estas diferencias son críticas. No puede simplemente cambiar de OpenAI a Gemini y esperar exactamente la misma respuesta formateada. JSON Schema sigue siendo el mismo, pero el comportamiento del modelo es radicalmente diferente.
Para escenarios de producción, los autores recomiendan: siempre agregue validación de respuesta después del modelo, incluso si el proveedor promete strict: true. Utilice una biblioteca jsonschema que reverifique el resultado de forma independiente. Y agregue lógica de fallback en caso de que el formato se rompa inesperadamente: vuelva a preguntar al modelo, use un valor predeterminado o devuelva un error al usuario. Una desviación aleatoria de enum del modelo puede destruir toda su pipeline.
Qué Significa
Structured Outputs es una característica útil, pero no una panacea. Las pruebas de Habr mostraron que confiar completamente en el proveedor es un error. Si le importa el formato de respuesta, invierta en validación del lado del cliente.