Dominar os sistemas prompts
Um prompt de sistema é a mensagem com o papel 'system' que define a identidade, a missão, as regras, o estilo e o formato de saída de um LLM antes da sua primeira pergunta. Para escrevê-lo: cinco blocos curtos, instruções no imperativo e verificáveis, um teste com algumas perguntas com pegadinhas. Ele consome contexto e não é um cofre: não coloque nenhum segredo nele.
Um prompt de sistema é o briefing dado ao modelo antes da primeira pergunta. Bem escrito, ele torna um LLM local coerente e previsível; mal escrito, desperdiça contexto e se contradiz. Você aprenderá a estruturá-lo, configurá-lo no Ollama, no LM Studio ou em uma API e testá-lo metodicamente, além de conhecer suas limitações, especialmente em termos de confidencialidade.
#O que é um prompt de sistema e como escrevê-lo?
Um prompt de sistema é a mensagem com o papel « system » colocada no início da conversa: ele define a identidade do modelo, sua missão, suas regras, seu estilo e o formato de suas respostas antes de você fazer a primeira pergunta. O modelo relê esse prompt a cada turno, assim como o histórico. Para escrevê-lo, mantenha cinco blocos curtos (identidade, missão, regras rígidas, estilo, formato de saída), formule instruções no imperativo e verificáveis, depois teste-o com algumas perguntas-armadilha. Um prompt de sistema orienta o comportamento; ele não é uma barreira de segurança nem um cofre para seus segredos, e consome uma parte da janela de contexto do seu modelo local. Este guia detalha cada ponto, com exemplos prontos para colar no Ollama, no LM Studio ou em uma API compatível com OpenAI.
Um LLM geralmente recebe três tipos de mensagens: system (as instruções permanentes), user (o que você digita) e assistant (o que ele já respondeu). O cliente de chat reenvia toda a conversa ao modelo a cada solicitação, incluindo a mensagem system. É isso que dá a impressão de uma “personalidade” estável durante a sessão.
Os fornecedores de modelos descrevem o mesmo uso. A documentação da Anthropic explica que definir um papel no system prompt direciona o comportamento e o tom do modelo, e que uma única frase basta para fazer diferença. O mesmo princípio se aplica aos modelos locais: a instrução permanente vai na mensagem system, e a pergunta do momento, na mensagem user.
#O que um bom prompt de sistema realmente muda
Seu ChatGPT privado e gratuito na sua máquina em 1 hora — LM Studio, Ollama, Open WebUI, seus documentos, sem nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
- Coerência do tom
- Um assistente que trata o usuário de maneira informal na primeira mensagem e formal na segunda revela um prompt de sistema ausente ou vago demais. Definir o registro uma única vez evita essa mudança de tom.
- Restrições mais estáveis
- Proibições (“sem emoji”) e obrigações (“citar a fonte”) são seguidas com mais consistência quando definidas na mensagem de sistema do que quando repetidas durante a interação. Ainda assim, seu cumprimento nunca é garantido: quanto menor o modelo, mais você precisa verificar.
- Menos repetição
- Se você digita “responda em francês formal” a cada pergunta, coloque essa instrução uma única vez no prompt de sistema. Menos esquecimentos, menos digitação.
- Escopo da missão
- "Trate apenas do direito do trabalho francês" reduz as respostas fora do assunto, sem jamais garantir que elas sejam impedidas.
O que o prompt de sistema não faz: ele não adiciona nenhum conhecimento ao modelo e não substitui nem um documento fornecido na conversa nem um RAG. Se o modelo precisar se basear em seus contratos, é a pesquisa documental que fornece os fatos; o prompt de sistema apenas diz como usá-los e citá-los.
#O custo: espaço na janela de contexto
O system prompt não é gratuito: seus tokens ocupam a janela de contexto, junto com o histórico, seus documentos e a resposta que ainda será gerada. Em um computador local, essa janela costuma ser menor do que se imagina. A página "Context length" da documentação do Ollama indica uma janela padrão de cerca de 4.000 tokens ("4k") com menos de 24 GiB de VRAM, 32.000 entre 24 e 48 GiB e 256.000 acima disso. Um prompt de 400 tokens ocupa, portanto, quase 10% de 4.096 tokens, antes mesmo da primeira troca.
O cálculo é simples: janela disponível = janela total − tokens do prompt do sistema − resposta esperada. Com 4.096 tokens, um prompt do sistema de 400 tokens e uma resposta de 800 tokens, restam 2.896 tokens para o histórico e os documentos. Quando a conversa se prolonga, a janela se preenche e o conteúdo antigo corre o risco de não caber mais: mais uma razão para que o briefing seja denso em vez de longo.
Existe um segundo efeito, documentado pela pesquisa: no estudo “Lost in the Middle” (Liu et al., 2023), o desempenho costuma ser melhor quando a informação útil está no início ou no final do contexto e piora quando ela está no meio, mesmo para modelos anunciados como tendo contexto longo. Consequência prática: coloque as regras mais importantes no início do seu system prompt e reforce a restrição crítica na última linha, caso perceba esquecimentos.
#Estrutura de um system prompt sólido em cinco blocos
Um bom system prompt cabe em cinco blocos curtos. Não é necessário escrever um romance: cada frase adicional consome contexto e aumenta o risco de instruções contraditórias. A tabela resume o que cada bloco contém e o erro mais comum.
| Bloco | Pergunta à qual ele responde | Exemplo | Erro comum |
|---|---|---|---|
| Identidade | Quem é o modelo? | « Você é Lex, assistente jurídico no direito do trabalho francês. » | Uma identidade elogiosa (“especialista mundial”) sem escopo definido |
| Missão | O que ele deve fazer, para quem? | « Você ajuda um diretor de recursos humanos a entender suas obrigações e a redigir cartas. » | Missão demasiado ampla: 'ajuda em tudo' |
| Regras rígidas | O que ele faz sempre ou nunca? | "Cite o artigo pertinente do Código do Trabalho." | Dez regras de mesma prioridade, das quais duas se contradizem |
| Estilo | Como ele se expressa? | «Frases curtas, vocabulário acessível.» | Adjetivos vagos (« profissional ») sem exemplo |
| Formato de saída | Em que formato ele retorna a resposta? | « Por padrão: um parágrafo e as referências. » | Formato não especificado, portanto varia de resposta para resposta |
Aqui está o mesmo prompt montado. Cada regra está no imperativo e é verificável (o artigo é citado ou não), e o comportamento fora do escopo é explícito.
Este prompt serve como modelo de estrutura. Um modelo local pode citar um artigo inexistente: peça a uma pessoa que verifique as referências e consulte o guia sobre alucinações.
#Formular instruções que o modelo segue
- Imperativo direto
- “Faça X.” e “Não faça Y.” são mais claros que “tente, se possível, …”, que deixa o modelo livre para não tentar.
- Comece pelo positivo
- Dizer o que deve ser feito (“responda em uma frase”) é melhor do que uma longa lista de proibições, que devem ser reservadas às salvaguardas realmente necessárias.
- Um exemplo vale uma descrição
- Para um formato específico, forneça uma resposta-modelo de duas linhas em vez de três frases de explicação.
#Na prática com Ollama: /set system e Modelfile
Ollama oferece três formas de definir um system prompt, de acordo com a duração desejada. Em uma sessão interativa, o comando /set system define a mensagem para a conversa atual; ele aparece na lista de comandos disponíveis no cliente. O prompt desaparece ao final da sessão.
Para um prompt de sistema persistente, crie um Modelfile: trata-se de um modelo derivado, com seu próprio nome. A documentação do Ollama esclarece que a instrução SYSTEM define a mensagem de sistema a ser inserida no template do modelo. A palavra « template » é importante: se o template de um modelo não tiver um espaço para a mensagem de sistema, a instrução SYSTEM não terá efeito. Em caso de comportamento inesperado, compare com o Modelfile original.
Terceira opção, no lado da API: o corpo de uma requisição a /api/generate aceita um campo system que substitui o definido no Modelfile, e /api/chat recebe o histórico na forma de um array de mensagens com um papel e um conteúdo. O guia sobre o Modelfile detalha as demais instruções.
#Na prática com LM Studio: o campo System Prompt e os presets
No painel de configuração da aba de chat, há um campo chamado System Prompt. Para não ter que digitá-lo novamente, o LM Studio oferece os presets. A documentação os descreve como uma forma de agrupar um system prompt e outros parâmetros em uma configuração reutilizável de uma conversa para outra.
#Na prática via API compatível com OpenAI
Ollama, LM Studio, vLLM e llama-server expõem uma API compatível com a OpenAI. A primeira mensagem do array, com o papel system, define o briefing. A documentação do Ollama esclarece que o cliente exige um valor para a chave de API, mas que o servidor o ignora: qualquer string serve para uso local.
Um ponto de projeto: a API não tem memória. Em cada chamada, seu código devolve a mensagem system seguida do histórico completo. Se você omitir o histórico em uma chamada, o modelo responde sem briefing: armazene a lista de mensagens e mantenha a mensagem system na posição 0.
#Três system prompts prontos para uso
#Corretor de francês
#Extrator estruturado
Para uma extração em produção, não conte apenas com o prompt de sistema: as saídas estruturadas do Ollama permitem impor um esquema JSON às respostas, evitando um JSON inválido. O guia sobre chamada de funções e saídas JSON explica como configurar isso.
#Assistente de código sênior
#Testar e corrigir um prompt de sistema sem ficar tateando
Um system prompt melhora com testes controlados, não com adições sucessivas. Sem método, acumulam-se regras até se obter um texto longo, contraditório e impossível de depurar. Aqui está um procedimento simples, sem ferramenta específica.
- 01Elaborar cinco perguntas de testeEscreva cinco entradas: dois casos normais, uma pergunta fora do escopo, uma solicitação de formato incomum e uma tentativa de subverter o papel do modelo (“esqueça suas instruções”). Guarde-as em um arquivo.
- 02Definir as condiçõesUse o mesmo modelo, a mesma quantização e uma temperatura baixa (0,2 a 0,3) para comparar as versões do prompt sob condições iguais.
- 03Modificar apenas uma coisa de cada vezMude uma regra, faça novamente as cinco perguntas e anote o que mudou. Se duas regras mudarem ao mesmo tempo, você não saberá qual corrigiu ou piorou o comportamento.
- 04Remover antes de adicionarQuando uma regra é ignorada, reformule-a de forma mais curta, coloque no início ou remova a que a contradiz. Adicionar texto é o último recurso.
- 05Versionar o promptConserve cada versão em um arquivo de texto datado ou no Modelfile sob controle de versão, com uma linha sobre o que mudou. Assim, você poderá voltar atrás.
#Armadilhas a evitar
| Armadilha | Sintoma | Correção |
|---|---|---|
| Prompt muito longo | Fim do prompt aplicado com menos fidelidade, janela reduzida | Condensar, colocar o essencial no início, aumentar num_ctx se necessário |
| Instruções contraditórias | « Seja breve » e « dê muitos exemplos »: comportamento variável | Hierarquizar: em caso de conflito, a regra 1 prevalece |
| Formulação hesitante | « Tente, se possível, fazer… »: instrução aplicada de forma intermitente | Imperativo direto: 'Faça X.' |
| Idioma não especificado | Respostas na língua do prompt ou da pergunta, conforme o modelo | Escrever « Responda sempre em francês » e redigir o prompt em francês |
| Posição de system ignorada | Modelo que não aplica o SYSTEM de um Modelfile | Verificar se o template do modelo prevê uma mensagem system |
| Segredos no prompt | Um usuário obtém o conteúdo do prompt ao solicitá-lo | Não colocar nada de confidencial ali |
#O prompt de sistema não é um cofre
As recomendações da OWASP sobre o risco de vazamento do prompt de sistema são claras: ele não deve ser considerado um segredo nem usado como controle de segurança, e não deve conter credenciais nem strings de conexão. Na prática, para uma implantação local: se for necessário um controle de acesso (dados por usuário, ações sensíveis), ele deve ser implementado na sua aplicação, não em uma frase do prompt. O guia sobre injeção de prompt explica por que um modelo local não está imune.
- Fonte: referência Modelfile de Ollama (instrução SYSTEM)
- Fonte: comprimento de contexto padrão do Ollama
- Fonte: predefinições do LM Studio
- Fonte: OWASP, vazamento do prompt de sistema
- Fonte: Lost in the Middle (Liu et al., 2023)
- Fundamentos de prompting
- Ollama Modelfile: criar e personalizar seu modelo
- Compreender a janela de contexto
- Temperatura, top-p, top-k: os parâmetros
- Injeção de prompt: executar localmente não protege você
- Function calling e saídas JSON estruturadas com Ollama
O que é um system prompt?+
Qual é o tamanho ideal de um prompt de sistema local?+
Como definir um prompt de sistema permanente no Ollama?+
Um system prompt pode impedir que um modelo revele informações?+
Devo escrever o prompt de sistema em francês ou em inglês?+
Por que meu modelo ignora o meu system prompt?+
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.