AI: Engenharia de Prompts

Última atualização: 2026-08-26

"Engenharia de prompts" pode soar como algum tipo de arte mística — afinal, a mesma IA pode produzir resultados de qualidade drasticamente diferente dependendo de como você formula seu prompt. Mas o cerne da engenharia de prompts não é nada misterioso: é um conjunto de métodos de design que ajudam a IA a entender sua intenção e gerar conteúdo no formato que você espera. Começando com princípios de design, este capítulo irá guiá-lo pelas estratégias de prompting zero-shot, few-shot e thought-chain, ajudá-lo a entender prompts de sistema e configurações de personagem, e mostrar como construir modelos de prompts reutilizáveis e estruturados usando Python.

1. O Que Você Vai Aprender



2. História: Apenas um Prompt de Distância

(1) Ponto de Dor: A "Literatura Sem Sentido" da IA

Bob precisa de um relatório de análise de mercado, então ele abre o ChatGPT e digita:

"Escreva um relatório de análise de mercado"

Como resultado, a IA gerou uma resposta genérica e superficial: "O mercado continua a crescer... Oportunidades e desafios coexistem... Recomendamos acompanhar de perto as tendências do mercado." — Correto, mas completamente desprovido de informações úteis.

(2) A Modificação do Prompt por Alice

Alice pegou o teclado e digitou novamente:

"Você é um analista de mercado sênior com 15 anos de experiência na indústria de veículos elétricos. Por favor, analise o mercado global de veículos elétricos em 2025, incluindo: 3 tendências principais, 2 grandes riscos e 1 recomendação de investimento. Apresente a seção de tendências usando uma tabela em Markdown."

Desta vez, a IA gerou um relatório analítico bem organizado e rico em dados — usando o mesmo modelo e as mesmas capacidades; a única diferença foi o prompt.

(3) Benefícios: Um prompt é como um "manual de instruções"

Bob exclamou: "Então não era que a IA não conseguia — era que eu não expliquei claramente!" Alice assentiu. "A essência da engenharia de prompts é dar à IA um conjunto preciso de 'instruções'."


3. Princípios de Design de Prompt

(1) Três Princípios Fundamentais

Princípio Significado Contraexemplo
Claro O objetivo da tarefa é inequívoco; a IA não precisa adivinhar "Analise o mercado"
Específico Forneça detalhes, restrições e contexto suficientes "Escreva um relatório"
Estruturado Organize o prompt usando numeração, marcadores e templates Blocos longos de texto livre

Um bom prompt transforma o trabalho da IA de "mão livre" para "seguindo um roteiro".

(2) Tabela Comparativa: Prompts Bons vs. Prompts Ruins

Dimensão Prompt Ruim Prompt Bom
Objetivo "Me ajude a escrever algo" "Escreva um e-mail comercial de 200 palavras convidando um cliente para um evento de lançamento de produto"
Papel Nenhum "Você é um gerente de RP sênior"
Formato Nenhum "Saída em formato Markdown, incluindo título, corpo do texto e assinatura"
Restrições Nenhum "No máximo 200 palavras; formal, mas não rígido"
Exemplo Nenhum Inclui 1–2 trechos da saída esperada
Avaliação Nenhum "Foco no horário, local e destaques"

(3) Framework dos "6 Elementos" para Design de Prompt

Um prompt completo tipicamente inclui os seguintes elementos (não precisa incluir todos, mas quanto mais elementos incluir, mais preciso será):

  1. Papel — Descrição do personagem: "Você é um..."
  2. Tarefa — Especifique a tarefa: "Por favor, complete..."
  3. Contexto — Informações de fundo: "O público-alvo é..."
  4. Formato — Formato de saída: "Saída como JSON / Tabela / Markdown"
  5. Restrição — Restrições: "No máximo 300 palavras / Use apenas vocabulário do ensino fundamental"
  6. Exemplo — Exemplo (Few-shot): "Conforme mostrado no exemplo a seguir..."

Em templates de strings do Python, isso é expresso como:

PYTHON
PROMPT_TEMPLATE = """
[Role] You are a {role}.
[Task] Please {task}.
[Context] {context}
[Format] Output in {format}.
[Constraints] {constraints}
[Example] {example}
"""


