Prompt de extracción a JSON con esquema, validación y reintentos
Crea un pipeline fiable para extraer datos de texto libre a JSON con un LLM: JSON Schema, prompt con reglas de nulos, ejemplos, código de validación con reintentos y casos de prueba. Pensado para ChatGPT, Claude y Gemini. Incluye 4 variables personalizables y se copia gratis en un clic.
Avanzado · Código · Pendiente de revisión editorial
Prompt
Actúa como ingeniero de LLM especializado en extracción de datos estructurados para sistemas en producción.
Contexto:
- Tipo de documento de entrada: {{documento}}
- Campos que necesito extraer (nombre, tipo, si es obligatorio): {{campos}}
- Lenguaje y librería de validación: {{lenguaje}}
- Ejemplo real de entrada (anonimizado):
```
{{ejemplo}}
```
Entregables:
1. JSON Schema completo con tipos, formatos (fechas ISO 8601, importes como número y moneda separada), enumeraciones y campos obligatorios.
2. Prompt de sistema para la extracción con reglas explícitas: devolver solo JSON válido, usar null cuando un dato no aparezca (nunca deducirlo), no normalizar nombres propios, cómo tratar varios valores candidatos y texto ambiguo.
3. Dos ejemplos de entrada y salida (few-shot), uno de ellos con campos ausentes.
4. Código en {{lenguaje}} que llame al modelo, active la salida estructurada o el modo JSON si el proveedor lo ofrece, valide contra el esquema y reintente como máximo dos veces enviando el error de validación.
5. Campo opcional de confianza o de evidencia (cita literal del texto) para cada valor y cuándo conviene usarlo.
6. Diez casos de prueba: documentos incompletos, formatos de fecha distintos, idiomas mezclados, valores contradictorios e instrucciones maliciosas dentro del texto.
7. Cómo medir la calidad: exactitud por campo frente a un conjunto etiquetado a mano.
Restricciones:
- No inventes parámetros de API: si una opción depende del proveedor, indícalo como [VERIFICAR en la documentación oficial].
- El modelo nunca debe rellenar un campo sin evidencia en el texto.
- Si los campos son ambiguos o falta el ejemplo, pregúntame antes.
Formato: secciones numeradas con bloques de código JSON y {{lenguaje}}.Cómo usarlo
Pega un documento real anonimizado y define bien cada campo. Antes de procesar en lote, ejecuta los casos de prueba y compara con 20-50 documentos etiquetados a mano.
Ejemplo de uso
Documento: facturas de proveedores en PDF convertidas a texto · Campos: número, fecha, NIF del emisor, base imponible, IVA, total · Lenguaje: Python con Pydantic.
Resultado de ejemplo
4. Código con validación y reintentos
from enum import Enum
from pydantic import BaseModel, Field, ValidationError
class TipoReforma(str, Enum): # valores definitivos: [COMPLETAR]
bano = "baño"
cocina = "cocina"
integral = "integral"
otra = "otra"
class Solicitud(BaseModel):
nombre: str
telefono: str | None = None
ciudad: str | None = None
tipo_reforma: TipoReforma | None = None
presupuesto_max_eur: float | None = Field(default=None, ge=0)
def extraer(texto: str, max_reintentos: int = 2) -> Solicitud:
mensajes = [{"role": "user", "content": texto}]
for _ in range(max_reintentos + 1):
# Modo JSON / salida estructurada según el proveedor: [VERIFICAR en la documentación oficial]
bruto = llamar_modelo(SYSTEM_PROMPT, mensajes)
try:
return Solicitud.model_validate_json(bruto)
except ValidationError as error:
mensajes += [
{"role": "assistant", "content": bruto},
{"role": "user", "content": f"El JSON no es válido: {error}. Devuelve solo el JSON corregido."},
]
raise ValueError("El modelo no devolvió un JSON válido")
Salida esperada para tu ejemplo:
{"nombre": "Marta", "telefono": "600 000 000", "ciudad": "Zaragoza",
"tipo_reforma": "baño", "presupuesto_max_eur": 6000}
«Ronda los 6.000» es una cifra aproximada: con el campo opcional de evidencia guardaríamos la cita literal para que una persona decida si tomarla como máximo…
Datos clave
- Categoría
- Programación y desarrollo · Agentes IA
- Tipo de resultado
- Código
- Nivel
- Avanzado
- Pensado para
- ChatGPT, Claude y Gemini
- Verificado en
- Pendiente de verificación editorial
- Variables
- Tipo de documento, Campos a extraer, Lenguaje y validación y Ejemplo de entrada
- Idioma
- Español
- Precio
- Gratis, sin registro
- Actualizado
- 07/11/2026
Preguntas frecuentes
¿Por qué pedir null en lugar de que el modelo deduzca el dato?
Porque un valor inventado con aspecto correcto es más peligroso que un hueco. Con null puedes detectar documentos incompletos y enviarlos a revisión humana.
¿Basta con el modo JSON del proveedor?
Garantiza un JSON bien formado, pero no que los valores sean correctos ni que cumplan tus reglas de negocio. Mantén la validación con esquema y los casos de prueba.
¿Para qué sirve este prompt?
Crea un pipeline fiable para extraer datos de texto libre a JSON con un LLM: JSON Schema, prompt con reglas de nulos, ejemplos, código de validación con reintentos y casos de prueba.
¿Con qué herramientas de IA funciona?
Está pensado para ChatGPT, Claude y Gemini. Todavía no lo hemos verificado en estas herramientas, por lo que los resultados pueden variar entre ellas.
¿Cómo personalizo el prompt?
Pulsa «Personalizar» y rellena las variables (Tipo de documento, Campos a extraer, Lenguaje y validación y Ejemplo de entrada). El texto se actualiza al instante y después puedes copiarlo con un clic. Los valores se guardan solo en tu navegador.
¿Necesito experiencia para usarlo?
Es de nivel avanzado: está pensado para personas con experiencia en el tema que sepan evaluar y ajustar el resultado.
¿Este prompt es gratis?
Sí. Todos los prompts de HomeCasa Prompts son gratuitos, sin registro ni suscripción. Puedes usarlos también en proyectos profesionales.
¿Puedo fiarme del resultado de la IA?
Úsalo como un borrador de calidad: revisa siempre datos, cifras y afirmaciones importantes antes de publicarlos o tomar decisiones.