Guía de Prompt Engineering: Cómo hablar con LLMs
TL;DR
- El prompting no es magia, es comunicación estructurada
- Los 5 elementos: contexto, instrucción, formato, ejemplos, restricciones
- Las técnicas avanzadas (chain of thought, few-shot) tienen su lugar
- El prompting tiene límites reales que debes conocer
- La habilidad se desarrolla iterando, no memorizando plantillas
¿Qué es Prompt Engineering?
Prompt engineering es el arte de comunicarte con modelos de lenguaje de forma que obtengas el resultado que necesitas. No es hackear el modelo. No es encontrar palabras mágicas. Es simplemente aprender a dar instrucciones claras.
Piensa en ello como explicar una tarea a un compañero de trabajo muy capaz pero que no conoce tu contexto. Si le dices “hazme el informe”, probablemente no obtengas lo que quieres. Si le dices “necesito un informe de 2 páginas sobre las ventas del Q4, con gráficos, para presentar al director mañana”, el resultado será mucho mejor.
Por qué importa
La diferencia entre un prompt mediocre y uno bueno puede ser:
| Prompt vago | Prompt estructurado |
|---|---|
| ”Escríbeme algo sobre IA” | Artículo genérico de 500 palabras |
| ”Escribe un artículo de 1000 palabras sobre los riesgos de la IA en el sector financiero, con 3 casos reales y recomendaciones prácticas, en tono profesional pero accesible” | Contenido específico y útil |
El modelo es el mismo. La calidad del output depende de la calidad del input.
Lo que NO es
- No es magia: No hay palabras secretas que desbloqueen superpoderes
- No es manipulación: El modelo no tiene ego que halagar
- No es universal: Lo que funciona para una tarea puede no funcionar para otra
- No lo resuelve todo: Hay límites reales (más sobre esto después)
Los 5 elementos de un buen prompt
1. Contexto
Dile al modelo quién eres y qué situación enfrentas. El contexto ayuda al modelo a ajustar su respuesta.
Malo:
¿Cómo optimizo una consulta SQL?
Mejor:
Soy data engineer junior trabajando con PostgreSQL.
Tengo una consulta que tarda 30 segundos en una tabla de 10M de registros.
¿Cómo puedo optimizarla?
El contexto no tiene que ser largo. Tiene que ser relevante.
2. Instrucción clara
La instrucción es el núcleo del prompt. Debe tener:
- Verbo de acción: Escribe, analiza, compara, resume, explica
- Objeto: Qué quieres que procese
- Restricciones: Límites y condiciones
Estructura básica:
[Verbo] + [qué] + [cómo] + [restricciones]
Ejemplo:
Analiza este código Python
identificando posibles problemas de rendimiento
y sugiere optimizaciones
sin cambiar la lógica del negocio.
3. Formato de salida
Si no especificas el formato, el modelo elegirá uno. A veces acertará. A veces no.
Especifica formato cuando necesites:
Responde en formato JSON con esta estructura:
{
"resumen": "...",
"puntos_clave": ["...", "..."],
"siguiente_paso": "..."
}
Responde con una tabla markdown comparando:
| Característica | Opción A | Opción B |
Responde en máximo 3 párrafos, sin listas.
4. Ejemplos (Few-shot)
Mostrar ejemplos es más efectivo que explicar reglas. El modelo aprende del patrón.
Sin ejemplos:
Clasifica estos tweets por sentimiento: positivo, negativo, neutro.
Con ejemplos (few-shot):
Clasifica estos tweets por sentimiento.
Ejemplos:
- "Me encanta este producto!" → positivo
- "Pésimo servicio, nunca más" → negativo
- "Llegó el paquete hoy" → neutro
Ahora clasifica:
- "No está mal, pero esperaba más"
- "¡Increíble experiencia!"
Regla general: 2-3 ejemplos suelen ser suficientes. Más ejemplos no siempre es mejor.
5. Restricciones
Dile al modelo lo que NO debe hacer. Esto es tan importante como decirle lo que sí debe hacer.
Restricciones útiles:
- No inventes datos. Si no sabes algo, di "no tengo esa información".
- No uses jerga técnica; el público es no técnico.
- No incluyas código; solo explica el concepto.
- Limítate a los hechos del documento adjunto.
Técnicas avanzadas
Chain of Thought (CoT)
Pide al modelo que razone paso a paso. Útil para problemas complejos donde el razonamiento importa.
Sin CoT:
¿Cuántos días hay entre el 15 de marzo de 2024 y el 22 de junio de 2024?
Con CoT:
¿Cuántos días hay entre el 15 de marzo de 2024 y el 22 de junio de 2024?
Piensa paso a paso, contando los días de cada mes.
La versión CoT es más lenta pero más precisa para cálculos y lógica.
Role Playing
Asigna un rol específico al modelo. Útil cuando necesitas una perspectiva particular.
Eres un revisor de código senior con 15 años de experiencia en Python.
Tu trabajo es encontrar bugs sutiles y problemas de mantenibilidad.
Sé crítico pero constructivo.
Advertencia: El roleplay no hace al modelo más capaz. Un modelo que no sabe matemáticas avanzadas no las aprenderá por fingir ser matemático. El roleplay ajusta el tono y el enfoque, no las capacidades.
Few-shot con variaciones
Cuando el patrón es complejo, muestra variaciones en los ejemplos:
Convierte estas descripciones en nombres de variables Python.
Ejemplos:
- "el nombre del usuario" → user_name
- "número total de intentos" → total_attempts
- "está activo o no" → is_active
- "lista de productos favoritos" → favorite_products
Ahora convierte:
- "fecha de última modificación"
- "tiene permisos de admin"
Self-consistency
Pide al modelo que verifique su propia respuesta. Funciona mejor de lo que parece.
Resuelve este problema.
Después, verifica tu respuesta sustituyendo los valores
y comprueba que el resultado es coherente.
Si encuentras un error, corrígelo.
Los límites del prompting
Aquí es donde la mayoría de guías se quedan cortas. El prompting tiene límites reales, y conocerlos te ahorrará frustración.
Mi experimento: 17 iteraciones
Después de probar un problema de probabilidad con 17 versiones diferentes de prompts, descubrí algo que cambió mi forma de ver el prompting:
El modelo encontraba la respuesta correcta en su razonamiento… y luego la descartaba por “no ser lo estándar”.
No era un problema de prompt. El modelo SABÍA la respuesta pero no se atrevía a darla. Esto me llevó a desarrollar una taxonomía de fallos que determina qué técnica usar en cada caso.
Los 4 tipos de fallo
| Tipo de fallo | Ejemplo | Solución |
|---|---|---|
| Ambigüedad interpretativa | El problema tiene múltiples lecturas válidas | Dar permiso explícito para explorar alternativas |
| Cálculo puro | Aritmética compleja, muchos pasos | Extended thinking o herramientas de código |
| Error conceptual | El modelo confunde conceptos técnicos | Modelo más capaz o pistas específicas |
| Conocimiento externo | Necesita datos que no tiene | Búsqueda web + verificación |
La clave: Diagnostica el tipo de fallo antes de modificar el prompt. Un prompt más elaborado para un problema de tipo 2 (cálculo) no ayuda; estorba.
El caso de estudio completo
Documenté todo el proceso en una serie de posts:
- El modelo sabe razonar, no se atreve a elegir - El descubrimiento inicial
- Llegó a 0 y lo llamó contradicción - Por qué separar contextos no basta
- Más tokens no es mejor resultado - Los límites de la fuerza bruta
- El prompt que resuelve problemas ambiguos - La solución: prompt v17b
- Taxonomía de fallos de LLMs - Cuándo usar cada técnica
Si quieres profundizar en los límites del prompting, esa serie te dará una perspectiva que no encontrarás en tutoriales genéricos.
Errores comunes y cómo evitarlos
1. Ser demasiado vago
Mal: “Ayúdame con mi código” Bien: “Tengo un error TypeError en esta función de Python. El mensaje es ‘NoneType has no attribute split’. ¿Por qué ocurre y cómo lo arreglo?“
2. Dar demasiadas instrucciones
Los prompts kilométricos confunden más que ayudan. Si tu prompt tiene 15 instrucciones, probablemente necesites dividir la tarea.
Mal: Un prompt de 500 palabras con 12 condiciones Bien: Dividir en 2-3 pasos secuenciales
3. No especificar formato
Si necesitas JSON, pide JSON. Si necesitas bullet points, pídelos. El modelo no lee mentes.
4. Esperar que el modelo “adivine”
El modelo optimiza para dar una respuesta plausible, no para preguntarte qué querías decir. Si hay ambigüedad, la resolverá a su manera.
Mal: “Haz un análisis” (¿de qué? ¿con qué profundidad? ¿para quién?) Bien: “Haz un análisis FODA de esta startup, en una página, para presentar a inversores”
5. No iterar
El prompting es iterativo. Tu primer prompt casi nunca será el definitivo. Lee la respuesta, identifica qué falta o sobra, y ajusta.
Flujo normal:
- Prompt inicial → respuesta parcialmente útil
- Ajustas instrucciones → mejor pero le falta formato
- Añades formato → casi perfecto pero muy largo
- Añades restricción de longitud → listo
Herramientas y recursos
Claude Projects
Si usas Claude, los Projects te permiten guardar contexto persistente: documentos, instrucciones, y restricciones que aplican a toda la conversación. Esta es una de las técnicas que uso para trabajar con Claude sin perder contexto.
Útil para:
- Proyectos largos donde repites el mismo contexto
- Estilos de escritura específicos
- Documentación de referencia
System prompts
El system prompt es contexto que el modelo “recuerda” durante toda la conversación. Úsalo para:
Eres un asistente de programación especializado en Python.
Cuando des código, incluye siempre comentarios explicativos.
Usa type hints.
Prefiere soluciones simples sobre elegantes.
Templates para casos comunes
Para análisis de texto:
Analiza el siguiente texto y extrae:
1. Tema principal
2. Tono (formal/informal/técnico)
3. 3 puntos clave
4. Posibles sesgos o limitaciones
Texto:
[pegar texto]
Para revisión de código:
Revisa este código buscando:
1. Bugs o errores lógicos
2. Problemas de rendimiento
3. Violaciones de buenas prácticas
4. Sugerencias de mejora
Prioriza por impacto. No comentes estilo menor.
Código:
[pegar código]
Para resúmenes:
Resume este documento en:
- 1 frase de contexto
- 3-5 bullet points con los puntos clave
- 1 frase de conclusión
Máximo 200 palabras total.
Documento:
[pegar documento]
Conclusión
El prompting es una habilidad que se desarrolla con práctica, no memorizando plantillas. Los 5 elementos (contexto, instrucción, formato, ejemplos, restricciones) son tu base. Las técnicas avanzadas son herramientas específicas para problemas específicos.
Pero más importante: conoce los límites. Saber cuándo el problema NO es el prompt te ahorrará horas de frustración. A veces necesitas un modelo más capaz. A veces necesitas herramientas externas. A veces el modelo simplemente no puede hacer lo que pides.
El buen prompt engineering no es escribir el prompt perfecto. Es saber qué prompt escribir para cada situación.
Si buscas ejemplos listos para usar, tengo 50 prompts probados para ChatGPT. Y si programas con IA, Cursor lleva el prompting al siguiente nivel integrando el contexto completo de tu proyecto.
También te puede interesar
El modelo sabe razonar. No se atreve a elegir
17 iteraciones de prompts revelaron que el modelo encuentra la respuesta correcta pero se autocensura por no ser lo estándar
Llegó a 0 y lo llamó contradicción
Por qué separar contextos no basta para que un LLM se autocorrija: el problema de aceptar resultados contraintuitivos
Más tokens no es mejor resultado
Cómo un meta-prompt exhaustivo causó overflow de contexto y llegó al mismo error en un problema de random walk