4. Estratégias de Prompt: Zero-Shot / Few-Shot / Cadeia de Pensamento

(1) Aprendizado Zero-Shot

O prompting zero-shot envolve descrever a tarefa diretamente, sem fornecer nenhum exemplo à IA—ele depende do conhecimento e compreensão existentes do modelo.

▶ Exemplo: Prompts e saídas zero-shot (Dificuldade: ⭐)

PYTHON
# Prompt zero-shot: classificar sentimento sem exemplos
prompt = """
Classifique o sentimento da seguinte avaliação como Positivo ou Negativo:

Avaliação: "A duração da bateria é incrível, durou 12 horas com uma única carga!"
Sentimento:
"""

# Saída esperada: Positivo

Saída: Positivo

O aprendizado zero-shot é adequado para tarefas simples e bem definidas. No entanto, quando as tarefas são mais complexas ou exigem um formato específico, a saída tende a ser inconsistente.

(2) Aprendizado Few-Shot

"Poucos exemplos" significa fornecer alguns exemplos de "input→saída" no prompt, para que a IA possa aprender os padrões que você espera por analogia.

▶ Exemplo: Melhorando a Saída com Poucos Exemplos (Dificuldade ⭐)

PYTHON
# Prompt few-shot: classificar sentimento com exemplos
prompt = """
Classifique o sentimento de cada avaliação como Positivo ou Negativo.

Avaliação: "Adoro a qualidade da tela!" -> Positivo
Avaliação: "Atendimento ao cliente terrível." -> Negativo
Avaliação: "Produto decente, nada demais." -> Neutro
Avaliação: "Melhor compra que fiz este ano!" -> Positivo

Avaliação: "O preço é muito alto pelo que se recebe." ->
"""

# Saída esperada: Negativo

Saída: Negativo

A chave para trabalhar com um tamanho de amostra pequeno: Os exemplos devem ser representativos e cobrir uma variedade de cenários; o formato deve ser consistente, para que a IA aprenda padrões e não caos.

(3) Prompting de Cadeia de Pensamento (CoT)

O prompt de "Cadeia de Pensamento" instrui a IA a "pensar passo a passo" e tornar seu processo de raciocínio explícito. Isso é particularmente eficaz para tarefas como raciocínio matemático e análise lógica.

▶ Exemplo: Prompts CoT para resolver problemas de matemática (Dificuldade: ⭐⭐)

PYTHON
# Prompt de Cadeia de Pensamento: resolver um problema de matemática passo a passo
prompt = """
Resolva o seguinte problema passo a passo.

Problema: Uma loja compra um laptop por R$800 e o vende por R$1.050.
Qual é a margem de lucro como porcentagem?

Solução passo a passo:
"""

# Saída esperada:
# Passo 1: Calcular lucro = 1050 - 800 = R$250
# Passo 2: Calcular margem = (250 / 800) * 100% = 31,25%
# Resposta: A margem de lucro é 31,25%

Saída: (Execute o exemplo para ver a saída real, ou consulte a nota de saída esperada nos comentários do código acima.)

Dois Usos do CoT:

(4) Tabela Comparativa das Três Estratégias de Prompt

Dimensão Zero-Shot Few-Shot Cadeia de Pensamento (CoT)
Exemplos são necessários? Não Sim (2–5) Sim (incluindo passos de raciocínio)
Consumo de Tokens Baixo Médio Alto
Casos de Uso Classificação e formatação simples Alinhamento de formato/estilo necessário Raciocínio matemático/lógico/multietapas
Estabilidade da Saída Baixa Média Alta
Precisão Depende das capacidades do modelo Melhoria significativa Melhoria significativa
Uso Típico Classifique: ... A->X, B->Y, C->? "Passo a passo..."


5. Prompts do Sistema e Configurações de Personagem

(1) O que é um Prompt do Sistema?

Na API de Chat, as mensagens são categorizadas em três funções (roles):

Função (Role) Função Analogia
system Definir Regras de Comportamento e Identidade da IA "Manual do Funcionário"
user Pergunta ou comando real do usuário "Necessidades do Cliente"
assistant Resposta da IA "Resposta do Funcionário"

