beginner30 minLição 1 de 5

Fundamentos da Engenharia de Prompt

Aprenda conceitos essenciais: prompts, tokenização, papéis, configurações de temperatura e estratégias básicas de prompting.

Fundamentos da Engenharia de Prompt

O que é um Prompt?

Um prompt é a entrada que você fornece a um LLM para obter uma resposta específica. É a unidade fundamental de interação com modelos de IA modernos como GPT-4, Claude e Llama. A qualidade do seu prompt determina diretamente a qualidade da saída do modelo — lixo entra, lixo sai continua sendo tão verdadeiro para IA quanto para software tradicional.

Fluxo de Entrada/Saída do LLM

100%

Ciclo de Vida Completo de uma Chamada de API

100%
ℹ️Note

Cada chamada de API passa por múltiplos estágios: tokenização converte seu texto em números que o modelo entende, inferência gera tokens probabilisticamente e detokenização converte os resultados de volta para texto. Entender esse pipeline ajuda a depurar problemas como limites de token ou saídas inesperadas.


Tokenização

Tokenização é o processo de dividir o texto em unidades menores (tokens) que o modelo consegue entender. Modelos diferentes usam algoritmos de tokenização diferentes — GPT-4 usa Byte-Pair Encoding (BPE), enquanto outros modelos podem usar SentencePiece ou WordPiece.

Fatos sobre Tokens:

  • 1 token ≈ 4 caracteres em inglês
  • 100 tokens ≈ 75 palavras
  • Modelos diferentes têm tokenizadores diferentes
  • Tokens especiais (como <|endoftext|>) também contam para seu limite

Comparação de Tokenizadores entre Modelos

ModeloTipo de TokenizadorTamanho do VocabulárioAprox. Tokens por Palavra (Inglês)Características Especiais
GPT-4 / GPT-3.5BPE (Byte-Pair Encoding)~100K1.3OpenAI tiktoken, lida bem com código
Claude (Anthropic)BPE (Byte-Pair Encoding)~100K1.3Eficiente para texto multilíngue
Llama 2/3BPE (SentencePiece)~32K1.4Vocabulário menor, bom para memória limitada
Gemini (Google)SentencePiece~256K1.2Maior vocabulário, eficiente para CJK
python
# Exemplo: Tokenização com tiktoken da OpenAI import tiktoken # Carrega o tokenizador para GPT-4 encoding = tiktoken.encoding_for_model("gpt-4") text = "Olá, como você está?" tokens = encoding.encode(text) print(f"Texto original: {text}") print(f"Tokens: {tokens}") print(f"Quantidade de tokens: {len(tokens)}") # Decodifica de volta para texto decoded = encoding.decode(tokens) print(f"Decodificado: {decoded}")
💡Tip

Sempre estime o uso de tokens antes de enviar prompts grandes. Um prompt de 1000 tokens + resposta custa aproximadamente $0.01-0.03 com GPT-4, mas os custos se acumulam rapidamente em produção. Use tiktoken ou o tokenizador do seu modelo para contar tokens no lado do cliente antes da chamada de API.

Limites de Janela de Contexto

100%
📌Important

Cada modelo tem uma janela de contexto (GPT-4: 8K-128K, Claude 3: 200K, Gemini: 32K-1M). A soma da sua mensagem de sistema + histórico da conversa + entrada do usuário + saída gerada deve caber dentro desta janela. Uma vez excedida, o modelo trunca mensagens mais antigas — potencialmente perdendo contexto importante.


Papéis: Sistema vs Usuário vs Assistente

LLMs usam um histórico de conversa com três papéis distintos:

PapelPropósitoExemplo de Uso
SistemaDefine comportamento, personalidade e contexto para toda a conversa"Você é um tutor de Python prestativo. Seja conciso e use exemplos de código."
UsuárioRepresenta a entrada ou pergunta do humano"Como ordeno uma lista em Python?"
AssistenteRepresenta as respostas anteriores da IA no histórico"Você pode usar a função sorted() ou o método .sort()..."
ℹ️Note

