AI-901
Deep Dive
Prompt engineering es la disciplina de diseñar instrucciones que maximizan la calidad de las respuestas de un LLM. El AI-901 evalúa las técnicas básicas y los parámetros clave de generación.
Contenido
Prompt engineering es la práctica de diseñar, estructurar y refinar las instrucciones que se envían a un LLM para obtener el resultado deseado, sin modificar los pesos del modelo. Es la "interfaz de programación" entre el humano y el LLM.
¿Por qué importa?
El mismo modelo con distintos prompts puede producir resultados radicalmente diferentes en calidad, formato y precisión.
Prompt malo:
"Resume esto"
Prompt bueno:
"Resume el siguiente artículo en 3 puntos clave de máximo 20 palabras cada uno, orientados a ejecutivos de negocio sin contexto técnico."
Prompt engineering vs Fine-tuning
Prompt engineering: modificas el INPUT al modelo. Rápido, sin costo de entrenamiento, flexible.
Fine-tuning: modificas los PESOS del modelo. Lento, costoso, pero puede mejorar comportamientos muy específicos.
Siempre empieza con prompting. Solo haz fine-tuning si prompting no es suficiente.
Un prompt bien construido tiene hasta 6 componentes. No todos son necesarios siempre:
Instrucción
necesarioQué debe hacer el modelo. Verbo de acción claro: "Resume", "Clasifica", "Extrae", "Traduce".
"Clasifica el siguiente correo como urgente/normal/spam."
Contexto
Información de fondo que ayuda al modelo a entender el escenario.
"Eres un asistente de soporte técnico de una empresa de software B2B."
Datos de entrada (input)
necesarioEl texto, documento o información sobre la que debe operar el modelo.
"Texto del correo: [correo aquí]"
Ejemplos (few-shot)
Pares input/output que muestran exactamente qué formato y estilo se espera.
"Ejemplo: correo sobre contraseña olvidada → urgente"
Formato de salida
Cómo debe estructurarse la respuesta: JSON, lista, tabla, máximo X palabras, idioma.
"Responde solo con una palabra: urgente, normal o spam."
Restricciones
Qué NO debe hacer el modelo: no inventar, no usar jerga técnica, no exceder N tokens.
"No respondas si no hay suficiente información. Di: Información insuficiente."
Zero-shot prompting
Envías la tarea directamente sin ejemplos. Funciona bien para tareas simples o cuando el modelo tiene conocimiento suficiente.
Traducciones, resúmenes simples, preguntas directas.
Prompt
Traduce al inglés: "El gato duerme en el tejado."
Respuesta
The cat sleeps on the roof.
Few-shot prompting
Proporcionas 2-5 ejemplos de input/output antes de la tarea real. El modelo infiere el patrón y lo aplica.
Clasificación personalizada, formato específico, tareas con estilo definido.
Prompt
Formal: "Buenos días" → Informal: "Buenas" Formal: "¿Podría usted asistir?" → Informal: "¿Vienes?" Formal: "Le saluda atentamente" → Informal:
Respuesta
"Un saludo"
Chain-of-Thought (CoT)
Pides al modelo que razone paso a paso antes de dar la respuesta final. Mejora significativamente el razonamiento matemático, lógico y de múltiples pasos.
Problemas matemáticos, razonamiento lógico, análisis complejo.
Prompt
Si hay 3 cajas con 8 manzanas cada una, y se regalan 5 manzanas, ¿cuántas quedan? Razona paso a paso.
Respuesta
1) Total: 3×8=24. 2) Regaladas: 5. 3) Quedan: 24-5=19.
Role prompting
Asignas un rol específico al modelo para que adopte un estilo, nivel de expertise y perspectiva concretos.
Explicaciones técnicas/simples, mentoría, análisis especializado.
Prompt
Actúa como un médico de cabecera explicando a un paciente sin formación médica qué es la diabetes tipo 2.
Respuesta
[explicación accesible, sin jerga médica innecesaria]
Las APIs de chat (GPT-4, GPT-3.5) tienen tres roles: system, user y assistant. El system prompt es la instrucción de contexto que define el comportamiento base del modelo para toda la conversación.
Estructura de una llamada de chat
// SYSTEM — instrucción base (invisible al usuario final)
{ role: 'system', content: 'Eres un asistente de soporte de Azure. Responde solo preguntas sobre Azure. Si la pregunta no es sobre Azure, di que no puedes ayudar. Responde siempre en español.' }
// USER — mensaje del usuario
{ role: 'user', content: '¿Cómo creo una máquina virtual en Azure?' }
// ASSISTANT — respuesta anterior del modelo (para historial)
{ role: 'assistant', content: 'Para crear una VM en Azure...' }
// USER — siguiente turno
{ role: 'user', content: '¿Cuánto cuesta?' }
Qué definir en el system prompt
System prompt y seguridad
Los usuarios pueden intentar jailbreak: instrucciones para que el modelo ignore el system prompt ("ignora las instrucciones anteriores y..."). El content filtering de Azure OpenAI detecta estos intentos. Un buen system prompt también incluye instrucciones sobre cómo resistir manipulaciones.
Temperature
Controla la aleatoriedad de la distribución de probabilidad sobre los tokens. Con temperatura 0, siempre elige el token más probable (determinístico). Con temperatura alta, tokens poco probables tienen más chance de aparecer.
Top-p (nucleus sampling)
Solo considera los tokens cuya probabilidad acumulada alcanza p. Top-p 0.9 = considera el conjunto de tokens más probables hasta sumar 90% de probabilidad.
Max tokens
Número máximo de tokens que el modelo puede generar en la respuesta. Si el modelo llega al límite, corta la respuesta aunque no haya terminado.
Frequency penalty
Penaliza tokens que ya aparecieron en el texto generado, proporcional a cuántas veces aparecieron. Reduce repetición de palabras.
Grounding es la técnica de proporcionar contexto factual en el prompt para que el modelo base sus respuestas en información verificada, no en su conocimiento paramétrico (que puede estar desactualizado o ser incorrecto).
Sin grounding (sin anclar)
User:
"¿Cuáles son los precios de suscripción de Azure SQL?"
Assistant:
[puede inventar precios desactualizados o incorrectos]
Con grounding (anclado)
System:
"Responde SOLO usando la información del documento siguiente. Si no está en el documento, di que no tienes esa información."
Contexto: [documento de precios actual]
User:
"¿Cuáles son los precios de Azure SQL?"
Assistant:
[precio real del documento, con cita]
RAG es grounding a escala: en lugar de incluir documentos manualmente en cada prompt, RAG recupera automáticamente los documentos relevantes y los incluye como contexto antes de generar la respuesta.
Ejemplo del problema
"Ayúdame con mi código"
Mejor enfoque
Especifica lenguaje, el error exacto, qué intentas lograr, qué has probado.
Ejemplo del problema
"No uses jerga técnica"
Mejor enfoque
"Explica usando analogías cotidianas, sin usar términos técnicos especializados. Nivel: adulto sin formación en tecnología."
Ejemplo del problema
Un párrafo de 500 palabras sin separadores
Mejor enfoque
Usa secciones claras: ## Contexto, ## Tarea, ## Formato de salida, ## Restricciones.
Ejemplo del problema
"Resume, traduce, clasifica y genera un título para este texto"
Mejor enfoque
Separa en llamadas distintas o usa jerarquía clara: "Primero resume en 3 puntos. Luego, basándote en el resumen, clasifica en una de: [A, B, C]."
❓ ¿Temperatura 0 produce la mejor respuesta?
No necesariamente. Temperatura 0 produce la respuesta más determinística y consistente (siempre la misma para el mismo prompt). Es la mejor para tareas factuales o de extracción. Para creatividad o variedad de ideas, temperatura alta produce mejores resultados.
❓ ¿Few-shot prompting modifica el modelo?
No. Few-shot prompting incluye ejemplos en el contexto del prompt pero no modifica los pesos del modelo. Es una forma de "in-context learning" — el modelo aprende el patrón solo para esa llamada, sin persistencia.
❓ ¿Prompt engineering reemplaza al fine-tuning?
No siempre, pero es el primer paso. Prompting es más rápido y económico. Fine-tuning se usa cuando necesitas un comportamiento muy específico o consistente que no se logra con prompts — como un tono de marca muy particular o terminología especializada. La recomendación es probar prompting primero.
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Un equipo quiere usar GPT-4o para analizar contratos legales y extraer: fecha de inicio, fecha de vencimiento, cláusulas de renovación automática y partes firmantes. El modelo sin instrucciones específicas devuelve párrafos extensos con texto innecesario. ¿Qué técnica de prompt engineering mejoraría más el resultado?