O Prompt do Sistema permanece ativo durante toda a conversa e é a ferramenta mais poderosa para controlar o comportamento da IA.

(2) O Poder do Desenvolvimento de Personagens

Configurações baseadas em papéis não apenas alteram o "tom" da IA, mas também alteram o escopo do conhecimento que ela utiliza e seus métodos de raciocínio:

▶ Exemplo: Interpretando Papéis com um Prompt do Sistema (Dificuldade: ⭐)

PYTHON
# Define um prompt do sistema para um papel de entrevistador técnico
system_prompt = """
You are a senior software engineer conducting a technical interview.
Rules:
1. Ask one question at a time
2. Wait for the candidate answer before asking the next
3. If the answer is wrong, give a hint instead of the correct answer
4. Cover topics: data structures, algorithms, system design
5. Rate each answer on a scale of 1-5
"""

user_message = "I am ready for the interview. Please start."

# The AI will behave as a structured interviewer,
# not a generic chatbot

Saída: (Execute o exemplo para ver a saída real, ou consulte a nota de saída esperada nos comentários do código acima.)

(3) Melhores Práticas para Prompts do Sistema

  1. Escreva as regras primeiro, depois os papéis: Regras são mais fáceis de a IA seguir do que papéis.
  2. Liste as regras em forma numerada: Isso é menos propenso a ser negligenciado pela IA do que parágrafos escritos em linguagem natural.
  3. Defina Restrições Negativas: "Não faça isso" é às vezes mais eficaz do que "Faça isso".
  4. Teste os Limites: Quebre as regras deliberadamente para ver se a IA as corrige.


6. Controle de Formato de Saída

(1) Por que o controle de formato é necessário?

Quando você precisa que a saída da IA seja analisada por um programa (em vez de lida por um ser humano), o controle de formato é crucial — JSON, tabelas, delimitadores específicos, etc.

(2) Comparação dos Métodos de Controle de Formato de Saída

Método Vantagens Desvantagens Cenários Adequados
Descrição em linguagem natural Simples A IA pode não cumprir Saída não estruturada
Template Markdown Boa legibilidade Requer processamento adicional para análise sintática Relatórios/documentos
JSON Schema Legível por máquina Alto consumo de tokens Integração com API
Marcador de Delimitador Controle preciso Requer design do delimitador Extração de Campos Específicos
Formato few-shot Forte capacidade de imitação da IA Exemplos ocupam tokens Alinhamento de formatos complexos

▶ Exemplo: Controlando a Saída em Formato JSON (Dificuldade: ⭐⭐)

PYTHON
# Prompt que força a saída JSON com um esquema
prompt = """
Extraia as informações do produto do texto abaixo.
Saída APENAS JSON válido correspondente a este esquema:

{
  "name": "string",
  "price": "number",
  "currency": "string",
  "features": ["string"]
}

Text: "O UltraWidget Pro custa $49.99 e vem com estojo à prova d'água,
carregamento solar e garantia de 5 anos."

JSON:
"""

# Saída esperada:
# {
#   "name": "UltraWidget Pro",
#   "price": 49.99,
#   "currency": "USD",
#   "features": ["estojo à prova d'água", "carregamento solar", "garantia de 5 anos"]
# }

Saída: (Execute o exemplo para ver a saída real, ou consulte a nota sobre a saída esperada nos comentários do código acima.)

(3) Garantindo a Confiabilidade da Saída JSON

Em projetos do mundo real, o JSON gerado pela IA pode conter erros de formatação. Recomendamos usar Pydantic para validação secundária:

PYTHON
from pydantic import BaseModel
from typing import List

class ProductInfo(BaseModel):
    name: str
    price: float
    currency: str
    features: List[str]

# Valide a saída da IA
try:
    product = ProductInfo.model_validate_json(ai_output)
    print(f"Válido: {product.name} - {product.currency}{product.price}")
except Exception as e:
    print(f"JSON inválido: {e}")


7. Fluxo de Trabalho de Engenharia de Prompts

(1) Processo de Otimização Iterativo

A engenharia de prompts não é um processo único — é um ciclo de "design → teste → avaliação → iteração":

