Escribir un prompt es fácil ("Escribe un email"), pero obtener una respuesta de calidad empresarial de forma consistente es difícil. Los modelos a menudo alucinan, ignoran instrucciones sutiles o responden con formatos que rompen tu aplicación.
Situación típica: le pedís al modelo "Extrae los nombres de los clientes de este texto". A veces devuelve una lista con viñetas, otras veces una frase narrativa, y otras veces incluye nombres de empresas que no son clientes. Tu código de parsing falla el 50% de las veces.
Por qué es importante: en un entorno B2B, la fiabilidad es más importante que la creatividad. Un buen prompt engineering transforma un modelo "impredecible" en una herramienta de software robusta.
Existen patrones probados para guiar al modelo:
""", --- o tags XML para separar instrucciones de datos.| Usá esto cuando... | NO lo uses cuando... |
|---|---|
| Necesitás un formato de salida estricto (JSON, CSV) | La tarea es extremadamente creativa y abierta (ej. lluvia de ideas) |
| La tarea requiere razonamiento lógico o matemático | Solo necesitás una respuesta simple de sí/no sin contexto |
| El modelo comete errores frecuentes en casos de borde |
Objetivo: mejorar iterativamente un prompt para clasificar correos de soporte técnico, pasando de una tasa de error alta a una respuesta estructurada y fiable.
Contexto inicial: tenés un correo de un cliente enfadado y querés extraer Categoría, Sentimiento y Urgencia.
// Resultado probable: un párrafo de texto libre difícil de procesar por código.
// Resultado: un JSON válido, pero quizás la lógica de urgencia no es la que queremos.
Le damos ejemplos para guiar su lógica y le pedimos que razone antes de clasificar.
Comparando las salidas: V1 — texto libre desordenado. V2 — JSON limpio. V3 — JSON limpio y con una clasificación de urgencia mucho más precisa gracias a los ejemplos.
El troubleshooting de esta lección sugiere response_format={"type": "json_object"} para forzar JSON válido. Es real, pero solo garantiza JSON sintácticamente válido — no que respete tu schema exacto (nombres de campos, tipos, valores permitidos). Los modelos más recientes de OpenAI soportan además "structured outputs" con un json_schema explícito, que sí fuerza el schema a nivel de API en lugar de confiar en que el modelo lo siga por instrucción. Esta capacidad evoluciona rápido — vale la pena revisar la documentación vigente de OpenAI para el modelo que estés usando antes de asumir cuál es la opción recomendada hoy.
| Si ves esto... | Causa | Solución |
|---|---|---|
| El modelo sigue "hablando" antes del JSON | Los modelos de chat tienden a ser conversacionales | Usá response_format={"type": "json_object"} o añadí "No incluyas explicaciones previas" en el prompt |
| Clasifica mal casos ambiguos | Falta de contexto | Añadí más ejemplos (few-shot) cubriendo esos casos borde específicos |
| El modelo ignora los delimitadores | El prompt es confuso | Asegurate de que los delimitadores envuelven claramente la entrada del usuario y son referenciados en las instrucciones |
Concepto central: la calidad de la salida es directamente proporcional a la calidad de la entrada. Tratá el prompt como código: debe ser claro, modular y testeable.
Para recordar: