Engenharia de Prompt
Anatomia de um Prompt
Contexto, objetivo, restrições e formato — blocos que tornam respostas previsíveis.
Nesta aula você vai
- Decompor prompt em blocos reutilizáveis
- Evitar ambiguidade que gera respostas genéricas
- Definir formato de saída explícito
Anatomia de um Prompt
Objetivos
- Criar prompts previsíveis — mesma entrada, mesma estrutura de saída
- Tratar prompt como interface entre seu sistema e o LLM
Os quatro blocos
[CONTEXTO] Quem é você, quem é o usuário, situação atual
[OBJETIVO] O que deve ser feito — verbo claro
[RESTRIÇÕES] O que NÃO fazer, limites, tom, idioma
[FORMATO] Como entregar — markdown, JSON, lista, tamanho
Exemplo fraco
"Fale sobre pedidos"
Resposta: essay genérico sobre e-commerce.
Exemplo forte
Contexto: Você é assistente da Loja Nova Era. O usuário está logado.
Objetivo: Explicar como rastrear um pedido pelo número.
Restrições: Máximo 4 frases. Português BR. Não invente URLs.
Formato: Passo numerado 1–3.
System vs User prompt
System — regras estáveis (carregue uma vez por sessão):
Você é o assistente oficial da API Docs Co.
Responda só sobre REST e OAuth2.
Se a pergunta for off-topic, diga: "Só posso ajudar com nossa documentação."
Respostas em português, tom técnico mas acessível.
User — pedido específico da vez:
Como renovo um access token com refresh token?
Separar permite versionar system prompt no Git (prompts/support-v2.txt) sem misturar com input do usuário.
Formato de saída explícito
Para integração com código, peça JSON:
Responda APENAS com JSON válido, sem markdown:
{"intent": "...", "confidence": 0.0-1.0}
Valide com JSON.parse + schema (Zod, ajv). Se inválido: retry com "Corrija o JSON".
Anti-padrões
| Ruim | Por quê |
|---|---|
| Prompt de 3.000 tokens no system | Caro, dilui instruções |
| "Seja útil e criativo" | Vago demais |
| Múltiplos objetivos conflitantes | Modelo escolhe um aleatoriamente |
| Perguntar e responder no mesmo bloco | Confunde roles |
Template mínimo (copie e adapte)
## Contexto
{empresa, produto, dados conhecidos}
## Objetivo
{ação específica}
## Restrições
- Idioma: pt-BR
- Máximo: {N} palavras
- Não inventar: {dados sensíveis}
## Formato
{lista | JSON | parágrafo}
Resumo
- Prompt = contrato: contexto + objetivo + restrições + formato
- System = regras fixas; User = pedido variável
- Saída estruturada (JSON) habilita automação downstream
- Prompt vago → resposta vaga → bug de produto