100%
graph TB
    A[Requirements] --> B[Template Design]
    B --> C[Test Run]
    C --> D{Evaluate Output}
    D -- Unsatisfied --> E[Diagnose]
    E --> F[Revise Prompt]
    F --> C
    D -- Satisfied --> G[Freeze Template]
    G --> H[Deploy]

(2) Critérios para Avaliação da Qualidade da Saída

Dimensão Método de Avaliação Ferramenta
Precisão Comparação com Anotação Humana LLM-as-Judge
Conformidade de Formato Validação de Esquema Pydantic / JSON Schema
Integridade Verificação de Campos Obrigatórios Scripts Personalizados
Consistência Comparação de Múltiplas Execuções Variância Estatística
Relevância Alinhamento com os Objetivos da Tarefa Classificação Humana


8. Erros Comuns em Prompts e Solução de Problemas

(1) Cinco Erros Comuns

Erro Sintomas Correção
Instruções Vagas Saída da IA desvia do objetivo Objetivos claros da tarefa + Formato de saída
Sobrecarga de Informação O prompt é muito longo; a IA ignora partes-chave Organize em parágrafos; coloque informações-chave no final
Deriva de Formato Formato de saída instável Forneça exemplos + Restrições de esquema
Conflito de Papéis Conflito entre comandos do Sistema e do Usuário O sistema tem prioridade máxima; comandos são unificados
Restrições Excessivas Restrições demais impedem a IA de gerar saída Mantenha restrições principais; remova as redundantes

(2) Tabela Comparativa de Estratégias de Depuração de Prompts

Estratégia Ação Cenários Aplicáveis
Teste A/B Alterar apenas uma variável e comparar os resultados Identificar qual fator tem maior impacto
Simplificação Gradual Remover gradualmente elementos do prompt completo Identificar o prompt mínimo viável
Melhoria Gradual Adicionar gradualmente elementos partindo do prompt mais simples Confirmar a contribuição de cada elemento
Revisão da Saída Verificar a saída da IA frase por frase Identificar problemas específicos
Teste de Limites Inserir casos extremos/de limite Testar robustez
Controle de Temperatura Reduzir a temperatura para diminuir a aleatoriedade Quando uma saída determinística é necessária

(3) Depuração Prática: O Processo de Diagnóstico para um Prompt

PYTHON
# Ruim: prompt vago
bad_prompt = "Analise o mercado de veículos elétricos."

# Passo 1: Adicionar papel
step1 = "Você é um analista sênior de mercado de EV. Analise o mercado de EV."

# Passo 2: Adicionar estrutura
step2 = """Você é um analista sênior de mercado de EV.
Analise o mercado global de EV de 2025 com:
1. Três tendências-chave
2. Dois riscos principais
3. Uma recomendação de investimento"""

# Passo 3: Adicionar restrição de formato
step3 = """Você é um analista sênior de mercado de EV com 15 anos de experiência.
Analise o mercado global de EV de 2025 com:
1. Três tendências-chave (apresentadas em uma tabela Markdown)
2. Dois riscos principais (com avaliação de probabilidade)
3. Uma recomendação de investimento (com faixa de ROI esperada)

Saída em formato Markdown com cabeçalhos claros."""


9. Exemplo Abrangente: Template de Prompt para Análise Estruturada de Produto

▶ Exemplo: Um Sistema Completo de Prompt para Análise de Produto (Dificuldade: ⭐⭐⭐)

Crie um template de prompt reutilizável para análise de produto que inclua um prompt de sistema, um prompt do usuário e análise de saída:

PYTHON
from string import Template
from pydantic import BaseModel
from typing import List, Optional

# Passo 1: Prompt do Sistema - definir a função
SYSTEM_PROMPT = """Você é um analista de produto sênior com especialização em
pesquisa de mercado, análise competitiva e avaliação de experiência do usuário.
Você produz relatórios de análise de produto estruturados e baseados em dados.

Regras:
1. Sempre baseie a análise em evidências concretas e pontos de dados
2. Destaque tanto forças quanto fraquezas de forma objetiva
3. Forneça recomendações acionáveis com níveis de prioridade
4. Use números e métricas específicas sempre que possível
5. Formate a saída como Markdown válido
"""

