Por qué usar salidas estructuradas
Obtenga resultados fiables y legibles por máquinas.
Por qué usar salidas estructuradas es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.
El problema del texto libre
La salida de un LLM en lenguaje natural es ambigua de analizar. El modelo puede responder The price is $42 una vez y It costs forty-two dollars la siguiente. El código posterior que espera un número falla.
La salida estructurada consiste en restringir al modelo para que emita datos con una estructura legible por máquinas (JSON, objetos tipados), de modo que el parseo sea determinista y no heurístico.
El parseo es el coste oculto
A menudo, los equipos dedican más esfuerzo de ingeniería al postprocesamiento de texto frágil que a la creación de prompts. La extracción mediante expresiones regulares, la coincidencia difusa y los bucles de reintento cuando falla el parseo son síntomas de una salida no estructurada.
- Las expresiones regulares fallan cuando cambia la formulación.
- La coincidencia difusa introduce errores silenciosos.
- Cada campo nuevo multiplica la superficie de parseo.
La generación estructurada traslada este contrato aguas arriba, a la solicitud.
Tres niveles de estructura
Existe un espectro de niveles de imposición:
- Soft prompting — pida JSON en el prompt; no hay ninguna garantía.
- Guiado por esquema — proporcione un JSON Schema; el proveedor lo valida.
- Decodificación restringida — una gramática/FSM enmascara los tokens no válidos para que solo se pueda generar JSON válido.
Cada nivel intercambia flexibilidad por fiabilidad.
Aspectos internos de la decodificación restringida
En el nivel más estricto, el decodificador aplica una máscara de tokens en cada paso. Una gramática (que normalmente se compila en una máquina de estados finitos) calcula qué tokens siguientes mantienen la salida válida, y el muestreador solo puede elegir de ese conjunto.
Esto hace que el JSON mal formado sea estructuralmente imposible, en lugar de simplemente desaconsejarlo.
# Conceptual: logit masking against a grammar FSM
def masked_sample(logits, fsm_state, grammar):
allowed = grammar.allowed_token_ids(fsm_state)
mask = full_like(logits, NEG_INF)
mask[allowed] = 0.0
return sample(logits + mask)Salida estructurada nativa del proveedor
Las API modernas exponen un response_format con un JSON Schema estricto. El proveedor garantiza que la respuesta cumple el esquema, por lo que puede deserializarla sin código defensivo.
client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'Extract the invoice fields.'}],
response_format={
'type': 'json_schema',
'json_schema': {
'name': 'invoice',
'strict': True,
'schema': {
'type': 'object',
'properties': {
'total': {'type': 'number'},
'currency': {'type': 'string'}
},
'required': ['total', 'currency'],
'additionalProperties': False
}
}
}
)La fiabilidad como contrato
Considere el esquema como un contrato de API entre el modelo y su sistema. Al igual que una firma de función tipada, documenta la intención y permite obtener garantías similares a las del tiempo de compilación.
Esto transforma la salida del LLM de una sugerencia que su código debe interpretar en un valor tipado en el que su código puede confiar.
Equilibrio entre determinismo y creatividad
La estructura restringe la forma, pero no necesariamente el contenido. Un esquema con un campo summary: string libre todavía permite incluir prosa creativa dentro de ese campo.
La práctica recomendada es estructurar con precisión la envoltura (campos, tipos y enums) y dejar margen creativo únicamente dentro de los campos de texto designados.
Los enums eliminan clases enteras de fallos
La clasificación en texto libre (sentiment: 'kind of positive') no se puede analizar. Un enum obliga a elegir una opción de un conjunto fijo, eliminando toda una clase de errores de normalización.
{
'type': 'object',
'properties': {
'sentiment': {
'type': 'string',
'enum': ['positive', 'neutral', 'negative']
}
},
'required': ['sentiment'],
'additionalProperties': False
}Observabilidad y versionado de esquemas
La salida estructurada es mucho más fácil de registrar, comparar y supervisar. Puede calcular métricas por campo, detectar desviaciones y generar alertas cuando falten campos.
Trate los esquemas como artefactos versionados: añada primero los campos como opcionales, márquelos como obsoletos antes de eliminarlos y etiquete cada respuesta con la versión del esquema que la generó.
Cuándo NO forzar la estructura
Restringir demasiado puede degradar la calidad. Forzar un esquema complejo durante un paso de razonamiento puede suprimir el chain-of-thought.
- Deje que el modelo razone primero en texto libre.
- Haga después una segunda llamada estructurada para dar formato a la conclusión.
Separar el razonamiento del formato suele dar mejores resultados que una única llamada excesivamente restringida.
Consideraciones de coste y latencia
La salida estructurada suele reducir el coste total: hay menos reintentos, se emplean menos tokens en prosa introductoria y no se necesita un servicio de parseo independiente. Sin embargo, los modos de esquema estricto pueden añadir una pequeña sobrecarga del lado del servidor y rechazar el primer intento, así que combínelos siempre con una estrategia de reparación (que se tratará más adelante).
Comprobación rápida
¿Qué técnica hace que el JSON mal formado sea estructuralmente imposible, en lugar de simplemente desaconsejarlo?
Resumen
Ahora comprende por qué es importante la salida estructurada:
- Reemplaza el parseo frágil por un contrato tipado.
- La imposición abarca desde el soft prompting hasta la decodificación restringida.
- Los enums y las envolturas estrictas eliminan clases enteras de errores.
- La estructura facilita la observabilidad y el versionado.
- Separar el razonamiento del formato evita pérdidas de calidad.
A continuación: cómo expresar ese contrato con precisión mediante JSON Schema en los prompts.
Preguntas frecuentes
¿La lección «Por qué usar salidas estructuradas» es gratis?
Sí — el texto completo de «Por qué usar salidas estructuradas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.
¿Qué aprenderé en «Por qué usar salidas estructuradas»?
Obtenga resultados fiables y legibles por máquinas. Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Prompt Engineering?
No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Por qué usar salidas estructuradas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?
Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Por qué usar salidas estructuradas
- JSON Schema en prompts
- Schemas de herramientas y funciones
- Bucles de reparación y validación