Forzar formatos de salida de forma fiable
Desde la petición en el prompt hasta el esquema JSON real de la API — tres niveles con los que forzar un formato de salida fijo.
El nivel más simple: el prompt
El clásico es una instrucción de formato clara en el prompt: «Responde exclusivamente en JSON con los campos name, alter, stadt» más un ejemplo de salida. Esto suele funcionar bien, pero no está garantizado — el modelo aún puede anteponer una frase o pasar por alto un campo.
El nivel más fiable: funciones de la API
Las API modernas de LLM ofrecen mecanismos propios que fuerzan un formato técnicamente en vez de solo recomendarlo. Claude ofrece para esto Structured Outputs con validación por esquema JSON; OpenAI llama a su función igualmente Structured Outputs. Ambas garantizan que la respuesta corresponda exactamente al esquema entregado — ya no hace falta corregir después para reparar un JSON roto.
Distinción importante
Las instrucciones de prompt son un patrón — un hábito que suele funcionar, pero sin garantía. Las funciones de API como Structured Outputs, en cambio, son una garantía técnica de la propia interfaz. Para formateo no crítico suele bastar el prompt; para código que procesa el resultado después, vale la pena la función de la API.
La validación como tercera red de seguridad
Incluso con formatos garantizados, la validación sigue siendo útil: comprueba la respuesta contra tu esquema e integra un bucle de reintento en caso de error. Esto cubre casos que van más allá de simples cuestiones de formato — por ejemplo, JSON válido con valores sin sentido en el contenido.
EJEMPLO
Nivel de prompt (sin garantía): «Responde SOLO con JSON válido en el formato {\"stadt\": string, \"land\": string}, sin texto adicional.» Nivel de API (garantizado, pseudocódigo): output_config={\"format\": {\"type\": \"json_schema\", \"schema\": {\"type\": \"object\", \"properties\": {\"stadt\": {\"type\": \"string\"}, \"land\": {\"type\": \"string\"}}, \"required\": [\"stadt\", \"land\"]}}} — cada respuesta corresponde de forma garantizada a este esquema.
🛠️ EJERCICIO — PRUÉBALO TÚ
Fuerza un formato JSON fijo una vez solo mediante prompt y otra vez mediante parámetro de esquema, y compara la fiabilidad.
- Pide al modelo mediante instrucción de prompt una respuesta JSON con campos fijos para 5 solicitudes de prueba.
- Comprueba si las 5 respuestas son JSON válido y completo sin texto adicional.
- Repite las mismas solicitudes con un esquema JSON real mediante una función de Structured Outputs de tu elección.
- Compara la tasa de error de ambos enfoques.
✅ AUTOEVALUACIÓN
- ☐ ¿Hubo en la variante de solo prompt al menos una respuesta con texto adicional o un campo faltante?
- ☐ ¿La variante con esquema fue realmente 100 % conforme en los 5 casos?
QUIZ RÁPIDO
¿Cuál es la diferencia central entre una instrucción de formato en el prompt y una función de la API como Structured Outputs?
FUENTES
- Documentación de Claude: Structured Outputs ↗ platform.claude.com
- Documentación de OpenAI: Structured Outputs ↗ developers.openai.com