Un prompt de sistema (system prompt) es un conjunto de instrucciones que recibe un modelo de IA antes de que empiece la conversación, y se aplica a todos los mensajes que siguen. Define el rol del modelo, su público, sus reglas y su formato de respuesta por defecto, para que no tengas que repetirlos en cada mensaje. El usuario escribe los prompts; el prompt de sistema determina cómo el modelo responde a todos ellos.
Todas las apps de chat ya usan uno. Cuando abres ChatGPT, Claude o Gemini, el modelo ya tiene instrucciones de la empresa que está detrás, y la ventana del chat no te las muestra. Cuando los desarrolladores construyen una app sobre un modelo, el prompt de sistema es donde convierten un modelo general en un tutor de programación, un asistente de soporte o un redactor de mensajes de commit.
Qué hace un prompt de sistema
La entrada de un modelo en un chat tiene una estructura: primero el prompt de sistema y después la conversación, con mensajes del usuario y del asistente alternados. El prompt de sistema está por encima de todo el intercambio, así que el modelo lo tiene delante en cada respuesta, por largo que sea el chat.
Esa posición lo convierte en el lugar adecuado para todo lo que debe cumplirse siempre: a quién le habla el modelo, qué puede y qué no puede hacer, cómo debe ser una respuesta por defecto. Además, los modelos están entrenados para darle más peso que a un mensaje del usuario cuando los dos chocan. Es una tendencia, no un candado. Un usuario insistente a veces puede convencer al modelo de que ignore su prompt de sistema, y por eso nunca debe ser tu única protección.
Prompt de sistema frente a mensaje del usuario
| Prompt de sistema | Mensaje del usuario | |
|---|---|---|
| Quién lo escribe | El desarrollador, o tú en los ajustes de la app | Tú, en el cuadro del chat |
| Alcance | Toda la conversación | Una petición |
| Contenido típico | Rol, público, reglas, datos, formato por defecto | La tarea y el material para ella |
| Cuándo cambia | Rara vez | En cada turno |
| Peso en un conflicto | Normalmente mayor | Normalmente menor |
Una prueba útil: si una frase sería cierta para todos los mensajes del chat, va en el prompt de sistema. Si trata de esta petición en concreto, va en el mensaje del usuario. "Responde en menos de 100 palabras" puede ir en cualquiera de los dos; "resume el correo de abajo" siempre es un mensaje del usuario.
Dónde definir un prompt de sistema
En la API, el prompt de sistema es una entrada aparte. Con la biblioteca de Python de OpenAI es el primer mensaje de la lista, con el rol system. La documentación de OpenAI también usa el nombre developer message para el mismo tipo de instrucción en los modelos más nuevos.
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": "You are a patient Python tutor. Give hints, not full solutions."},
{"role": "user", "content": "Why does my loop stop at 9?"},
],
)
print(response.choices[0].message.content)
Con la biblioteca de Python de Anthropic es un parámetro system de primer nivel, y la lista messages contiene solo la conversación:
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
message = client.messages.create(
model=MODEL,
max_tokens=500,
system="You are a patient Python tutor. Give hints, not full solutions.",
messages=[{"role": "user", "content": "Why does my loop stop at 9?"}],
)
print(message.content[0].text)
La API de Gemini de Google lo llama system instruction (instrucción de sistema). Cambia el nombre, la idea es la misma.
En las apps de chat no tienes acceso al campo de sistema en bruto, porque la app ya tiene el suyo. Lo que tienes es un lugar para añadir instrucciones permanentes que la app incluye por ti. En ChatGPT son las instrucciones personalizadas, las instrucciones de proyecto y las instrucciones de un GPT personalizado. En Claude son las instrucciones de proyecto y las preferencias de tu perfil. En Gemini son las instrucciones de una Gem. Cómo combina cada app tu texto con sus propias instrucciones no está documentado del todo, pero en la práctica se comportan como un prompt de sistema que compartes con la app.
Qué poner en un prompt de sistema
- Rol y público. "Eres un tutor para estudiantes que llevan su primer mes programando" fija el vocabulario y el nivel de todas las respuestas. Prompting de rol explica qué cambia un rol y qué no.
- Reglas que se cumplen en cada turno. Lo que el modelo debe hacer siempre o nunca: dar pistas en lugar de soluciones completas, responder solo preguntas sobre el producto, contestar en el idioma del usuario.
- Qué hacer ante la duda. "Si la respuesta no está en los datos de abajo, di que no lo sabes" hace más contra las respuestas inventadas que un genérico "sé preciso".
- Los datos que necesita el modelo. Detalles del producto, políticas, la fecha actual, el plan del usuario. Un modelo no puede responder preguntas sobre tu app a partir de sus datos de entrenamiento.
- Formato por defecto. Extensión, estructura, si usar bloques de código. Si un programa lee la salida, da la forma exacta; consulta salida estructurada.
Qué dejar fuera
Secretos. Un prompt de sistema no es privado. Los usuarios pueden pedirle a un modelo que repita sus instrucciones o engañarlo para que lo haga, y los modelos no se niegan de forma fiable. Las claves de API, las contraseñas y todo lo que no quieras ver publicado no van ahí. Trata el prompt de sistema como un texto que el usuario podría leer algún día, y consulta inyección de prompts para ver cómo se anulan las instrucciones.
La tarea de un solo mensaje. Si el prompt de sistema dice "resume este artículo", el segundo mensaje del chat no tiene adónde ir.
Montones de reglas que se solapan. Veinte reglas escritas en momentos distintos tienden a contradecirse, y el modelo tiene que adivinar cuál gana. Agrupa las reglas, quita duplicados y fija prioridades cuando dos puedan chocar.
Relleno. El prompt de sistema se vuelve a enviar con cada petición y cuenta contra la ventana de contexto del modelo, así que cada párrafo innecesario se paga en cada turno.
Ejemplos de prompts de sistema
El primer ejemplo es un asistente de producto. El prompt de sistema fija un alcance, una extensión y una regla para las preguntas que no puede responder, y lleva los datos que necesita el modelo. Cambia de pestaña para enviarle mensajes distintos: el mismo prompt de sistema determina las tres respuestas.
Abre la compra en tus movimientos y toca Dividir. Luego elige las dos categorías, Supermercado y Hogar, e introduce el importe que corresponde a cada una.
El segundo ejemplo es el tipo de texto que podrías poner en las instrucciones personalizadas o de proyecto de una app de chat. Te describe a ti y cómo quieres las respuestas, así que cada chat empieza a partir de ahí.
import { readFile } from "node:fs/promises";
const config = JSON.parse(await readFile("config.json", "utf8"));
Pasar una codificación hace que readFile devuelva una cadena, que JSON.parse convierte en un objeto. El await de nivel superior solo funciona en un módulo ES ("type": "module" en package.json o un archivo .mts); si no, envuelve la llamada en una función async. Añade un try/catch si el archivo puede faltar o estar mal formado.
Sin el prompt de sistema, una pregunta tan corta como "¿cómo leo un archivo JSON?" deja al modelo adivinar el lenguaje, y la respuesta suele llegar en Python o en JavaScript sin más, con un párrafo sobre qué es JSON. Con él, la respuesta elige el lenguaje y el entorno correctos, se salta lo básico y sigue la forma pedida.
La misma estructura sirve para cualquier asistente que configures: a quién sirve, las reglas, qué hacer ante la duda, los datos que necesita y el formato de respuesta. Escríbelo una vez, pruébalo con una pregunta normal, una fuera de tema y una que intente romper una regla, y ajústalo hasta que las tres respuestas sean las que quieres.
Preguntas frecuentes
¿Qué es un prompt de sistema?
Un prompt de sistema es un conjunto de instrucciones que recibe un modelo de IA antes de que empiece la conversación, y se aplica a todos los mensajes que siguen. Suele definir el rol, el público, las reglas y el formato de respuesta por defecto. En la API es un campo o mensaje de sistema aparte; en las apps de chat, las instrucciones personalizadas y las instrucciones de proyecto cumplen la misma función.
¿Qué diferencia hay entre un prompt de sistema y un prompt de usuario?
El prompt de sistema contiene instrucciones permanentes para toda la conversación y normalmente lo escribe el desarrollador o se define una vez en los ajustes. El prompt de usuario es un solo mensaje que pide una cosa. Cuando los dos chocan, los modelos están entrenados para darle más peso al prompt de sistema, aunque es una tendencia y no una garantía.
¿Puedo definir un prompt de sistema en ChatGPT, Claude o Gemini?
No el campo de sistema en bruto, pero sí algo muy parecido. ChatGPT tiene instrucciones personalizadas, instrucciones de proyecto e instrucciones para GPT personalizados. Claude tiene instrucciones de proyecto y preferencias de perfil. Gemini tiene instrucciones para Gems. La app combina lo que escribes ahí con sus propias instrucciones de sistema y lo aplica a tus chats.
¿Los usuarios pueden ver o extraer un prompt de sistema?
A menudo, sí. Un usuario puede pedirle al modelo que repita sus instrucciones o engañarlo para que lo haga, y los modelos no las mantienen en secreto de forma fiable. Nunca pongas contraseñas, claves de API ni datos confidenciales del negocio en un prompt de sistema, y no lo uses como barrera de seguridad.
¿Qué tan largo debe ser un prompt de sistema?
Lo suficiente para cubrir lo que se aplica a todos los mensajes y no más. Uno personal puede tener tres o cuatro frases. Un prompt de sistema para un producto suele ocupar una página, con el rol, las reglas, los datos y el formato de salida. Cada palabra se envía con cada petición, así que también cuesta tokens cada vez.