Hasta acá hablamos del prompt como un solo bloque de texto. La realidad es que cuando un programa llama a Claude (o a cualquier LLM moderno), no manda un solo string. manda dos:
SYSTEM: "Eres Echo, quartermaster. Respondes en JSON."
USER: "¿Cuál es el código de bay 4?"El modelo trata estos dos canales distinto.
| Canal | Qué carga | Ejemplos |
|---|---|---|
system | Reglas, rol, formato, comportamiento persistente | "Eres Echo." / "Siempre responde en JSON." / "Nunca menciones X." |
user | El mensaje concreto del turno | La pregunta, los datos a procesar, el input del momento |
Regla de oro: si la instrucción debería aplicar al mensaje 1 Y al mensaje 50 de la misma conversación, va en
system. Si solo aplica al mensaje de ahora, va enuser.
Pones todo en user y "funciona" en ejercicios cortos. Después la cosa real pasa:
user, son texto como cualquier otro y el modelo puede sobrescribirlas. Si viven en system, son mucho más difíciles de romper.Echo ya pasó por esa lección. Mira los dos prompts a la derecha y elegí cuál usaría en producción.