Engenharia de Prompts
A engenharia de prompts molda o comportamento de LLMs através de instruções, exemplos e estrutura. Bons prompts reduzem alucinações, impõem o formato de saída e melhoram a precisão da tarefa sem retreinar o modelo.
Busque em todas as páginas da documentação
A engenharia de prompts molda o comportamento de LLMs através de instruções, exemplos e estrutura. Bons prompts reduzem alucinações, impõem o formato de saída e melhoram a precisão da tarefa sem retreinar o modelo.
Cartão de receita de referência rápida - pronto para copiar e colar.
SYSTEM = """Você é um revisor de código Python.
- Sinalize bugs, problemas de segurança e problemas de estilo.
- Responda em marcadores.
- Se o código estiver bom, diga "LGTM"."""
messages = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": f"Revise este código:\n```python\n{code}\n```"},
]Quando usar isso:
"""prompt_engineering.py - prompts de sistema, few-shot, chain-of-thought e estruturados."""
from __future__ import annotations
from openai import OpenAI
client = OpenAI()
# Chain-of-thought para raciocínio
cot_messages = [
{"role": "system", "content": "Resolva problemas de matemática passo a passo. Mostre seu trabalho e, em seguida, dê a resposta final na última linha como RESPOSTA: <número>."},
{"role": "user", "content": "Uma loja tem 24 maçãs. Elas vendem 3/8 delas. Quantas restam?"},
]
cot = client.chat.completions.create(model="gpt-4o-mini", messages=cot_messages, temperature=0)
print(cot.choices[0].message.content)
# Classificação Few-shot
few_shot = [
{"role": "system", "content": "Classifique tickets de suporte como faturamento, técnico ou conta. Responda com apenas uma palavra."},
{"role": "user", "content": "Fui cobrado duas vezes este mês"},
{"role": "assistant", "content": "faturamento"},
{"role": "user", "content": "A API retorna erros 500 em POST /users"},
{"role": "assistant", "content": "técnico"},
{"role": "user", "content": "Preciso mudar meu endereço de e-mail"},
]
result = client.chat.completions.create(model="gpt-4o-mini", messages=few_shot, temperature=0)
print("classificação:", result.choices[0].message.content)
# QA com Grounding - use apenas o contexto fornecido
context = "Nosso limite de taxa da API é de 1000 requisições/minuto para planos Pro e 100/minuto para planos Gratuitos."
grounded = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Responda APENAS usando o contexto fornecido. Se a resposta não estiver no contexto, diga 'Não tenho essa informação.'"},
{"role": "user", "content": f"Contexto:\n{context}\n\nPergunta: Qual é o limite de taxa do plano Pro?"},
],
temperature=0,
)
print(grounded.choices[0].message.content)O que isso demonstra:
temperature=0 para classificação e extração determinísticas.| Padrão | Técnica | Ideal Para |
|---|---|---|
| Zero-shot | Apenas instruções | Tarefas simples e bem definidas |
| Few-shot | 2-5 exemplos | Classificação, extração |
| Chain-of-thought | "Pense passo a passo" | Matemática, lógica, raciocínio multi-etapas |
| Grounded | "Use apenas este contexto" | RAG, QA factual |
| Baseado em função | "Você é um X sênior" | Nível de tom e especialização |
# Prompts de template com variáveis
def build_review_prompt(code: str, focus: str) -> list[dict]:
return [
{"role": "system", "content": f"Você é um revisor de código focado em {focus}."},
{"role": "user", "content": f"```python\n{code}\n```"},
]
# Armazene prompts em arquivos versionados
from pathlib import Path
SYSTEM_PROMPT = Path("prompts/reviewer.txt").read_text()response_format.---, tags XML, seções markdown).| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Engenharia de prompts | Iteração rápida, sem dados de treinamento | Necessita de comportamento consistente em escala |
| Fine-tuning | Milhares de exemplos rotulados | Poucos exemplos (use few-shot) |
| RAG | Respostas precisam de dados atuais/privados | O modelo já sabe a informação |
| Saída estruturada / ferramentas | Necessita de esquema garantido | Texto livre é aceitável |
temperature=0 para raciocínio reproduzível.<user_input>...</user_input>.prompts/v2/reviewer.txt).<context>{retrieved_docs}</context>
<question>{user_query}</question>Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026