Apresentação
✍️ Prompt Engineering
A arte de desenhar inputs que guiam o LLM para outputs desejados — sem fine-tuning. Fundamental para chatbots, RAG, agentes e aplicações em produção.
Tipos de prompting — visão geral
Por nível de guia: Zero-shot (só instrução) → Few-shot (com exemplos) → Chain-of-Thought (com raciocínio) → Estruturas avançadas (ReAct, Tree of Thoughts).
1. Zero-shot prompting
O que é: Dás apenas a instrução ou pergunta, sem exemplos.
Como funciona: O modelo usa o conhecimento pré-treinado. Ex: "Traduz isto para inglês: [texto]" ou "Classifica o sentimento: [frase]".
Quando usar: Tarefas que o modelo já domina (tradução, sumarização, classificação simples). Rápido, barato em tokens.
Limitação: Formato e estilo podem variar. Para consistência, few-shot ou instruções explícitas ajudam.
2. Few-shot prompting
O que é: Incluis 1-5 exemplos input→output no prompt. O modelo infere o padrão.
Como funciona: Mostras exemplos do formato e estilo desejados. O modelo replica. Ex: "Input: X → Output: Y. Input: Z → Output: ?"
Quando usar: Formato específico (JSON, bullet points), domínio pouco comum, consistência crítica. Muito usado em produção.
Trade-off: Mais tokens = mais custo. 3-5 exemplos costuma ser o sweet spot.
3. Chain-of-Thought (CoT)
O que é: Pedir ao modelo para explicar o raciocínio passo a passo antes da resposta final.
Como funciona: "Pensa passo a passo" ou "Let's think step by step". O modelo gera passos intermédios (cálculos, lógica) e depois a conclusão.
Quando usar: Matemática, lógica, raciocínio multi-step, problemas que beneficiam de decomposição.
Variantes: Zero-shot CoT (só "think step by step", sem exemplos) — surpreendentemente eficaz. Few-shot CoT (exemplos com raciocínio explícito) — ainda melhor.
4. Self-consistency
O que é: Gerar várias respostas CoT (com diferentes raciocínios) e escolher a mais consistente por votação.
Como funciona: Pedes N respostas (ex: 5), cada uma com CoT. A resposta final que mais aparece ganha. Reduz erros de raciocínio.
Quando usar: Problemas difíceis onde uma única passagem pode falhar. Custo Nx maior.
5. Tree of Thoughts (ToT)
O que é: Explorar múltiplos caminhos de raciocínio em paralelo, como uma árvore de decisão.
Como funciona: Em cada passo, o modelo gera várias opções. Avalia cada ramo, poda os maus, expande os bons. Útil para planeamento e raciocínio exploratório.
Quando usar: Jogos, planeamento complexo, problemas com múltiplas soluções válidas. Mais caro e complexo.
6. ReAct (Reasoning + Acting)
O que é: Intercalar raciocínio com ações — o modelo pensa, age (chama tool), observa resultado, repete.
Como funciona: Ciclo Thought → Action → Observation. Ex: "Preciso do preço. Vou chamar a API de preços. [chama] O preço é X. Agora posso responder."
Quando usar: Agentes que precisam de tools (APIs, retrieval, calculadora). Base de LangChain agents, LangGraph.
7. Structured outputs
O que é: Forçar o output num formato específico (JSON, XML, bullet points) para parsing consistente.
Como funciona: Instruções explícitas no prompt ("Responde em JSON com campos X, Y, Z"). Few-shot com exemplos do formato. APIs como OpenAI structured outputs ou function calling garantem schema.
Quando usar: Integração com código, pipelines automatizados, extração de dados. Essencial em produção.
8. System prompts e role prompting
O que é: Definir persona, regras e tom numa mensagem separada (system) que o utilizador não vê.
Como funciona: System: "És um assistente técnico. Respostas curtas. Não inventes." User: "Como faço X?" O system condiciona todo o comportamento.
Quando usar: Sempre em produção. Controla tom, limites, formato. Evita que o user "override" com prompts enganadores.
Role prompting: "És um [papel]". Ex: "És um revisor de código sénior." Ajuda o modelo a adotar o contexto certo.
9. Delimitadores e instruções claras
O que é: Separar claramente input, contexto e instruções para evitar confusão.
Como funciona: Usar marcadores (```, ---, ###), secções explícitas ("Contexto:", "Pergunta:", "Instruções:"). Evita que o modelo misture o input do user com as instruções.
Quando usar: RAG (contexto vs pergunta), inputs longos, multi-turn. Reduz hallucinations por "prompt injection" acidental.
10. Prompt chaining
O que é: Dividir uma tarefa complexa em vários prompts sequenciais. Output de um = input do próximo.
Como funciona: Prompt 1: extrair entidades. Prompt 2: classificar cada entidade. Prompt 3: gerar resumo. Cada passo é mais simples e mais controlável.
Quando usar: Pipelines complexos, quando um único prompt fica confuso ou inconsistente. Mais latência, mas melhor qualidade.
11. Guardrails
O que é: Validar e filtrar o output do LLM antes de o mostrar ao utilizador.
Como funciona: Pós-processamento: verificar PII, conteúdo inapropriado, formato. Rejeitar ou corrigir. Bibliotecas: Guardrails AI, NeMo Guardrails.
Quando usar: Produção, antes de expor a users. Previne jailbreak, leakage de dados, respostas fora do scope.
Parâmetros que afetam o output
- Temperature — 0 = determinístico, repetível. 0.7-1 = criativo, variado. Para tarefas factuais: baixo. Para brainstorming: alto.
- Max tokens — Limita o comprimento. Evita respostas infinitas.
- Top-p (nucleus) — Amostragem. Controla diversidade do vocabulário.
Resposta forte para entrevista
Prompt engineering is about designing inputs that guide the model to the desired output without fine-tuning. I use few-shot for consistent formats, chain-of-thought for reasoning tasks, structured outputs for integration, and system prompts to control persona and guardrails. For agents, ReAct is key — reasoning interleaved with tool use.
Negative prompting e instruções de exclusão
O que é: Dizer explicitamente o que o modelo NÃO deve fazer.
Exemplo: "Responde em português. Não inventes factos. Não incluas informações que não estejam no contexto."
Quando usar: RAG (evitar hallucinations), produção (limitar scope). Complementa instruções positivas.
Prompt injection — defesa no design
- Separar user input: Nunca concatenar user input diretamente com instruções. Usar delimitadores claros (###, ```).
- System prompt isolado: Instruções críticas no system; user não pode sobrescrever facilmente.
- Validação de output: Guardrails a verificar se a resposta está no scope.
- Input sanitization: Limitar tamanho, caracteres perigosos.
Custo de prompts — otimização
- Few-shot: 3-5 exemplos costuma ser suficiente; mais = mais custo sem ganho linear
- System prompt: Cached por algumas APIs (ex: OpenAI) — prefixos comuns não contam em cada request
- Resumir contexto: Em conversas longas, sumarizar histórico em vez de enviar tudo
Zona de prática
Sem perguntas. Clica em Editar para adicionar.