Few-shot prompting

O Few-Shot Prompting (ou Engenharia de Prompt com Poucos Exemplos) é uma das técnicas mais simples e diretas para orientar o comportamento de uma LLM.

Em termos simples, consiste em fornecer no próprio prompt alguns exemplos de entrada e saída esperada (os chamados “shots”) antes de fazer a pergunta real.

A Escala de “Shots” na Engenharia de Prompt

Para entender o Few-Shot, vale compará-lo com as outras abordagens de instrução:

  • Zero-Shot Prompting (0 Exemplos): Você pede para a IA realizar a tarefa apenas com instruções diretas, sem nenhum exemplo.
    • Prompt: “Classifique o sentimento do texto: ‘O produto chegou atrasado, mas o suporte resolveu rapidamente”.
    • Saída/Resposta da LLM: “Neutro / Misto”.
  • One-Shot Prompting (1 Exemplo): Você dá um único exemplo de referência para guiar o formato ou o tom de resposta.
    • Prompt:
      • Texto: “O atendimento foi terrível.” \rightarrow Sentimento: Negativo;
      • Texto: “O produto chegou atrasado, mas o suporte resolveu rapidamente.” \rightarrow Sentimento:
  • Few-Shot Prompting (2 a 5 Exemplos): Você fornece um pequeno conjunto de exemplos padronizados (geralmente entre 2 e 5) para que o modelo identifique o padrão por In-Context Learning (Aprendizado no Contexto).

Exemplo Prático: Formatação Rígida de Saída

Imagine que você quer extrair entidades de um texto e formatá-las em um padrão sintático muito específico.

Prompt Few-Shot enviado ao modelo:

Extraia o produto e o valor dos itens abaixo seguindo estritamente o padrão especificado.

Entrada: “Comprei uma mesa de escritório por 450 reais e valeu cada centavo”

Saída: [PRODUTO: Mesa de Escritório] | [VALOR: R$ 450,00]

Entrada: “O plano anual do software custou 1200 dólares na promoção”

Saída: [PRODUTO: Plano Anual do Software] | [VALOR: US$ 1200,00]

Entrada: “Paguei cerca de 80 reais na capa de proteção do notebook”

Saída: [PRODUTO: Capa de Proteção do Notebook] | [VALOR: R$ 80,00]

Entrada: “Adquiri a licença do compilador C++ por 300 euros no mês passado”

Saída:

O modelo usará a sua janela de atenção para alinhar as saídas e responderá instantaneamente no formato exato:

[PRODUTO: Licença do Compilador C++] | [VALOR: € 300,00]

Por que o Few-Shot Prompting Funciona?

Sob o ponto de vista das redes neurais, o Few-Shot não altera nenhum parâmetro interno do modelo. Em vez disso, ele aproveita o Mecanismo de Atenção:

  1. Ativação de Padrões Semânticos: Os exemplos agem como “âncoras” na janela de contexto. O mecanismo de autoatenção calcula a relação entre os exemplos e a nova entrada, ativando caminhos de probabilidade mais específicos no vocabulário de saída.
  2. Demonstração do Esquema (Schema): É muito mais fácil para uma LLM inferir regras complexas vendo instâncias resolvidas do que lendo descrições abstratas de regras em texto corrido.
  3. Calibragem do Tom e Estrutura: Ele estabelece limites claros de extensão da resposta, vocabulário permitido e estilo linguístico.

Evolução: Chain-of-Thought (CoT) Few-Shot

Uma variação avançada do Few-Shot é a introdução do Raciocínio em Cadeia (Chain-of-Thought) nos próprios exemplos.

Se você der exemplos onde a saída não é apenas a resposta final, mas o passo a passo do raciocínio lógico, a LLM passará a replicar essa estrutura de raciocínio antes de responder à pergunta final, aumentando drasticamente a taxa de acerto em problemas de lógica, matemática e programação.

Exemplo de Few-Shot CoT:

Pergunta: A cantina da universidade tinha 23 sanduíches. Vendeu 18 no almoço e preparou mais 15 à tarde. Quantos sanduíches há agora?

Raciocínio: Começamos com 23. Vender 18 significa subtrair: 23 – 18 = 5. Preparar mais 15 significa somar: 5 + 15 = 20.

Resposta: 20.

Pergunta: Um servidor tinha 12 instâncias ativas. 4 foram encerradas por inatividade e o autoscaling subiu o dobro do número restante. Quantas instâncias estão ativas?

Raciocínio:(O modelo seguirá o mesmo padrão de resolução explícita)

Boas Práticas e Cuidados

  • Ordem e Viés dos Exemplos: LLMs são sensíveis à ordem dos exemplos fornecidos. Se todos os seus exemplos pertencerem a apenas uma classe (ex: todos exemplos de sentimento “Positivo”), o modelo tenderá a ser enviesado para essa classe no teste real.
  • Consistência de Formatação: Mantenha os delimitadores e rótulos (Entrada:, Saída:, ->, etc.) 100% idênticos em todos os shots.
  • Custo em Tokens: Como os exemplos ocupam espaço na Janela de Contexto, adicionar muitos shots aumenta o consumo de tokens de entrada em cada requisição à API.