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.