El problema
Los LLM son excelentes generando texto, pero las aplicaciones suelen necesitar datos estructurados — objetos JSON, arrays, valores tipados. Obtener una salida estructurada fiable requiere técnicas específicas.
Enfoque 1: Ingeniería de Prompts
Pide al modelo que responda en formato JSON:
- Especificar el esquema exacto en el prompt.
- Incluir un par de entrada/salida de ejemplo.
- Añadir "Responder solo con JSON válido. Sin explicación."
Enfoque 2: Llamada a función / Uso de herramientas
La mayoría de las APIs principales ahora admiten la llamada de funciones:
- Definir un esquema JSON para la salida esperada.
- El modelo está limitado a que la salida coincida con el esquema.
- Funciona con OpenAI, Anthropic, Google y la mayoría de los proveedores.
Enfoque 3: Decodificación con Restricciones
Librerías como Outlines y LMQL obligan al modelo a producir una salida válida:
- Definir un modelo Pydantic o un esquema JSON.
- El proceso de decodificación aplica el esquema token por token.
- Garantía del 100% de una estructura de salida válida.
Enfoque 4: La biblioteca Instructor
La biblioteca Instructor envuelve cualquier API LLM con validación Pydantic:
- Define tu modelo de datos con Pydantic.
- Instructor gestiona automáticamente los intentos y validaciones.
- Trabaja con OpenAI, Anthropic, Gemini y modelos locales.
Mejores prácticas
- Validar siempre la salida frente a un esquema.
- Utilizar tipos de enum para campos con opciones limitadas.
- Incluir lógica de reintento para respuestas mal formadas.
- Mantener los esquemas simples: las estructuras anidadas aumentan las tasas de error.
- Prueba con 50+ ejemplos para medir la fiabilidad.