Cómo forzar salida JSON válida (sin markdown)

Plantillas para extraer/transformar datos a JSON estricto, con reglas de validación.

Última actualización: · Versión en markdown

Reglas que funcionan

  • Decile: 'Devolvé SOLO JSON' y prohibí texto extra.
  • Definí un esquema (claves, tipos, valores permitidos).
  • Aclarás qué hacer si falta un campo (null vs omitir).
  • Pedí una segunda pasada: validar + corregir JSON.

Antes → después: de 'dame JSON' a un contrato

  • Antes: "Dame los datos de contacto de este email en JSON." Resultado típico: una frase de introducción, un bloque de código markdown y claves que cambian en cada corrida.
  • Después: "Extraé los datos de contacto. Devolvé SOLO JSON válido, sin markdown. Esquema: {name: string, email: string|null, phone: string|null}. Usá null para lo que falte; no adivines."
  • Qué cambió: la salida es un esquema definido, con una regla para valores faltantes y la prohibición de texto extra, así que el mismo prompt da la misma forma cada vez.

Validá en el código, no por fe

  • Parseá la respuesta con un parser JSON de verdad y controlala contra el esquema (claves obligatorias, tipos, valores permitidos) antes de usarla.
  • Si falla, reintentá una vez con el error adjunto: 'Tu salida anterior falló la validación: [error]. Devolvé solo el JSON corregido.'
  • Donde el modelo o la API ofrece un modo nativo de salida estructurada, usalo: el formato se impone al generar en vez de pedirse en prosa. Las páginas de modelos de Promptea muestran cuáles modelos vigentes lo listan.
  • Un JSON válido no es necesariamente un contenido correcto. Contrastá valores con el texto fuente, sobre todo números y fechas.

Plantillas

Extraer JSON estructurado

Extraé datos del texto de abajo.
Devolvé SOLO JSON válido (sin markdown, sin comentarios).

Esquema:
{
  "people": [
    {
      "name": "string",
      "role": "string|null",
      "email": "string|null"
    }
  ],
  "dates": ["YYYY-MM-DD"]
}

Reglas:
- Si falta, usá null (no inventes).
- Si una fecha es ambigua, omitila.

Texto:
"""[pegá acá]"""

Antes de finalizar, validá que sea JSON válido y que matchee el esquema.
Se abre en el analizador con el prompt precargado.
Abrir en Promptea

Transformar JSON a un nuevo esquema

Vas a recibir un JSON de entrada. Convertilo al esquema de salida.
Devolvé SOLO JSON válido.

JSON de entrada:
"""[pegá JSON]"""

Esquema de salida:
{
  "items": [
    { "id": "string", "title": "string", "tags": ["string"] }
  ]
}

Reglas:
- Mantené el significado; no inventes items.
- Si un campo no mapea, ignoralo.
- Asegurate de que tags estén en minúsculas.

Validá el JSON antes de devolverlo.
Se abre en el analizador con el prompt precargado.
Abrir en Promptea

Preguntas frecuentes

¿Por qué igual agrega texto?
Porque no lo hiciste costoso. Repetí la restricción, poné esquema y pedí validación.
¿Conviene usar JSON Schema?
Sí si vas a integrar. Aunque sea un esquema simplificado (claves + tipos) mejora mucho.
¿Qué debe devolver el modelo cuando falta un valor?
Elegí una regla y decila: null para un valor faltante u omitir la clave. Mezclar ambas obliga a tu código a manejar las dos. Aclarale también que no adivine.
¿Puedo pedir JSON y una explicación en la misma respuesta?
Mantenelos separados: poné la explicación en una clave dedicada como "notes" o hacé una segunda solicitud. El texto fuera del JSON rompe el parseo.