Cómo funciona
JSON mode es un parámetro que ofrecen los proveedores de LLM (OpenAI, Anthropic, Google, etc.) para indicar al modelo que responda únicamente con JSON válido. El modelo no puede incluir texto libre antes ni después del JSON.
La implementación varía: algunos proveedores usan response_format: {type: "json_object"}, otros usan tool calling o constrained decoding. El resultado siempre es un JSON sintácticamente válido, pero la estructura interna (campos, tipos) no está garantizada.
Por eso, JSON mode es el mínimo para la integración. Para asegurar que los campos y tipos coincidan con lo esperado, usa salida estructurada (structured output), que combina JSON mode con validación de schema.
Ejemplo práctico
Sin JSON mode, un modelo puede responder: "¡Claro! Aquí está el resultado: {\"nome\": \"João\", \"idade\": 30}. ¡Espero que ayude!" El código que intenta parsearlo como JSON falla.
Con JSON mode, el modelo responde únicamente: {"nome": "João", "idade": 30}. Sin texto extra, sin markdown, sin explicación. El JSON es válido y se puede parsear directamente.
Pero el modelo puede responder {"name": "João", "age": 30} en lugar de {"nome": "João", "idade": 30}, si no hay una instrucción clara. JSON mode no controla los nombres de los campos.
Para qué sirve
Sirve como primer paso para integrar LLMs a código: garantiza que la respuesta sea parseable. Es útil cuando necesitas JSON pero no quieres la complejidad de definir un schema completo.
Diferencia entre JSON mode y salida estructurada
JSON mode garantiza únicamente que la salida sea JSON válido. La salida estructurada garantiza que la salida sea JSON válido Y siga un schema específico (campos, tipos, obligatoriedad). JSON mode es el piso; la salida estructurada es el techo.