Cómo funciona
Por defecto, un LLM responde en texto libre. Eso es genial para conversar, pero malo para integrarse con código: necesitas parsear la respuesta, lidiar con variaciones de formato y manejar errores.
La salida estructurada (structured output) resuelve esto. Defines un schema (generalmente JSON Schema) que describe los campos esperados, y el modelo se ve forzado a responder dentro de ese formato. La respuesta llega como JSON válido, lista para usar en código.
La implementación varía: algunos proveedores (OpenAI, Anthropic) ofrecen parámetros nativos (response_format o tool use). Otros usan bibliotecas como Instructor o Outlines que fuerzan el formato del lado del cliente.
Ejemplo práctico
Imagina extraer información de un correo de cliente. Sin salida estructurada, el modelo responde: "El cliente João Silva quiere cancelar el pedido 12345, motivo: atraso en la entrega." Necesitas parsearlo con regex u otro LLM.
Con salida estructurada, defines un schema con campos {nome, acao, pedido_id, motivo} y el modelo responde directamente: {"nome": "João Silva", "acao": "cancelar", "pedido_id": "12345", "motivo": "atraso na entrega"}. Sin parsing, sin error de formato.
Para qué sirve
Sirve para integrar LLMs a sistemas: APIs, bases de datos, pipelines de datos y agentes. Elimina la etapa frágil de parsear texto libre y reduce errores de formato.
Diferencia entre salida estructurada y JSON mode
El modo JSON garantiza que la respuesta sea JSON válido, pero no garantiza que siga un schema específico. La salida estructurada va más allá: garantiza que los campos y tipos coincidan con el schema definido. El modo JSON es lo mínimo; la salida estructurada es lo ideal.