# Passo 2: Template do Prompt do Usuário com todos os 6 elementos
USER_PROMPT_TEMPLATE = Template("""
[Tarefa] Analise o produto a seguir e produza um relatório completo.

[Informações do Produto]
- Nome: $product_name
- Categoria: $category
- Preço: $price
- Usuários-alvo: $target_users

[Estrutura do Relatório]
Por favor, inclua as seguintes seções:
1. **Visão Geral do Produto** - Breve descrição e posicionamento
2. **Pontos Fortes** - Top 3 vantagens com evidências
3. **Fraquezas** - Top 3 limitações com exemplos
4. **Posição de Mercado** - Análise do panorama competitivo
5. **Recomendações** - Sugestões de melhoria priorizadas

[Formato] Saída em Markdown com cabeçalhos e uma tabela de resumo.
[Restrições] Máximo de 500 palavras. Seja conciso e específico.
[Exemplo]
Visão Geral do Produto
O ProductX é um smartphone de faixa intermediária voltado para jovens profissionais...

Tabela de Resumo
| Aspecto | Classificação | Observação Chave |
|---------|---------------|------------------|
| Design  | 4/5           | Sensação premium com preço intermediário |
""")

# Passo 3: Preencher template e chamar API (pseudo-código)
def analyze_product(product_name: str, category: str,
                    price: str, target_users: str) -> str:
    user_prompt = USER_PROMPT_TEMPLATE.substitute(
        product_name=product_name,
        category=category,
        price=price,
        target_users=target_users
    )
    # Em uso real, chame sua API LLM aqui
    # response = client.chat.completions.create(
    #     model="gpt-4",
    #     messages=[
    #         {"role": "system", "content": SYSTEM_PROMPT},
    #         {"role": "user", "content": user_prompt}
    #     ],
    #     temperature=0.3
    # )
    # return response.choices[0].message.content
    return user_prompt  # Retorna o prompt para demonstração

# Passo 4: Usar o template
result = analyze_product(
    product_name="EcoBike S3",
    category="Bicicleta Elétrica",
    price="$1,299",
    target_users="Commuters urbanos com idade entre 25-40 anos"
)
print(result[:300] + "...")

Saída: (Execute o exemplo para ver a saída real, ou consulte a nota de saída esperada nos comentários do código acima.)

Pontos Chave de Design: O Prompt do Sistema define funções e regras gerais, enquanto o template do Prompt do Usuário lida com tarefas específicas; separar os dois permite a reutilização de templates.


❓ Perguntas Frequentes

P: Engenharia de prompts é apenas “conversar com a IA”? R: Não exatamente. Conversas casuais com a IA são espontâneas, enquanto a engenharia de prompts é um processo sistemático de design — envolve princípios claros (claro, específico, estruturado), seleção de estratégias (zero-shot, few-shot, CoT), restrições de formato e um fluxo de trabalho iterativo. Assim como “conversar” e “fazer um discurso” usam linguagem, mas este último requer planejamento cuidadoso.

P: Por que prompts diferentes produzem resultados tão diferentes para a mesma tarefa? R: LLMs são modelos probabilísticos que predizem o conteúdo subsequente com base em cada token no prompt. Um prompt vago faz com que o modelo faça amostragem aleatória de um vasto espaço de possibilidades, enquanto um prompt preciso reduz significativamente o intervalo de saídas válidas — a diferença pode chegar a várias ordens de magnitude.

P: Quando o prompt de Cadeia de Pensamento (CoT) deve ser usado? R: Use CoT quando uma tarefa envolve raciocínio multi-etapas (cálculos matemáticos, análise lógica, tomada de decisão complexa). Para tarefas de etapa única, como classificação simples ou conversão de formato, o CoT na verdade desperdiça tokens sem melhorar o desempenho. Aqui vai uma regra prática: se for uma pergunta que exigiria de uma pessoa “pensar um momento” antes de responder, você deve usar CoT.

P: Qual é a diferença entre um Prompt de Sistema e um Prompt de Usuário? R: Um Prompt de Sistema define a identidade e as regras de comportamento da IA; ele permanece em vigor durante toda a conversa e tem a prioridade mais alta. Um Prompt de Usuário especifica uma tarefa ou pergunta particular para cada interação e só é eficaz durante o turno atual. Para usar uma analogia: o Prompt de Sistema é o “manual do funcionário”, enquanto o Prompt de Usuário é o “solicitação do cliente”.

