Módulo 1: Fundamentos de Prompt Engineering
1. Introducción: Prompt Engineering como Disciplina
Descripción
Esta es la primera cápsula del Módulo 1 de Advanced Prompt Engineering. Aquí vas a entender la diferencia fundamental entre "usar ChatGPT" y hacer prompt engineering profesional. La mayoría de developers que trabajan con LLMs escriben prompts por intuición: prueban algo, si funciona lo dejan, si no lo reescriben hasta que "se ve bien". Eso no escala en producción.
Prompt engineering como disciplina es diseñar inputs para LLMs que producen outputs predecibles, evaluables y optimizados. No es arte ni magia: es ingeniería con principios, patrones y prácticas reproducibles. Este módulo te da el marco mental y las herramientas que usarás en los 7 módulos siguientes.
Por qué importa: Sin entender prompt engineering como disciplina, los módulos posteriores (zero-shot, few-shot, CoT, ReAct, evaluation) serían técnicas sueltas sin contexto. Con esta base, cada técnica encaja en un framework coherente: componentes identificables, roles que controlan comportamiento, parámetros que afectan resultados.
Diferencia: Usar ChatGPT vs Prompt Engineering
Usar ChatGPT (enfoque casual)
- Escribes una pregunta o instrucción
- Si la respuesta es buena, la usas
- Si no, reescribes y vuelves a intentar
- No hay método, no hay métricas, no hay reproducibilidad
- Funciona para tareas personales y exploración
Prompt Engineering (enfoque profesional)
- Diseñas prompts con componentes identificables (instrucción, contexto, input, output format)
- Configuras roles (system, user, assistant) como contrato de comportamiento
- Ajustas parámetros (temperature, max_tokens) según el caso de uso
- Evalúas con métricas objetivas, no con "se ve bien"
- Versionas prompts, haces A/B testing, optimizas costos
- Funciona para sistemas en producción que sirven a usuarios reales
La transición: "Lo que haces funciona a veces" → "funciona siempre, con cualquier modelo, de forma predecible".
Prompt Engineering como Skill de Ingeniería
Por qué no es "arte"
Arte: Subjetivo, depende del talento individual, difícil de replicar.
Ingeniería: Sistemático, basado en principios, reproducible por cualquier equipo.
Evidencia de que es ingeniería:
-
Componentes identificables: Un prompt profesional tiene estructura: instrucción, contexto, input, output format. Puedes analizarlo, descomponerlo, y mejorarlo por partes.
-
Parámetros configurables: Temperature, top_p, max_tokens afectan el resultado de forma predecible. No es "el modelo decidió" — es "configuraste X y obtuviste Y".
-
Evaluación objetiva: Métricas como accuracy, faithfulness, format compliance permiten medir si un prompt mejora o empeora. No "se ve bien" sino "score 0.92 vs 0.78".
-
Versionado y CI/CD: Los prompts se versionan, se testean, y se despliegan como cualquier artefacto de software. Un cambio en el prompt puede romper un sistema; por eso hay regression testing.
Analogía: Escribir prompts como ingeniería es como escribir SQL. Un desarrollador junior escribe queries que "funcionan a veces". Un senior diseña queries optimizadas, con índices, con constraints, que funcionan siempre y son mantenibles. Prompt engineering es el mismo salto de nivel.
Dos Tipos de Problemas que Resuelve
Problema 1: Outputs inconsistentes
Sin método, el mismo prompt puede dar resultados muy diferentes en llamadas sucesivas, especialmente al cambiar de modelo o versión.
from openai import OpenAI
client = OpenAI()
# Prompt casual — temperatura alta, sin constrainst de formato
for i in range(3):
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Clasifica este email como urgente o no urgente: 'El servidor de producción está caído.'"}],
temperature=0.7 # Alta — resultados variables
)
print(f" Intento {i+1}: {r.choices[0].message.content}")
# Puede producir:
# Intento 1: "Urgente"
# Intento 2: "Este email claramente indica una situación urgente, ya que..."
# Intento 3: "URGENTE - Requiere atención inmediata"
# Prompt engineered — temperatura 0, formato estricto
for i in range(3):
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Clasifica emails. Responde SOLO con: URGENTE o NO_URGENTE. Nada más."},
{"role": "user", "content": "El servidor de producción está caído."}
],
temperature=0,
max_tokens=5
)
print(f" Intento {i+1}: {r.choices[0].message.content}")
# Produce siempre:
# Intento 1: URGENTE
# Intento 2: URGENTE
# Intento 3: URGENTE
Problema 2: Comportamiento impredecible entre modelos
import anthropic
oai = OpenAI()
ant = anthropic.Anthropic()
# Mismo prompt casual en dos modelos
prompt_casual = "Resume este texto: 'El mercado cayó 3% ayer debido a cifras de inflación.'"
r_oai = oai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt_casual}],
temperature=0
)
r_ant = ant.messages.create(
model="claude-3-5-haiku-20241022",
messages=[{"role": "user", "content": prompt_casual}],
temperature=0,
max_tokens=100
)
# Ambos funcionan, pero el formato puede variar entre modelos
# Para código que depende del output: problema potencial
# Prompt engineered — mismo resultado en ambos:
prompt_eng = """
Resume en exactamente 1 oración, máximo 15 palabras, en inglés.
Texto: "El mercado cayó 3% ayer debido a cifras de inflación."
Resumen:"""
# Resultado consistente independientemente del modelo
Posición en el Stack de AI Engineering
┌─────────────────────────────────────────────────────────┐
│ AI Engineering Stack │
├─────────────────────────────────────────────────────────┤
│ Deployment, Monitoring, Cost Optimization (Nivel 3) │
│ Evaluation, Testing, Guardrails (Nivel 2) │
│ Agents, RAG, Chains (Nivel 1) │
│ ← Prompt Engineering (ESTA GUÍA) │
│ LLM Access, APIs, Python (Fundamentos) │
└─────────────────────────────────────────────────────────┘
Prompt engineering es la capa entre: "Sabes llamar APIs de LLMs" y "Construyes sistemas RAG, agents, chains".
- Todo sistema AI usa prompts: el system prompt de un chatbot, el prompt de un RAG para generar respuestas, las instrucciones de un agente.
- Sin prompts bien diseñados, el mejor RAG o el mejor agente falla por outputs inconsistentes, formatos incorrectos, o comportamiento impredecible.
- Esta guía te da la base para que cuando construyas RAG (guía #8), agents (guía #11), o evaluation pipelines, tus prompts sean production-ready.
Qué Cambia con Esta Guía
Antes (si solo usabas ChatGPT o APIs básicas):
- Prompts por intuición
- Sin estructura de componentes
- Sin system prompts como contrato
- Sin parámetros configurados conscientemente
- Sin evaluación más allá de "probé y funcionó"
Después (al completar esta guía):
- Prompts con método (CRISPE, anatomía, roles)
- Componentes identificables y evaluables
- System prompts que controlan comportamiento
- Parámetros elegidos según caso de uso
- Evaluation con métricas, regression testing, A/B testing
- Prompts versionados y gestionados en producción
Roadmap del Módulo 1
| # | Cápsula | Qué verás |
|---|---|---|
| 01 | Introducción (esta) | Prompt engineering como disciplina, posición en el stack |
| 02 | Anatomía de un prompt | Componentes: instrucción, contexto, input, output format. Tokens |
| 03 | Roles: system, user, assistant | System prompt como contrato. Multi-turn |
| 04 | Temperature y parámetros | temperature, top_p, max_tokens. Cuándo usar cada valor |
| 05 | Mental models (CRISPE) | Framework para diseñar prompts sistemáticamente |
| 06 | Comparación: casual vs engineered | Side-by-side con métricas. Cuándo basta lo básico |
| 07 | Proveedores y diferencias | OpenAI vs Anthropic vs Google. Adapter patterns |
| 08 | Proyecto: Prompt Analyzer | Sistema que clasifica, descompone y sugiere mejoras |
Duración estimada: 1.0-1.25 hrs para el módulo completo.
Qué NO Cubre Este Módulo
- Fine-tuning: Ajustar los pesos del modelo (eso requiere entrenamiento, no está en scope)
- Prompt injection a fondo: Cubrimos guardrails básicos en M3; ataques avanzados son tema de seguridad especializada
- Jailbreaking: Técnicas para romper guardrails de seguridad no son útiles en producción
- NLP matemático: Attention, embeddings, matrices de pesos — esto es para quienes construyen modelos, no los usan
Qué sí cubre: Todo lo que un AI Engineer necesita para usar LLMs en producción de forma profesional y reproducible.
Setup Técnico
Prerequisitos
- Python 3.11+
- OpenAI API key (o Anthropic para comparaciones)
- Experiencia con
requestso SDKs de APIs
Instalación
# Crear entorno virtual
python -m venv venv
source venv/bin/activate # Mac/Linux
# venv\Scripts\activate # Windows
# Instalar dependencias
pip install openai>=1.0.0 anthropic>=0.25.0 python-dotenv>=1.0.0 pydantic>=2.0.0
Archivo .env
# .env
OPENAI_API_KEY=sk-proj-...
ANTHROPIC_API_KEY=sk-ant-... # Opcional para cápsula 07
Verificar instalación
# verify_setup.py
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Di exactamente: 'Setup correcto'"}],
temperature=0,
max_tokens=20
)
print(response.choices[0].message.content)
# Output esperado: Setup correcto
Conexión con el Resto de la Guía
Este módulo es la base conceptual para todo lo que viene:
- M2 (Zero-Shot / Few-Shot): Usa anatomía de prompts para construir ejemplos con método
- M3 (Structured Outputs): Amplía "output format" a schemas Pydantic y JSON mode
- M4 (Chain-of-Thought): Agrega "razonamiento" como componente dentro del output format
- M5 (ReAct): Combina el "context" con herramientas y observaciones externas
- M6 (Prompt Composition): Encadena múltiples prompts con anatomía bien definida
- M7 (Evaluation): Mide cada componente de anatomía con métricas objetivas
- M8 (Production): Versiona, cachea y monitorea prompts con estructura consistente
El Ciclo de un Prompt Engineer en Producción
En la práctica, trabajar con prompts en producción sigue un ciclo iterativo que verás aplicado en cada módulo:
1. DISEÑAR
Definir objetivo → Elegir componentes (CRISPE) → Draft inicial
│
▼
2. PROBAR
Ejecutar con ejemplos representativos → Capturar outputs
│
▼
3. EVALUAR
Medir con métricas objetivas → Identificar failures por componente
│
▼
4. REFINAR
Ajustar el componente que falla → No reescribir todo
│
▼
5. VERSIONAR
Guardar versión → Tag de cambio → Regression tests
│
└──────────────── Repetir con nueva tarea ────────────────▶
Este ciclo aparece en el Prompt Analyzer (M1-08), en el Few-Shot System (M2-08), en el Structured Data Extractor (M3-08), y en cada proyecto de la guía. Al final de esta guía, tendrás interiorizado este ciclo como forma de trabajar.
Primer Código: Comparación Directa
El siguiente código muestra en 30 líneas la diferencia clave entre prompt casual y engineered en un caso concreto: clasificar la urgencia de tickets de soporte.
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI()
TICKET = "La base de datos de producción no responde desde hace 20 minutos. Usuarios afectados: 5000."
# === PROMPT CASUAL ===
r_casual = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"¿Esto es urgente? {TICKET}"}],
temperature=0.7
)
print("Casual:", r_casual.choices[0].message.content[:100])
# Puede dar: "Sí, esto es muy urgente porque..." (texto libre, no parseable)
# === PROMPT ENGINEERED ===
r_eng = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": (
"Eres un clasificador de urgencia de tickets de soporte. "
"Clasifica en: CRITICO, ALTO, MEDIO, o BAJO. "
"Responde SOLO con la categoría. Nada más."
)
},
{"role": "user", "content": TICKET}
],
temperature=0,
max_tokens=10
)
print("Engineered:", r_eng.choices[0].message.content)
# Siempre da: CRITICO
En las 8 cápsulas de este módulo aprenderás exactamente por qué cada decisión del "prompt engineered" (system prompt, temperature=0, max_tokens, formato de respuesta) importa y qué pasa cuando las cambias.
Evidencia de Éxito
Al terminar este módulo debes poder:
- Explicar prompt engineering como disciplina (no como "tips") en 3 oraciones
- Identificar los 4 componentes de un prompt en cualquier ejemplo
- Configurar temperature y max_tokens conscientemente según el caso de uso
- Diseñar un prompt usando el framework CRISPE
- Comparar el comportamiento de OpenAI vs Anthropic con el mismo prompt
- Construir un Prompt Analyzer básico funcional (cápsula 08)
Preguntas Frecuentes al Empezar
¿Necesito saber Machine Learning para esta guía? No. Esta guía asume que sabes Python y consumir APIs REST. No necesitas entender cómo funciona un transformer internamente para diseñar prompts efectivos.
¿Los prompts de esta guía funcionarán en 6 meses cuando los modelos cambien? Los principios sí. Los valores exactos de parámetros pueden ajustarse. El framework CRISPE, la anatomía de prompts, los patrones zero-shot/few-shot son fundamentos que se mantienen independientemente del modelo. El Módulo 7 (Evaluación) te da las herramientas para detectar cuándo un prompt regresó con un nuevo modelo.
¿Cuánto tiempo lleva dominar prompt engineering? Para tener prompts production-ready: 2-3 semanas de práctica activa. Para dominar técnicas avanzadas (CoT, ReAct, evaluation): 2-3 meses de trabajo en proyectos reales. Esta guía te da el mapa; los proyectos de cada módulo son la práctica deliberada.
¿Debo usar OpenAI o Anthropic? Empieza con OpenAI (gpt-4o-mini para práctica, costo bajo). La cápsula 07 explica diferencias y cuándo usar cada uno. El módulo 7 y 8 cubren multi-provider en producción.
Resumen
- Prompt engineering es una disciplina de ingeniería, no arte: componentes identificables, parámetros configurables, evaluación objetiva.
- Diferencia clave: Usar ChatGPT = intuición. Prompt engineering = método reproducible.
- Posición: Capa entre "LLM APIs" y "RAG, agents, chains". Todo sistema AI usa prompts.
- Qué cambia: De "funciona a veces" a "funciona siempre, con cualquier modelo, de forma predecible".
- En este módulo: Anatomía, roles, parámetros, CRISPE, comparación proveedores, y el Prompt Analyzer como proyecto.
- Límites: No cubre fine-tuning, jailbreaking, ni NLP matemático. Solo lo que un AI Engineer usa en producción.
Recursos adicionales
- OpenAI API Reference — Documentación oficial de la API y parámetros disponibles
- Anthropic Messages API — API de Claude con diferencias de diseño respecto a OpenAI
- Prompt Engineering Guide (OpenAI) — Guía oficial de prompting con estrategias recomendadas
- Learn Prompting — Recursos introductorios de prompt engineering con ejemplos
- tiktoken — Librería de OpenAI para contar tokens en tus prompts
- Prompting Guide (DAIR.AI) — Referencia comprensiva de técnicas de prompting con papers