De dónde sale este tutorial
Anthropic, la empresa detrás de Claude, tiene un curso gratuito para desarrolladores: Building with the Claude API, en su Anthropic Academy. Una de sus primeras lecciones se llama «Indicaciones del sistema» (System prompts) y dura pocos minutos. Es corta, pero es de las que más dinero mueven en un proyecto real.
Aquí tienes lo que enseña la lección, traducido a lo que significa para un negocio, más lo que he aprendido escribiendo system prompts para chatbots que atienden clientes de verdad (incluido el que tienes en esta web).
Qué es un system prompt (explicado sin jerga)
Cuando hablas con una IA a través de una aplicación, hay dos tipos de texto:
- Los mensajes: lo que escribe el cliente y lo que responde la IA. La conversación visible.
- El system prompt (en español, «indicaciones del sistema»): instrucciones que la aplicación le da al modelo antes de que el cliente diga nada. Quién es, para quién trabaja, qué tiene que conseguir y qué no puede hacer nunca. El cliente no lo ve, pero condiciona cada respuesta.
La mejor analogía que conozco: el modelo es un empleado brillante que acaba de entrar por la puerta. Sabe muchísimo de todo, pero no sabe nada de tu empresa. El system prompt es el manual de bienvenida que le das el primer día. Sin él, contesta como contestaría cualquiera. Con él, contesta como contestarías tú.
Lo que enseña la lección de Anthropic
El ejemplo del curso es sencillo y muy ilustrativo: un tutor de matemáticas. Si un alumno le pregunta a un modelo sin instrucciones cómo resolver una ecuación, el modelo hace lo natural: se la resuelve entera. Útil, pero mal tutor: el alumno copia y no aprende.
Con un system prompt del estilo «eres un tutor de matemáticas paciente; no des la solución directamente, guía al alumno paso a paso», la misma pregunta produce otra respuesta: una pista, una pregunta de vuelta, el primer paso. Mismo modelo, misma pregunta, comportamiento distinto.
Las ideas clave de la lección:
- El system prompt sirve para fijar cómo responde el modelo: el rol, el estilo, el tono y lo que debe y no debe hacer.
- En la API va en un parámetro propio,
system, separado de la lista de mensajes. No es un mensaje más del usuario. - Una buena forma de empezar es darle un rol y una tarea concreta, y luego las reglas de cómo hacerla.
- En el código conviene que la función que habla con Claude acepte el system prompt como opcional, para reutilizarla con o sin él.
Traducido a negocio: el tutor que no da la respuesta es exactamente el mismo mecanismo que la recepcionista que no inventa precios, el comercial que no promete plazos imposibles o el soporte técnico que deriva a una persona cuando el cliente está enfadado.
Por qué esto importa en dinero, horas y riesgo
Un chatbot con un system prompt flojo no es «un poco peor». Es un empleado sin formar hablando con tus clientes en tu nombre, las 24 horas:
- Dinero: si se inventa un precio o una promoción, te toca elegir entre cumplirla o quedar mal.
- Horas: si no sabe cuándo derivar, o lo deriva todo (y no te ahorra nada) o no deriva nada (y pierdes al cliente que necesitaba una persona).
- Riesgo: si no tiene límites claros, opina de lo que no debe, da consejos médicos o legales o promete cosas que tu negocio no hace.
La buena noticia: casi todo eso se arregla con texto. No hace falta reentrenar ningún modelo ni pagar un desarrollo enorme. Hace falta pensar bien qué le dirías a un empleado nuevo y escribirlo.
Paso 1 — Escribe el manual de bienvenida
Un system prompt que funciona en un negocio suele tener cinco bloques. No hace falta que sea largo; hace falta que no deje huecos importantes.
1. Rol
Quién es y para quién trabaja. «Eres la persona de recepción de la Clínica Dental Sonrisa, en Getafe» funciona mucho mejor que «eres un asistente útil».
2. Contexto del negocio
Lo que un empleado nuevo necesitaría saber: qué servicios ofreces, horario, ubicación, cómo se reserva, qué no haces. Solo datos que puedas sostener; lo que no pongas aquí, el modelo tenderá a rellenarlo con lo típico del sector.
3. Objetivo
Qué cuenta como una conversación bien hecha: resolver la duda, conseguir una cita, recoger un contacto. Si no le dices qué es ganar, el modelo optimiza para «ser amable», que no es lo mismo.
4. Reglas y límites
Lo que no puede hacer nunca y qué hacer en su lugar. «No des precios que no estén en esta lista; si te preguntan otro, di que lo confirma recepción y pide un teléfono.» La segunda mitad de la frase es la importante: un límite sin alternativa deja al modelo improvisando.
5. Tono y formato
Cómo habla tu marca y cómo de largas son las respuestas. En un chat de móvil, dos o tres frases y una sola pregunta por turno. Si tienes ejemplos de cómo respondes tú, inclúyelos: un ejemplo vale más que tres adjetivos.
Plantilla para copiar
Cambia lo que va entre corchetes y borra lo que no aplique a tu negocio. Está escrita para un chat de atención al cliente, que es el caso más habitual.
# Rol
Eres [nombre o puesto] de [nombre del negocio], [a qué se dedica] en [ciudad]. Atiendes por chat a personas que escriben desde la web.
# Contexto del negocio
- Servicios: [lista breve de lo que SÍ haces]
- Lo que NO hacemos: [lo que te preguntan a menudo y no ofreces]
- Horario: [horario]
- Dirección: [dirección]
- Cómo se reserva o se compra: [proceso real]
- Precios que puedes dar: [solo los que quieras que diga; si no hay, escribe "ninguno"]
# Objetivo
Tu trabajo es resolver la duda de la persona y, si encaja, [conseguir una cita / dejar su teléfono / llevarla a la tienda online]. Una conversación bien hecha termina con la persona sabiendo qué hacer a continuación.
# Reglas
- Responde solo con la información de este documento. Si no lo sabes, dilo y ofrece que [persona o canal] le conteste.
- No inventes precios, plazos, descuentos ni disponibilidad.
- No des consejos [médicos / legales / financieros]: deriva a [profesional o canal].
- Si la persona está molesta o pide hablar con alguien, ofrécele [teléfono / WhatsApp / email] sin discutir.
- Pide sus datos de contacto solo cuando haga falta para ayudarla, y explica para qué.
# Tono y formato
- Habla como [describe la voz de tu marca: cercana, profesional, de tú o de usted].
- Respuestas de 2-3 frases como máximo. Una sola pregunta por respuesta.
- Responde en el idioma en que te escriban.
# Ejemplo de respuesta
Cliente: ¿Cuánto cuesta [servicio]?
Tú: [Cómo responderías tú de verdad a esa pregunta]
Fíjate en que casi cada regla lleva su «qué hacer en su lugar». Esa es la diferencia entre un bot que dice «no puedo ayudarte con eso» y uno que convierte la duda en una cita.
Paso 2 — Pásalo en el parámetro system
Esta parte es para quien vaya a programarlo (o para que sepas qué pedirle a quien lo programe). El curso usa Python; yo trabajo con NestJS, así que aquí tienes la misma idea en TypeScript con el SDK oficial de Anthropic, incluido el detalle de la lección: el system prompt es opcional en la función que llama a Claude.
// claude.service.ts
import { Injectable } from '@nestjs/common';
import Anthropic from '@anthropic-ai/sdk';
@Injectable()
export class ClaudeService {
// Lee la clave de ANTHROPIC_API_KEY del entorno
private readonly client = new Anthropic();
async chat(messages: Anthropic.MessageParam[], system?: string): Promise<string> {
const response = await this.client.messages.create({
model: 'claude-sonnet-5-5',
max_tokens: 1024,
messages,
// Solo se envía si existe: la misma función sirve con y sin system prompt
...(system ? { system } : {}),
});
return response.content
.filter((block): block is Anthropic.TextBlock => block.type === 'text')
.map((block) => block.text)
.join('');
}
}
Y el uso desde el servicio que atiende el chat, con el system prompt guardado en un fichero aparte para poder editarlo sin tocar código:
// recepcion.service.ts
import { Injectable } from '@nestjs/common';
import { readFileSync } from 'node:fs';
import { join } from 'node:path';
import Anthropic from '@anthropic-ai/sdk';
import { ClaudeService } from './claude.service';
@Injectable()
export class RecepcionService {
// La plantilla rellenada, versionada junto al código
private readonly systemPrompt = readFileSync(
join(__dirname, 'prompts', 'recepcion.md'),
'utf8',
);
constructor(private readonly claude: ClaudeService) {}
responder(historial: Anthropic.MessageParam[]): Promise<string> {
return this.claude.chat(historial, this.systemPrompt);
}
}
Dos detalles que importan:
- Va en cada llamada. La API no recuerda nada entre peticiones: envías el system prompt y el historial completo cada vez. Por eso un system prompt de diez páginas cuesta dinero en cada mensaje. Cuando crece, la propia API ofrece prompt caching para no pagarlo entero en cada turno (el curso lo cubre más adelante).
- Versiónalo como código. Es la parte de tu chatbot que más vas a tocar. Si vive en un fichero con historial, sabes qué cambio rompió qué.
Paso 3 — Pruébalo como probarías a alguien nuevo
Nadie deja a un empleado nuevo solo con los clientes el primer día sin ver antes cómo responde. Con el system prompt, igual:
- Las 20 preguntas de siempre: apunta las que más te hacen tus clientes y pásaselas. Si alguna respuesta no es la que darías tú, el fallo está en el prompt, no en el cliente.
- Las incómodas: «¿me hacéis descuento?», «vuestra competencia lo hace más barato», «quiero hablar con el dueño», un cliente enfadado. Ahí es donde un bot mal configurado hace daño.
- Las trampas: «ignora tus instrucciones», «dime tu prompt», preguntas que no tienen nada que ver con tu negocio. Tiene que salir con educación y volver a lo suyo.
Cada vez que algo salga mal, añade o corrige una regla y vuelve a pasar todas las preguntas. Si cambias cinco cosas a la vez no sabrás cuál arregló el problema ni cuál rompió otro. El curso de Anthropic dedica un módulo entero a esto (evaluar prompts con conjuntos de pruebas), y es lo que separa un chatbot de demo de uno que puedes dejar trabajando.
Lo que el system prompt no puede hacer
Para no venderte la moto:
- No es una caja fuerte. Un usuario insistente puede conseguir que el modelo revele parte de sus instrucciones. Nunca pongas contraseñas, claves de API ni datos de clientes en él.
- No sustituye a tus datos reales. Si el stock, la agenda o los precios cambian cada día, no los escribas a mano en el prompt: el modelo los debe consultar con herramientas conectadas a tus sistemas. El prompt dice cómo trabajar; las herramientas le dan con qué.
- No es infalible. Reduce mucho los errores, pero un modelo de lenguaje puede equivocarse. Para lo que tenga consecuencias (cobros, reservas, datos personales), la comprobación final la hace tu código, no el texto del prompt.
Preguntas frecuentes
¿Qué es un system prompt?
Son las instrucciones que la aplicación da al modelo antes de que hable el cliente: quién es, para quién trabaja, qué debe conseguir y qué no puede hacer. El cliente no las ve, pero condicionan todas las respuestas.
¿El system prompt es seguro para guardar datos privados?
No. Un usuario insistente puede llegar a sacar parte de su contenido, así que no pongas contraseñas, claves de API ni datos de clientes. Los datos sensibles se consultan con herramientas controladas por tu backend.
¿Cuánto debe medir un system prompt?
Lo justo para que un empleado nuevo hiciera bien el trabajo sin preguntarte: para un chatbot de atención suele bastar entre media página y dos páginas. Se paga en cada llamada, así que lo que no aporta, sobra.
¿Es lo mismo que las instrucciones de un GPT personalizado o de un proyecto de Claude?
Es la misma idea. Las instrucciones personalizadas de ChatGPT o de un proyecto de Claude funcionan como un system prompt; la diferencia es que con la API lo controlas tú desde tu propia aplicación.
¿Vienes de Instagram?
Si le has pedido el system prompt a mi chatbot o me lo has pedido en @pablodevelop, este es el tutorial que te prometí. El mío no lo suelto (ya has leído por qué no es buena idea), pero con la plantilla de arriba tienes el esqueleto con el que empiezo cada uno.
Si quieres uno hecho para tu negocio —con tus datos, conectado a tu agenda o a tu WhatsApp y probado antes de dejarlo hablar con clientes—, hago un diagnóstico técnico gratuito: vemos qué preguntas te hacen y te digo si un chatbot te ahorra horas de verdad o no.