Executando verificação de segurança...
5

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

The First Prompt Counts the Most! An Evaluation of Large Language Models on Iterative Example-based Code Generation

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

Privacy Preserving Prompt Engineering: A Survey

Carregando publicação patrocinada...