Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering avanzado, Unidad 5 — Prompts con salida estructurada, 5.1 — Diseñar para JSON y esquemas ·

Especificación de formato

Especificación de formato: Diseñar para JSON y esquemas

Introducción

La especificación de formato es un aspecto crítico al diseñar prompts que produzcan salidas estructuradas. Cuando se trabaja con modelos basados en lenguaje (LLMs), los datos de salida a menudo deben cumplir con ciertos formatos predefinidos para su utilización posterior, ya sea en bases de datos, APIs o pipelines de procesamiento de datos. JSON es una opción popular debido a su facilidad de uso y capacidad de representar estructuras complejas de datos.

En esta unidad, profundizaremos en la técnica de diseño de prompts que produzcan salidas JSON bien formadas. Veremos cómo especificar el formato de salida para asegurar que las respuestas sean coherentes y útiles, así como los errores comunes a evitar durante este proceso.

Explicación principal con ejemplos

Para diseñar prompts que generen salidas en JSON, es necesario definir claramente qué campos deben incluirse y cómo se estructuran estos datos. Un ejemplo de prompt podría ser:

{
  "nombre": "Juan Pérez",
  "edad": 30,
  "ciudad": "Madrid"
}

Ejemplo práctico

Imagina que estás creando un sistema para generar informes de ventas mensuales. El modelo LLM debe proporcionar una salida JSON con los siguientes campos:

{
  "mes": "2023-10",
  "total_ventas": 50000,
  "productos": [
    {
      "nombre": "Producto A",
      "precio_unitario": 100,
      "cantidad_vendida": 500
    },
    {
      "nombre": "Producto B",
      "precio_unitario": 200,
      "cantidad_vendida": 300
    }
  ]
}

Bloque de código

Para generar esta salida, podrías usar un prompt como el siguiente:

prompt = """
Genera un informe de ventas para octubre de 2023 con los siguientes datos:
- Mes: 2023-10
- Total de ventas: $50,000
- Lista de productos vendidos junto a su precio unitario y cantidad:

Producto A - Precio Unitario: $100, Cantidad Vendida: 500 unidades
Producto B - Precio Unitario: $200, Cantidad Vendida: 300 unidades

Formato JSON esperado:
{
  "mes": "2023-10",
  "total_ventas": 50000,
  "productos": [
    {
      "nombre": "Producto A",
      "precio_unitario": 100,
      "cantidad_vendida": 500
    },
    {
      "nombre": "Producto B",
      "precio_unitario": 200,
      "cantidad_vendida": 300
    }
  ]
}
"""

Errores típicos / trampas

  1. Formato incorrecto de JSON: Olvidar comillas, corchetes o llaves puede resultar en salidas no válidas.
  2. Datos numéricos mal formateados: No especificar si los números deben estar como enteros, decimales, etc., puede causar confusiones.
  3. Campos obligatorios omitidos: Olvidar incluir campos esenciales en el JSON final.

Checklist accionable

Para asegurarte de que tu prompt produce salidas JSON correctas y útiles:

  1. Define claramente los campos necesarios: Incluye todos los datos requeridos para la salida.
  2. Especifica el tipo de dato: Indica si un campo debe ser un texto, número entero, decimal, etc.
  3. Incluye estructuras anidadas cuando sea necesario: Si hay listas o diccionarios dentro del JSON final, asegúrate de que se incluyan correctamente.
  4. Verifica el formato: Antes de enviar el prompt al modelo, valida que los datos cumplan con el esquema deseado.
  5. Incluye ejemplos claros: Proporciona ejemplos de salida correcta para guiar a la IA.

Cierre

Siguientes pasos

  1. Prueba exhaustivamente tu prompt: Utiliza casos de prueba variados para asegurarte que el modelo produce salidas consistentes.
  2. Evalúa las respuestas del modelo: Compara las salidas con los esquemas predefinidos y ajusta tus prompts según sea necesario.
  3. Automatiza la validación: Implementa scripts o herramientas que puedan validar automáticamente la salida JSON generada por el modelo.

Siguiendo estos pasos, podrás diseñar prompts efectivos para generar salidas JSON en formatos bien estructurados y coherentes.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).