Prompting: o contrato com o modelo
System vs user, instruções claras, few-shot e os limites do que prompt resolve.
5 min de leitura
Escolha como aprender
— combine como quiserDica: o vídeo é um resumo visual rápido — o áudio e o texto trazem a aula completa.
Você já tem um modelo capaz — mas ele não sabe o que você quer até você dizer. O prompt é o contrato: define papel, regras, formato e exemplos antes de qualquer resposta aparecer. Entender essa estrutura é o que separa quem 'tenta até funcionar' de quem projeta comportamento de forma previsível.
Os três papéis de uma conversa
Todo LLM moderno recebe mensagens rotuladas com um papel (role). Os três que importam são system, user e assistant.
System é onde você, arquiteto, fala com o modelo antes do usuário. É o espaço para definir identidade, tom, restrições e formato de saída. Pense nele como o briefing que um gerente dá a um funcionário antes da reunião com o cliente: o funcionário (modelo) vai interagir com o cliente (user), mas as regras já estão estabelecidas.
User é a mensagem de quem usa o sistema — pode ser um humano digitando ou sua aplicação montando uma string programaticamente. Assistant é a resposta do modelo; em few-shot (veremos adiante) você também injeta mensagens de assistant para mostrar exemplos de resposta esperada.
Um erro comum é colocar tudo no user e não usar o system. O resultado é um modelo que ignora restrições porque elas chegaram misturadas ao pedido, sem autoridade de configuração. Regras de negócio, persona e formato pertencem ao system. O user deve carregar apenas o dado variável — a pergunta, o texto a processar, o contexto da sessão.
Anatomia de um prompt bem estruturado
Fluxo de montagem do prompt até a resposta do modelo
- system · papel, regras, formato
- assistant (exemplos) · few-shot opcional
- user · dado variável da sessão
- Context Window · tokens concatenados
- LLM Inference · next-token prediction
- Resposta · no formato definido
- Validação · (app / schema)
O que faz um prompt ser bom
Um bom prompt tem quatro ingredientes: contexto, instrução clara, formato de saída e, quando necessário, exemplos.
Contexto é o que o modelo precisa saber para não inventar: quem é o usuário, qual o domínio, quais restrições existem. Sem contexto, o modelo preenche lacunas com probabilidade — e probabilidade nem sempre é o que você quer.
Instrução clara significa verbo de ação + escopo + restrição. "Resuma" é fraco. "Resuma em até três frases, focando em impacto financeiro, sem mencionar nomes de pessoas" é um contrato.
Formato de saída reduz pós-processamento. Se você precisa de JSON, diga no system. Se precisa de lista numerada, diga. O modelo segue formato quando instruído — não por padrão.
Exemplos (few-shot) são o atalho mais poderoso quando a instrução por si só é ambígua. Mostrar dois ou três pares input/output esperados calibra o modelo melhor do que qualquer adjetivo como "detalhado" ou "profissional". Zero-shot funciona para tarefas simples e bem definidas; few-shot entra quando o padrão de saída é específico demais para descrever só com palavras.
Um padrão que uso em produção: system define persona + regras + formato; user traz apenas {{variavel}}. Isso torna o prompt versionável, testável e separado do dado.
Montando um prompt estruturado — exemplo prático
- 1
System: persona e regras
``
system: Você é um assistente de triagem de suporte técnico. Responda SOMENTE em JSON com as chaves: { "categoria": string, "prioridade": "alta|media|baixa", "resumo": string }. Não invente informações ausentes no ticket.`` - 2
Few-shot: dois exemplos no histórico
``
user: "Não consigo fazer login desde ontem, erro 401." assistant: {"categoria":"autenticacao","prioridade":"alta","resumo":"Falha de login com erro 401 há mais de 24h."} user: "Quero mudar a cor do botão no dashboard." assistant: {"categoria":"ui","prioridade":"baixa","resumo":"Solicitação estética no dashboard."}`` - 3
User: dado variável da sessão
``
user: "{{ticket_texto}}"`` Só isso. O dado muda; o contrato não.
Papéis em uma conversa com o modelo
Toque num conceito e depois na definição.
Você vai ouvir muito sobre 'pense passo a passo' (chain-of-thought). O que isso faz é simples: força o modelo a gerar tokens intermediários de raciocínio antes de dar a resposta final. Como o modelo prediz o próximo token com base em tudo que veio antes (aula 03), ter o raciocínio escrito na janela de contexto melhora a resposta final em tarefas que exigem múltiplos passos lógicos. Não é um truque — é consequência direta de como o modelo funciona. Eu uso em tarefas de classificação complexa e análise de causa raiz; evito em respostas curtas onde o raciocínio extra só aumenta latência e custo.
Os limites do prompt — o que ele não resolve
Aqui está a parte que mais vejo ser ignorada: prompt não dá conhecimento novo ao modelo. Se o modelo foi treinado até março de 2024 e você precisa que ele responda sobre um evento de outubro de 2024, nenhum prompt resolve isso. O modelo vai alucinar ou dizer que não sabe — e ambos são comportamentos corretos dado o que ele tem.
Da mesma forma, prompt não dá ferramentas. Você pode instruir o modelo a "consultar o banco de dados", mas ele não tem como fazer isso sozinho. A capacidade de agir no mundo — chamar APIs, buscar documentos, executar código — vem de arquitetura: RAG para conhecimento externo, tool calling para ações. Essas são as duas próximas aulas.
O que o prompt controla: comportamento (tom, formato, restrições), estratégia de raciocínio (chain-of-thought, decomposição de problema) e calibração de exemplos (few-shot). O que o prompt não controla: fatos além do treino, dados em tempo real e execução de código ou chamadas externas.
Entender esse limite é fundamental para não projetar sistemas frágeis. Quando um requisito não cabe no prompt, a resposta de arquitetura é RAG ou tools — não um prompt maior.
Zero-shot vs Few-shot: quando usar cada um
| Critério | Zero-shot | Few-shot | |
|---|---|---|---|
| Quando usar | Tarefa simples e bem definida | Padrão de saída específico ou ambíguo | — |
| Custo de tokens | Baixo | Médio–alto (exemplos ocupam contexto) | — |
| Consistência de formato | Depende da instrução escrita | Alta — o exemplo mostra exatamente o esperado | — |
| Manutenção | Mais simples | Exemplos precisam ser revisados com o modelo | — |
O que fixar desta aula
Dúvidas frequentes
Prompt engineering vai desaparecer com modelos melhores?
Modelos melhores reduzem a necessidade de truques, mas não eliminam a necessidade de instrução clara. Quanto mais capaz o modelo, mais importante é dizer exatamente o que você quer — porque ele vai fazer exatamente isso, com mais fidelidade.
Posso colocar regras de segurança só no system prompt?
Não como única camada. System prompt é importante, mas pode ser contornado por prompt injection. A aula 10 cobre guardrails e por que segurança precisa de defesa em profundidade, não só instrução.
Quantos exemplos few-shot são suficientes?
Em geral, dois a cinco cobrem a maioria dos casos. Mais do que isso raramente ajuda e consome contexto que poderia ser usado para o dado real. Teste com dois e adicione só se a consistência piorar.
Checkpoint do Módulo 1
Você chegou ao fim do primeiro módulo. Passamos por o que é IA e onde o LLM se encaixa, como um modelo aprende e o que são parâmetros, como tokens e contexto funcionam, o que são embeddings e busca semântica, e agora como estruturar o contrato com o modelo via prompt. Esses cinco conceitos são a base de tudo que vem a seguir — RAG, tools, agentes, avaliação. A seguir, um exercício de associação para consolidar os papéis de uma conversa, e depois o quiz do módulo. Se você conseguir responder sem consultar, está pronto para o Módulo 2.
Checkpoint — Módulo 1
1. O que o prompt NÃO resolve sozinho?
2. O system prompt serve para…