P: Prompts podem substituir o fine-tuning? R: Em muitos cenários, sim — um pequeno número de exemplos no prompt pode ajudar o modelo a se adaptar a novos formatos de tarefa. No entanto, prompts têm limitações de comprimento e não podem incorporar uma grande quantidade de conhecimento de domínio; o fine-tuning, por outro lado, pode modificar os parâmetros do modelo para internalizar profundamente o conhecimento. Regra prática: Se 5 a 10 exemplos forem suficientes, use prompts; se você precisar de centenas de amostras ou conhecimento especializado, considere o fine-tuning.


📖 Resumo

Prévia do Próximo Capítulo: Mergulharemos no RAG (Retrieval-Augmented Generation) e aprenderemos como habilitar a IA a responder perguntas apoiando-se em bases de conhecimento externas, rompendo assim as limitações temporais do conhecimento do modelo.


📝 Exercícios

Básico (⭐)

Projete três prompts de qualidade variável para completar a mesma tarefa (traduzir uma passagem do inglês para o chinês), e compare a qualidade da saída:

PYTHON
# Tarefa: Traduzir do inglês para o chinês

# Prompt ruim
prompt_v1 = "Traduza isto: The quick brown fox jumps over the lazy dog."

# Prompt melhor (adicionar contexto e restrições)
prompt_v2 = "Traduza a seguinte frase do inglês para um chinês natural e fluido. Preserve o tom e o significado originais.\n\nThe quick brown fox jumps over the lazy dog."

# Melhor prompt (adicionar papel, formato e exemplo)
prompt_v3 = """Você é um tradutor profissional de inglês-chinês.

Regras:
1. Traduza para um chinês natural e idiomático
2. Preserve o tom e o matiz originais
3. Se a frase tiver referências culturais, adicione uma nota breve

Exemplo:
EN: "Break a leg!"
CN: "Break a leg! (Idioma inglês para desejar boa sorte antes de uma apresentação)"

Agora traduza:
The quick brown fox jumps over the lazy dog."""

# TODO: Execute cada prompt através de um LLM e compare as saídas

Avançado (⭐⭐)

Use um pequeno número de exemplos para instruir um LLM a classificar 5 comentários por sentimento (Positivo / Negativo / Neutro):

PYTHON
# Classificação de sentimento com poucos exemplos
prompt = """Classifique o sentimento de cada avaliação.

Avaliação: "Absolutely love this product! Five stars!" -> Positive
Avaliação: "Waste of money, broke after one week." -> Negative
Avaliação: "It works as expected, nothing more." -> Neutral
Avaliação: "The design is gorgeous but battery drains fast." -> ?

Agora classifique estas 5 avaliações:
1. "Best coffee maker I have ever owned!"
2. "Delivery was late and the box was damaged."
3. "Average quality for the price, decent but not impressive."
4. "Customer support resolved my issue in 10 minutes, amazing!"
5. "The instructions are confusing but the product works fine."
"""

# TODO: Execute através de um LLM e verifique a precisão

Desafio (⭐⭐⭐)

Projete um Prompt de Sistema que faça um LLM atuar como um entrevistador técnico e implemente um processo de diálogo de múltiplas rodadas:

PYTHON
# Sistema de entrevistador técnico
SYSTEM_PROMPT = """Você é um engenheiro sênior de backend conduzindo uma entrevista técnica de programação.
Regras:
1. Faça uma pergunta de cada vez sobre Python/estruturas de dados/algoritmos
2. Avalie cada resposta: classifique de 1-5 e forneça um feedback breve
3. Se estiver errado, forneça uma dica, não a resposta completa
4. Após 5 perguntas, forneça uma avaliação geral
5. A dificuldade deve aumentar gradualmente
"""

# Conversa simulada de múltiplas rodadas
conversation = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": "Estou pronto para a entrevista."},
]

# TODO: Implemente um loop que:
# 1. Envia a conversa para o LLM
# 2. Imprime a pergunta do entrevistador
# 3. Recebe a resposta do usuário como entrada
# 4. Anexa ambas à conversa
# 5. Repete até a entrevista terminar
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%