4. Salidas Estructuradas (Structured Outputs) y Modo JSON Estricto
Garantiza respuestas predecibles y 100% tipadas en tus APIs web mediante JSON Schema estricto (strict mode) sin parsing manual frágil.
El Fin del Parsing Frágil: ¿Por qué Fallaba el Prompting Tradicional?
Durante años, los desarrolladores intentaron obtener JSON de los LLMs agregando frases como: "Responde ÚNICAMENTE con un JSON válido sin markdown ni texto extra". Inevitablemente, en 1 de cada 20 peticiones, el modelo agregaba bloques ```json, comentarios explicativos o dejaba campos requeridos vacíos, provocando un error fatal SyntaxError: Unexpected token en el backend.
La solución definitiva de la industria son las Salidas Estructuradas (Structured Outputs). Los proveedores implementaron Constrained Decoding (decodificación con gramáticas formales): el motor de inferencia restringe matemáticamente las probabilidades de los tokens para que el modelo sea físicamente incapaz de emitir un carácter que viole el JSON Schema suministrado.
strict: true y json_schema, el objeto devuelto siempre contendrá las claves declaradas en required, los tipos exactos (string, number, boolean, array) y ningún campo imprevisto adicional.
Requisitos Obligatorios para Activar el Modo Estricto
Para que un JSON Schema sea aceptado por OpenAI, Anthropic o Gemini en modo estricto, debe cumplir tres reglas matemáticas:
additionalProperties: false: Debe declararse en todos los objetos del esquema para prohibir claves arbitrarias.required: [...]: Todos los campos definidos enpropertiesdeben estar explícitamente listados en el arreglorequired(si un campo es opcional, se modela con tipo nullable:["string", "null"]).type: "object": La raíz del esquema debe ser un objeto.
⚡ Especificación de JSON Schema Estricto para Extracción de Leads
Cuerpo de petición con response_format json_schema y strict: true para extraer datos de clientes sin fallos.
{
"model": "gpt-4o-mini",
"temperature": 0.0,
"messages": [
{
"role": "system",
"content": "Eres un asistente de ventas. Extrae los datos de contacto y la intención de compra del texto del cliente."
},
{
"role": "user",
"content": "Hola, soy Carlos Mendoza de TechCorp ([email protected], tel +57 3001234567). Queremos cotizar 15 licencias del plan Empresa para el próximo mes con soporte 24/7."
}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "extraccion_lead",
"strict": true,
"schema": {
"type": "object",
"properties": {
"nombre_completo": { "type": "string" },
"empresa": { "type": "string" },
"correo": { "type": "string" },
"telefono": { "type": "string" },
"cantidad_licencias": { "type": "integer" },
"plan_interes": {
"type": "string",
"enum": ["Starter", "Profesional", "Empresa"]
},
"requiere_soporte_24_7": { "type": "boolean" },
"comentarios_adicionales": { "type": ["string", "null"] }
},
"required": [
"nombre_completo",
"empresa",
"correo",
"telefono",
"cantidad_licencias",
"plan_interes",
"requiere_soporte_24_7",
"comentarios_adicionales"
],
"additionalProperties": false
}
}
}
}
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Qué garantiza la característica "Structured Outputs" con strict: true al pedir una respuesta a un LLM?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar IA Aplicada a Desarrollo Web: APIs, RAG & Agentes y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.