Prompt engineering patterns en producción: guía técnica con ejemplos chilenos
Patrones probados de prompt engineering para agentes IA en producción: system prompt, chain of thought, few-shot, role prompting, structured output, eval. Con ejemplos chilenos reales.
Prompt engineering en 2026 ya no es "agrega por favor y la IA te entiende mejor". Es disciplina con patrones probados, eval suite que valida, observabilidad que detecta degradación y versionado que permite mejora continua. Este satélite entrega los 7 patrones que aplicamos en Cognitiva con agentes en producción y ejemplos concretos para casos chilenos típicos.
Pattern 1: System prompt estructurado
El system prompt no debe ser un párrafo libre. Estructurarlo en bloques mejora obediencia y permite versionado.
# IDENTIDAD
Eres el asistente virtual de Acme Chile, empresa de retail con 15 tiendas en Santiago.
# OBJETIVO
Atender consultas de clientes sobre productos, stock, ubicación de tiendas y horarios.
Calificar leads para el equipo comercial cuando detectes intención de compra mayorista.
# REGLAS NO-NEGOCIABLES
- Responde solo en español de Chile, registro formal-ejecutivo.
- NO uses emojis ni chilenismos marcados (po, cachái, fome).
- Si no sabes algo, dilo. NUNCA inventes información de productos, precios o stock.
- Si el cliente pide hablar con humano, deriva inmediatamente con todo el contexto.
# HERRAMIENTAS DISPONIBLES
- consultarStock(sku): retorna stock actual por tienda.
- consultarPrecio(sku): retorna precio vigente.
- crearLead(datos): registra cliente como lead comercial.
- derivarHumano(motivo): escala al equipo de atención.
# FORMATO DE RESPUESTA
- Máximo 3 párrafos cortos.
- Si entregas opciones, máximo 5 ítems.
- Si necesitas información, una pregunta a la vez.Bloques claros: identidad, objetivo, reglas, herramientas, formato. Cada uno editable independientemente. Versionar como código.
Pattern 2: Few-shot prompting con ejemplos del dominio
Few-shot mejora consistencia y formato cuando hay variación en el output esperado. Ejemplos del dominio real del cliente, no genéricos.
Ejemplos de respuestas esperadas:
INPUT: ¿Tienen zapatillas Nike Air Max en tamaño 42?
OUTPUT: Sí, las Nike Air Max 42 están disponibles en 3 tiendas: Costanera Center (5 unidades), Parque Arauco (2 unidades), Mall Plaza Vespucio (8 unidades). El precio es $89.990. ¿Te reservo una en alguna?
INPUT: Quiero comprar 50 polerones para mi empresa
OUTPUT: Para compras mayoristas te derivo con el equipo comercial. Necesito un mínimo de información: nombre, empresa, teléfono de contacto y modelo/talla aproximado. ¿Empezamos?
INPUT: dónde queda la tienda más cercana al estadio nacional
OUTPUT: La tienda más cercana al Estadio Nacional es Mall Plaza Vespucio (Avenida Vicuña Mackenna 7110), a aproximadamente 8 minutos en auto. Horario hoy: 10:00 a 22:00.3-5 ejemplos suelen ser suficiente. Más ejemplos consumen tokens sin mejora marginal.
Pattern 3: Chain of Thought (CoT) cuando aplica
CoT (pensar paso a paso antes de responder) ayuda en tareas con múltiples decisiones o razonamiento complejo. NO en respuestas simples de FAQ.
Para tareas complejas, razona antes de responder. Estructura:
<razonamiento>
1. Qué pide el cliente literalmente.
2. Qué información necesito (en mi base o vía tools).
3. Qué tool invoco si la necesito.
4. Cómo presento la respuesta al cliente.
</razonamiento>
<respuesta>
[respuesta final al cliente]
</respuesta>
El cliente ve solo lo que está dentro de <respuesta>.Para Claude, etiquetas XML funcionan especialmente bien (entrenado con su uso). Para otros modelos, ajustar al formato preferido por el modelo.
Pattern 4: Structured output con Zod
Cuando necesitas output como objeto tipado (no texto libre), structured output con schema Zod elimina parseo manual y errores.
import { generateObject } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
import { z } from 'zod';
const schema = z.object({
intencion: z.enum(['consulta_producto', 'mayorista', 'queja', 'otro']),
urgencia: z.enum(['baja', 'media', 'alta']),
resumen: z.string().max(200),
derivar_humano: z.boolean(),
motivo_derivacion: z.string().optional(),
});
const { object } = await generateObject({
model: anthropic('claude-sonnet-4-6'),
schema,
prompt: `Clasifica el siguiente mensaje del cliente:
"${mensajeCliente}"`,
});
// object está tipado y validado
console.log(object.intencion);Vercel AI SDK fuerza la respuesta a cumplir el schema. Si el modelo entrega algo que no cumple, reintenta automáticamente.
Pattern 5: Role prompting selectivo
Asignar rol específico mejora consistencia: "Eres un abogado especializado en derecho laboral chileno" funciona mejor que "Eres un asistente".
Cuidado con sobre-rolear: "Eres el mejor abogado del mundo con 50 años de experiencia" no mejora la calidad y agrega tokens. Rol claro y proporcional al caso.
Para casos sensibles (legal, médico, financiero), agregar disclaimer en el system prompt: "Tu rol es informativo. NO entregues consejo legal/médico/financiero personalizado. Para casos específicos, recomienda consultar profesional."
Pattern 6: JSON mode + tool calling validado
Cuando el agente decide invocar tools, los argumentos deben validarse antes de ejecutar. Vercel AI SDK + Zod hacen esto automáticamente:
import { generateText, tool } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
import { z } from 'zod';
const result = await generateText({
model: anthropic('claude-sonnet-4-6'),
system: '...',
messages,
tools: {
consultarStock: tool({
description: 'Consulta stock de un SKU en todas las tiendas.',
parameters: z.object({
sku: z.string().regex(/^[A-Z]{2}-[0-9]{6}$/, 'Formato SKU inválido'),
}),
execute: async ({ sku }) => {
return await db.query('SELECT * FROM stock WHERE sku = $1', [sku]);
},
}),
},
});El regex valida que el SKU tenga formato correcto antes de ejecutar la query. Si el modelo inventa un SKU mal formado, el SDK rechaza la tool call y le da feedback al modelo para que corrija.
Pattern 7: Versionado + eval del prompt
Los prompts en producción son código. Versionarlos en git, mantener changelog, validar cada cambio con eval suite antes de promover.
// src/prompts/atencion-cliente.ts
export const ATENCION_CLIENTE_V3_2 = {
version: '3.2',
lastModified: '2026-06-15',
changeNotes: 'Mejoras en derivación a humano cuando hay queja',
system: `...`,
examples: [...],
};Antes de cambiar el prompt en producción:
- Crear nueva versión (V3.3) en git.
- Correr eval suite contra V3.2 y V3.3 para comparar.
- Si V3.3 supera a V3.2, promover. Si no, revisar.
- Documentar el cambio en changeNotes.
- Mantener V3.2 disponible por rollback inmediato.
Anti-patterns que duelen en producción
- "Por favor sé útil": cero valor, agrega tokens.
- "NUNCA hagas X" sin razón clara: el modelo no entiende y a veces se rompe.
- Prompt de 5000 palabras: el modelo ignora partes. Prompts > 1500 tokens generan inconsistencia.
- Cambiar prompt en producción sin eval: regresiones invisibles hasta el cliente.
- Sin observabilidad: si no logueas el prompt usado y el output, no puedes diagnosticar.
- Sin versionado: no puedes rollback ni comparar versiones.
Preguntas frecuentes
Da el siguiente paso
Hablemos
Cuéntanos sobre tu negocio. Respondemos en 24 horas.
Otros canales
Escríbenos por WhatsApp o agenda una llamada de 30 minutos.