A mensagem de sistema é particularmente poderosa—ela persiste durante toda a conversa e guia como o modelo responde a todas as mensagens subsequentes.

📌Important

Melhores práticas de prompt de sistema: Seja específico sobre a persona do modelo, formato de saída e restrições. Inclua salvaguardas como "Se você não souber a resposta, diga." Evite instruções vagas como "seja útil" — em vez disso, descreva como ser útil parece no seu contexto.

python
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="gpt-4", messages=[ # Papel sistema: Define a persona da IA {"role": "system", "content": "Você é um tutor de matemática conciso. Explique conceitos de forma simples."}, # Papel usuário: A pergunta real {"role": "user", "content": "O que é o teorema de Pitágoras?"} ] ) # Papel assistente: A resposta assistant_reply = response.choices[0].message.content print(assistant_reply)

Exemplos de Diferentes Provedores

python
# API Anthropic Claude import anthropic client = anthropic.Anthropic() response = client.messages.create( model="claude-3-opus-20240229", system="Você é um tutor de matemática conciso. Explique conceitos de forma simples.", messages=[ {"role": "user", "content": "O que é o teorema de Pitágoras?"} ] ) print(response.content[0].text)
python
# API Google Gemini import google.generativeai as genai genai.configure(api_key="YOUR_API_KEY") model = genai.GenerativeModel( model_name="gemini-1.5-pro", system_instruction="Você é um tutor de matemática conciso. Explique conceitos de forma simples." ) response = model.generate_content("O que é o teorema de Pitágoras?") print(response.text)

Temperature e Top_p

Esses parâmetros controlam a aleatoriedade e a criatividade da saída:

ParâmetroIntervaloPropósitoValores Típicos
Temperature0-2Controla aleatoriedade. Menor = mais determinístico0.0 (determinístico), 0.7 (balanceado), 1.5 (criativo)
Top_p0-1Amostragem por núcleo. Considera apenas tokens com massa de probabilidade cumulativa0.1 (focado), 0.9 (diverso)

Como a Temperature Realmente Funciona

Na temperature 0, o modelo sempre escolhe o token de maior probabilidade (decodificação gulosa). Conforme a temperature aumenta, tokens de menor probabilidade se tornam mais propensos a serem escolhidos, produzindo saídas mais variadas e criativas.

100%
💡Tip

Escolhendo valores de temperature: Para tarefas factuais (classificação, extração, Q&A), use 0.0-0.3. Para tarefas criativas (escrita de histórias, brainstorming), use 0.7-1.2. Evite temperatures acima de 1.5 a menos que você queira saída quase aleatória — a saída "criativa" rapidamente se torna incoerente.

⚠️Warning

Definir temperature > 1.0 ou top_p > 0.9 pode levar a respostas incoerentes ou alucinadas. Para tarefas factuais, use temperature 0.0-0.5.

python
from openai import OpenAI client = OpenAI() # Escrita criativa - temperature alta creative_response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "Escreva uma história de uma frase sobre um robô"}], temperature=1.8, # Muito criativo top_p=0.95 ) print("Criativo:", creative_response.choices[0].message.content) # Resposta factual - temperature baixa factual_response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "Qual é o ponto de ebulição da água ao nível do mar?"}], temperature=0.0, # Determinístico top_p=0.1 ) print("Factual:", factual_response.choices[0].message.content)

Interação entre Temperature e Top_p

CenárioTemperatureTop_pEfeito
Factual estrito0.01.0Modelo não assume riscos, determinístico
Escrita criativa1.00.95Seleção ampla de tokens, alta criatividade
Criativo focado0.80.5Criativo mas dentro de tokens prováveis
Geração de código0.20.9Maioria determinístico, variação leve
Brainstorming1.20.95Alta variedade, muitas alternativas
ℹ️Note

A maioria das APIs recomenda ajustar apenas um parâmetro. Se você definir ambos, temperature primeiro suaviza a distribuição de probabilidade, depois top_p corta a cauda. Definir ambos para valores extremos simultaneamente pode produzir resultados muito estranhos.


Zero-Shot Prompting

Zero-shot prompting é quando você pede ao modelo para executar uma tarefa sem nenhum exemplo.

Classifique este email como "importante", "spam" ou "neutro": "URGENTE: Sua conta bancária foi comprometida. Clique aqui para verificar."

Modelo Básico de Estrutura de Prompt

100%

Quando o Zero-Shot Funciona Melhor

Tipo de TarefaDesempenho Zero-ShotNotas
Classificação comumBomModelos conhecem categorias intrinsecamente
Q&A simplesExcelenteConhecimento factual dos dados de treino
TraduçãoVariávelDepende do par de idiomas e treinamento
Tarefas altamente especializadasRuimPrecisa de exemplos ou fine-tuning
Formatos novosRuimModelos precisam de exemplos de novas estruturas
ℹ️Note

Zero-shot funciona surpreendentemente bem para tarefas que o modelo encontrou durante o treinamento. Ele luta com casos de borda, domínios altamente especializados ou requisitos precisos de formato — é aí que entram as técnicas few-shot e avançadas.


Perguntas de Prática

Practice Question

Um engenheiro de software quer usar um LLM para um chatbot de suporte ao cliente. Qual papel da conversa deve ser usado para definir a personalidade e as diretrizes de comportamento do chatbot?

Practice Question

Ao tokenizar a frase "Olá, como você está?" usando o tiktoken da OpenAI, o que acontece durante o processo de tokenização?

Practice Question

Um desenvolvedor está construindo um assistente de diagnóstico médico e precisa que o modelo forneça respostas consistentes e factuais. Qual configuração de temperature ele deve usar?

Practice Question

Um engenheiro de prompt precisa que o modelo classifique emails sem fornecer nenhum exemplo no prompt. Qual abordagem está sendo usada?

Practice Question

O que o parâmetro top_p (amostragem por núcleo) controla ao gerar respostas do LLM?

Practice Question

Uma equipe construindo um chatbot multilíngue precisa de um modelo que lide eficientemente com japonês, coreano e chinês. Baseado na comparação de tokenizadores, qual tokenizador é mais eficiente para idiomas CJK?

Practice Question

Um engenheiro de prompt envia um documento de 150K tokens para um modelo com janela de contexto de 128K e define max_tokens como 4000. O que acontecerá?

Practice Question

Usar temperature=0.8 com top_p=0.5 juntos produz que tipo de comportamento?

Practice Question

Um desenvolvedor nota que sua chamada de API GPT-4 retornou 150 tokens na resposta mas ele definiu max_tokens como 500. O finish_reason foi 'stop'. O que isso significa?

Practice Question

Um engenheiro de prompt está comparando um modelo Llama 2 (32K vocabulário) com um GPT-4 (100K vocabulário) para uma tarefa de geração de código. Qual trade-off eles devem considerar?


Success

Principais Aprendizados:

  • Um prompt é a entrada de um LLM, e a tokenização converte texto para tokens legíveis pelo modelo
  • Os três papéis da conversa são: sistema (persona), usuário (entrada humana), assistente (respostas da IA)
  • Temperature (0-2) controla aleatoriedade; valores menores = saídas mais determinísticas
  • Top_p (0-1) realiza amostragem por núcleo, limitando a probabilidade de seleção de tokens
  • Zero-shot prompting funciona sem exemplos; boa estrutura básica = Instrução + Contexto + Entrada + Formato de Saída
  • Limites de janela de contexto restringem tokens totais; sempre estime antes de enviar entradas grandes
  • Diferentes provedores (OpenAI, Anthropic, Google) têm padrões de API similares mas bibliotecas diferentes
Progresso20%