Introducción a Prompt Engineering

Intermedio
OpenAI
OpenAI
Actualizado: 03/12/2025

Qué es prompt engineering

El prompt engineering es la disciplina que se centra en diseñar y optimizar las instrucciones que proporcionamos a los modelos de lenguaje para obtener respuestas precisas y útiles. Un prompt es simplemente el texto de entrada que enviamos al modelo, y la forma en que lo redactamos influye directamente en la calidad de la respuesta generada.

Esta práctica combina elementos de programación, lingüística y diseño de interacciones para maximizar la efectividad de los modelos de IA. No se trata solo de escribir preguntas, sino de estructurar instrucciones que guíen al modelo hacia el resultado deseado.

Cuando trabajamos con la API de OpenAI, cada interacción comienza con un prompt. Veamos un ejemplo básico:

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-5",
    messages=[
        {"role": "user", "content": "Traduce al inglés: Hola mundo"}
    ]
)

print(response.choices[0].message.content)

En este caso, el prompt es simple y directo. Sin embargo, la mayoría de tareas requieren instrucciones más elaboradas para obtener resultados óptimos. El prompt engineering nos ayuda a entender qué elementos incluir, cómo estructurarlos y cómo iterar sobre ellos para mejorar los resultados.

Beneficios del prompt engineering

Dominar esta disciplina permite reducir el tiempo de desarrollo, minimizar costes computacionales y obtener respuestas más coherentes. En lugar de hacer múltiples llamadas a la API probando diferentes formulaciones, un prompt bien diseñado obtiene el resultado deseado en el primer intento.

Además, un buen prompt puede compensar limitaciones del modelo o dirigirlo hacia comportamientos específicos sin necesidad de realizar fine-tuning, lo cual resulta mucho más económico y rápido de implementar.

Anatomía de un prompt efectivo

Un prompt efectivo contiene varios componentes fundamentales que trabajan en conjunto para guiar al modelo. Aunque no todos los prompts necesitan incluir todos estos elementos, conocerlos permite construir instrucciones más precisas.

Componentes principales

  • Instrucción: La directiva principal que indica qué tarea realizar. Debe ser clara y específica. Por ejemplo, en lugar de "háblame de Python", preferimos "explica qué son las list comprehensions en Python con un ejemplo práctico".

  • Contexto: Información adicional que el modelo necesita para entender el marco de referencia, como el dominio del problema o el nivel técnico esperado.

  • Formato de salida: Especifica cómo estructurar la respuesta (JSON, tabla, código, lista). Resulta esencial cuando necesitamos procesar programáticamente la respuesta.

  • Ejemplos: Mostrar casos de entrada y salida esperada ayuda al modelo a identificar patrones. Es una de las técnicas más efectivas.

  • Restricciones: Definen límites como longitud máxima, tecnologías permitidas o comportamientos a evitar.

Veamos cómo combinar estos elementos en un prompt completo:

messages = [
    {"role": "user", "content": """
Contexto: Desarrollo una API REST con FastAPI para gestión de usuarios.

Tarea: Genera una función de validación de contraseñas seguras.

Requisitos:
- Mínimo 8 caracteres
- Al menos una mayúscula, minúscula y número
- Devuelve tupla (bool, str) con resultado y mensaje

Formato: Solo código Python con docstring, sin explicaciones adicionales.
    """}
]

Este prompt integra contexto, instrucción clara, restricciones específicas y formato esperado, maximizando las probabilidades de obtener exactamente lo que necesitamos.

Soluciones a problemas comunes

Durante el trabajo con modelos de lenguaje, es habitual encontrar situaciones donde las respuestas no cumplen nuestras expectativas. Identificar estos problemas y saber cómo corregirlos forma parte esencial del prompt engineering.

Problemas frecuentes y soluciones

Respuesta demasiado genérica

La causa suele ser la falta de especificidad. En lugar de "Explica las funciones lambda", especifica qué aspectos necesitas: "Explica la sintaxis de lambdas, muestra tres casos de uso prácticos y menciona cuándo evitarlas".

Respuesta fuera de contexto

El modelo proporciona información técnicamente correcta pero irrelevante. Solución: añade contexto sobre tu objetivo. Por ejemplo, en lugar de "¿Cómo manejo errores?", indica "Desarrollo un script que descarga archivos de una API REST. ¿Cómo estructuro el manejo de errores para fallos de red y timeouts?".

Formato inconsistente

Cuando necesitas procesar la respuesta programáticamente, especifica la estructura exacta que esperas. Para garantizar formato JSON, usa el parámetro response_format:

response = client.chat.completions.create(
    model="gpt-5",
    messages=messages,
    response_format={"type": "json_object"}
)

Tarea demasiado compleja

Concentrar múltiples operaciones en un único prompt produce resultados poco fiables. Solución: descompón en prompts secuenciales. En lugar de "analiza, corrige y documenta este código", ejecuta tres prompts separados para cada tarea.

Preámbulos innecesarios

Los modelos incluyen introducciones corteses que consumen tokens sin valor. Indica explícitamente: "Genera solo el código SQL sin explicaciones. Comienza directamente con SELECT".

Alucinaciones o datos inventados

Cuando falta información, el modelo puede inventar datos plausibles. Solución: da permiso explícito para admitir desconocimiento con frases como "Si la información no aparece en el contexto, responde: 'No dispongo de esa información'".

Sugerencias en lugar de implementación

El modelo describe qué hacer en lugar de hacerlo. Esto ocurre por ambigüedad en la instrucción. Evita "¿Podrías mejorar esta función?" y usa verbos directos: "Reescribe esta función aplicando las siguientes mejoras: [lista específica]".

Principios clave

Al diseñar prompts, aplica estos principios fundamentales:

  • Comenzar simple: Inicia con la instrucción básica y añade complejidad solo si es necesario. Un prompt de tres líneas que funciona supera a uno de veinte que no mejora el resultado.

  • Iterar sistemáticamente: Modifica un elemento cada vez y evalúa su impacto. El primer intento rara vez es óptimo.

  • Priorizar claridad: La ambigüedad es el principal enemigo. Especifica exactamente qué esperas.

  • Evitar técnicas obsoletas: Con modelos actuales, las instrucciones directas y explícitas funcionan mejor que enfoques complejos con etiquetas XML o múltiples roles.

La práctica con estos patrones desarrolla intuición sobre qué elementos incluir en cada tipo de prompt, reduciendo significativamente el tiempo necesario para obtener resultados óptimos.

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en OpenAI

Documentación oficial de OpenAI
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, OpenAI es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de OpenAI

Explora más contenido relacionado con OpenAI y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

  • Comprender qué es el prompt engineering y su importancia en la calidad de las respuestas.
  • Aprender las técnicas básicas: zero-shot, few-shot y chain of thought.
  • Saber estructurar prompts claros y efectivos con contexto, instrucciones y formato de salida.
  • Aplicar refinamiento iterativo para mejorar la precisión y utilidad de los prompts.
  • Manejar variables y parametrización para crear prompts dinámicos y reutilizables.

Cursos que incluyen esta lección

Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje