Anatomia do Prompt (Contrato de Entrada)
Zero-shot. One/Few-shot. Chain of Thought. Role Prompt
Se você já está familiarizado com esses temas, provavelmente já estudou sobre a criação de prompts, se é novidade, continue lendo que no final deixo as referências para se aprofundar.
A pergunta é: Essas técnicas funcionam no processo de desenvolvimento de software?
Resposta curta: Sim, mas não da forma que a maioria usa.
O ganho real aparece quando você combina tudo no ciclo especificar, gerar, testar, revisar e medir.
Sem isso, você só troca pedido vago por saída imprevisível.
Zero-shot - Quando a tarefa é bem especificada
O que é: Pedir a solução sem exemplos, mas com objetivo, restrições e formato de saída claros.
Use para: Boilerplate, scripts repetitivos, docstrings, esboço de testes.
Como pedir:
Gere testes usando a lib Jest para src/webhook.ts.
Cobertura mínima 80%.
Não adicione dependências.
Formato único: bloco `ts` chamado `webhook.spec.ts`.
Por que funciona: Zero-shot não é sem contexto, é sem exemplos. Especificação + Formato reduzem a variação, o modelo foca no alvo.
One-shot / Few-shot - Quando você precisa impor estilo
O que é: Dar 1–3 exemplos reais do seu repositório para o modelo reproduzir um padrão.
Use para: Convenções de commit, padrões de teste, formato de logs, estilo de API.
Como pedir:
Exemplo: feat(api): add /users/{id} with 404 semantics
Tarefa: gerar a mensagem para "adicionar cache no GET /users/{id} com ETag".
Por que funciona? 1–3 exemplos reais do seu repositório fudamentam o modelo no padrão do projeto, você não explica a técnica, mostra o padrão.
Role Prompt - Quando o papel dita as regras
O que é: Declarar o papel/cargo com critérios verificáveis (segurança, custo, latência, DX).
Use para: Segurança (OWASP/ASVS), performance, padrões internos, DX.
Como pedir:
Atue como Engenheiro Sênior TypeScript focado em OWASP e custo/latência.
Não introduza novas libs.
Saída em JSON {plan, code, tests, risks, limits}.
Tarefa: adicionar verificação HMAC assinada no webhook.
Por que funciona: O papel reduz ambiguidade e injeta guardrails objetivos no resultado.
Chain of Thought (CoT) - Planeje e resolva (sem textão)
O que é: Pedir planejamento explícito antes do código, controlando a verbosidade.
Use para: Refactors com vários passos, investigação de bug, divisão de tarefas.
Como pedir:
Forneça um plano em 3 passos e o código final.
Não exiba raciocínio detalhado.
Inclua tests e uma lista curta de riscos/limites.
Por que funciona: Você garante os benefícios do planejamento, como clareza e cobertura total de casos, sem sobrecarregar o PR com informações. O foco permanece no resultado.
Anatomia do Prompt (Contrato de Entrada)
Para contextos maiores, os prompts mais eficazes combinam todas essas técnicas acima em um contrato de entrada:
- Papel/Função: Define a especialização e as qualificações para a tarefa.
- Instrução: Descreve claramente a tarefa e o formato esperado.
- Contexto: Detalhes relevantes, restrições e referências.
- Dados de entrada: Conteúdo a ser processado (texto, código, etc.).
- Formato de saída (Schema): Estrutura esperada (ex.: JSON com chaves obrigatórias).
- Restrições/Guardrails: O que não fazer, limites e requisitos.
Exemplo
Papel: Engenheiro Sênior TypeScript com foco em OWASP ASVS e custo/latência.
Instrução:
- Implementar verificação HMAC SHA-256 para webhooks.
- Não adicionar dependências externas.
- Entregar no formato JSON com chaves {plan, code, tests, risks, limits}.
Contexto:
- Arquivo alvo: src/webhook.ts (função handleWebhook(req, res)).
- O segredo HMAC é obtido via process.env.WEBHOOK_SECRET.
- O header com a assinatura é "x-signature".
- Em caso de falha, responder 401 e logar motivo (sem vazar segredo).
Dados de entrada:
- Payload em req.body (string).
- Assinatura recebida em req.headers["x-signature"] (hex).
Restrições/Guardrails:
- Sem novas libs, apenas Node crypto.
- Tempo de verificação O(n) no tamanho do payload.
- Comparação de tempo constante (timing-safe).
O que isso traz de novo?
- De "pedido solto" para "contrato de entrega": Cada técnica reduz um tipo de ambiguidade (especificação, estilo, critérios, passos).
- Previsibilidade e velocidade: Formatos de saída e exemplos reais baixam a variância da resposta.
- Qualidade auditável: Role + CoT forçam critérios verificáveis (tests, riscos, limites) no próprio output.
No próximo post, vou mostrar como orquestrar Memória de Curto Prazo (STM) e Longo Prazo (LTM). Nele, você aprenderá onde armazenar padrões, contratos (como OpenAPI/OWASP) e boilerplates. O objetivo é injetar apenas o que é necessário para a tarefa, sem sobrecarregar o contexto.
Referências
A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
Lost in the Middle: How Language Models Use Long Contexts
JSONSchemaBench: A Rigorous Benchmark of Structured Outputs for Language Models
Searching for Best Practices in Retrieval-Augmented Generation