O prompt de sistema (system prompt) é um conjunto de instruções que o modelo de IA recebe antes de a conversa começar, e ele vale para todas as mensagens seguintes. Ele define o papel do modelo, o público, as regras e o formato padrão das respostas, para que você não precise repetir isso em cada mensagem. O usuário escreve os prompts; o prompt de sistema molda como o modelo responde a todos eles.
Todo app de chat já usa um. Quando você abre o ChatGPT, o Claude ou o Gemini, o modelo já tem instruções da empresa por trás dele, que a janela do chat não mostra. Quando desenvolvedores criam um app em cima de um modelo, é no prompt de sistema que eles transformam um modelo genérico em um tutor de programação, um assistente de suporte ou um redator de mensagens de commit.
O que um prompt de sistema faz
A entrada de um modelo em um chat tem uma estrutura: primeiro o prompt de sistema, depois a conversa, com mensagens do usuário e do assistente se alternando. O prompt de sistema fica acima de toda a troca, então ele está à frente do modelo em cada resposta, por mais longa que a conversa fique.
Essa posição faz dele o lugar certo para tudo o que deve valer sempre: com quem o modelo está falando, o que ele pode e não pode fazer, como uma resposta deve ser por padrão. Os modelos também são treinados para dar a ele mais peso do que a uma mensagem do usuário quando os dois entram em conflito. Isso é uma tendência, não uma trava. Um usuário insistente às vezes consegue convencer o modelo a deixar o prompt de sistema de lado, e é por isso que ele nunca deve ser a sua única proteção.
Prompt de sistema e mensagem do usuário
| Prompt de sistema | Mensagem do usuário | |
|---|---|---|
| Quem escreve | O desenvolvedor, ou você nas configurações do app | Você, na caixa do chat |
| Alcance | A conversa inteira | Um pedido |
| Conteúdo típico | Papel, público, regras, fatos, formato padrão | A tarefa e o material para ela |
| Quando muda | Raramente | A cada mensagem |
| Peso em um conflito | Normalmente maior | Normalmente menor |
Um teste útil: se uma frase valeria para todas as mensagens do chat, ela pertence ao prompt de sistema. Se ela é sobre este pedido específico, pertence à mensagem do usuário. "Responda em menos de 100 palavras" pode ir em qualquer um dos dois; "resuma o e-mail abaixo" é sempre uma mensagem do usuário.
Onde definir um prompt de sistema
Na API, o prompt de sistema é uma entrada separada. Com a biblioteca Python da OpenAI, ele é a primeira mensagem da lista, com o papel system. A documentação da OpenAI também usa o nome developer message para o mesmo tipo de instrução nos modelos mais novos.
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)
Com a biblioteca Python da Anthropic, ele é um parâmetro system de nível superior, e a lista messages guarda só a conversa:
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)
A API do Gemini, do Google, chama isso de system instruction. O nome muda, a ideia é a mesma.
Nos apps de chat, você não tem acesso ao campo de sistema bruto, porque o app já tem o dele. O que você tem é um lugar para acrescentar instruções permanentes que o app inclui por você. No ChatGPT, são as instruções personalizadas, as instruções de projeto e as instruções de um GPT personalizado. No Claude, são as instruções de projeto e as preferências do seu perfil. No Gemini, são as instruções de um Gem. Como exatamente cada app junta o seu texto com as instruções dele não está totalmente documentado, mas na prática elas se comportam como um prompt de sistema que você divide com o app.
O que colocar em um prompt de sistema
- Papel e público. "Você é um tutor para alunos no primeiro mês de programação" define o vocabulário e o nível de cada resposta. Prompt de papel mostra o que um papel muda e o que não muda.
- Regras que valem em toda mensagem. O que o modelo deve sempre ou nunca fazer: dar dicas em vez de soluções completas, responder só a perguntas sobre o produto, responder no idioma do usuário.
- O que fazer quando não souber. "Se a resposta não estiver nos fatos abaixo, diga que não sabe" faz mais contra respostas inventadas do que um genérico "seja preciso".
- Fatos de que o modelo precisa. Detalhes do produto, políticas, a data atual, o plano do usuário. Um modelo não consegue responder perguntas sobre o seu app a partir dos dados de treinamento.
- Formato padrão. Tamanho, estrutura, se deve usar blocos de código. Se um programa lê a saída, dê a forma exata; veja saída estruturada.
O que deixar de fora
Segredos. Um prompt de sistema não é privado. Os usuários podem pedir ao modelo que repita as instruções ou enganá-lo para isso, e os modelos não se recusam de forma confiável. Chaves de API, senhas e qualquer coisa que você não gostaria de ver publicada não têm lugar ali. Trate o prompt de sistema como um texto que o usuário pode ler um dia, e veja prompt injection para entender como as instruções são sobrescritas.
A tarefa de uma única mensagem. Se o prompt de sistema diz "resuma este artigo", a segunda mensagem do chat não tem para onde ir.
Pilhas de regras sobrepostas. Vinte regras escritas em momentos diferentes tendem a se contradizer, e o modelo precisa adivinhar qual vence. Agrupe as regras, remova as duplicadas e diga a prioridade quando duas puderem colidir.
Enchimento. O prompt de sistema é enviado de novo em cada requisição e conta para a janela de contexto do modelo, então cada parágrafo desnecessário é pago a cada mensagem.
Exemplos de prompt de sistema
O primeiro exemplo é um assistente de produto. O prompt de sistema define um escopo, um tamanho e uma regra para perguntas que ele não sabe responder, e traz os fatos de que o modelo precisa. Alterne entre as abas para mandar mensagens diferentes: o mesmo prompt de sistema molda as três respostas.
Abra a compra nas suas transações e toque em Dividir. Depois escolha as duas categorias, Mercado e Casa, e informe o valor que pertence a cada uma.
O segundo exemplo é o tipo de texto que você colocaria nas instruções personalizadas ou nas instruções de projeto de um app de chat. Ele descreve você e como você quer as respostas, então toda conversa começa a partir disso.
import { readFile } from "node:fs/promises";
const config = JSON.parse(await readFile("config.json", "utf8"));
Passar uma codificação faz o readFile retornar uma string, que o JSON.parse transforma em objeto. O await de nível superior só funciona em um módulo ES ("type": "module" no package.json ou um arquivo .mts); caso contrário, coloque a chamada dentro de uma função async. Acrescente um try/catch se o arquivo puder não existir ou estar malformado.
Sem o prompt de sistema, uma pergunta tão curta quanto "como leio um arquivo JSON?" deixa o modelo adivinhar a linguagem, e a resposta muitas vezes vem em Python ou em JavaScript puro, com um parágrafo sobre o que é JSON. Com ele, a resposta escolhe a linguagem e o runtime certos, pula o básico e segue a forma pedida.
A mesma estrutura funciona para qualquer assistente que você configurar: a quem ele atende, as regras, o que fazer quando não souber, os fatos de que precisa e o formato da resposta. Escreva uma vez, teste com uma pergunta normal, uma fora do assunto e uma que tenta furar uma regra, e ajuste até que as três respostas sejam as que você quer.
Perguntas frequentes
O que é um prompt de sistema?
Prompt de sistema (system prompt) é um conjunto de instruções dado a um modelo de IA antes de a conversa começar, e ele vale para todas as mensagens seguintes. Normalmente define o papel, o público, as regras e o formato padrão da resposta. Na API ele é um campo ou mensagem de sistema separado; nos apps de chat, as instruções personalizadas e as instruções de projeto cumprem o mesmo papel.
Qual é a diferença entre system prompt e user prompt?
O prompt de sistema guarda instruções permanentes para a conversa inteira e costuma ser escrito pelo desenvolvedor ou definido uma vez nas configurações. O prompt do usuário é uma única mensagem que pede uma coisa. Quando os dois entram em conflito, os modelos são treinados para dar mais peso ao prompt de sistema, mas isso é uma tendência, não uma garantia.
Dá para definir um system prompt no ChatGPT, no Claude ou no Gemini?
Não o campo de sistema bruto, mas algo bem próximo. O ChatGPT tem instruções personalizadas, instruções de projeto e instruções para GPTs personalizados. O Claude tem instruções de projeto e preferências de perfil. O Gemini tem instruções para Gems. O app combina o que você escreve ali com as próprias instruções de sistema e aplica isso às suas conversas.
Os usuários conseguem ver ou extrair um system prompt?
Muitas vezes, sim. Um usuário pode pedir ao modelo que repita as instruções ou enganá-lo para que faça isso, e os modelos não as mantêm em segredo de forma confiável. Nunca coloque senhas, chaves de API ou detalhes confidenciais do negócio em um prompt de sistema, e não conte com ele como barreira de segurança.
Qual deve ser o tamanho de um prompt de sistema?
O suficiente para cobrir o que vale para todas as mensagens, e nada além disso. Um pessoal pode ter três ou quatro frases. O prompt de sistema de um produto muitas vezes chega a uma página, com o papel, as regras, os fatos e o formato da saída. Cada palavra é enviada em cada requisição, então ele também custa tokens toda vez.