One-Shot Prompting

O One-Shot Prompting (ou Prompting com Um Exemplo) é o ponto intermediário perfeito entre o Zero-Shot (apenas instruções) e o Few-Shot (múltiplos exemplos). Ele consiste em fornecer exatamente um único exemplo de entrada e saída esperada antes de apresentar o problema ou a pergunta final que você deseja que a LLM resolva.

A Escala de “Shots” na Engenharia de Prompt

Para entender o One-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).

Como Funciona na Prática?

No One-Shot, a estrutura do prompt é dividida de forma clara em três partes:

  1. A Instrução Geral: O comando do que deve ser feito.
  2. O Exemplo (O “Shot”): Um par completo de Entrada Esperada \rightarrow Saída Desejada.
  3. A Entrada Real: A pergunta ou dado sobre o qual o modelo deve atuar.

Exemplo Prático: Padronização de JSON

Imagine que você precisa converter relatórios de erros em formato JSON para integrar a um sistema.

Markdown

[Instrução]
Converta o log de erro textual em um objeto JSON válido.

[Exemplo (Shot)]
Entrada: "Erro 404 às 14:32 no servidor de autenticação ao tentar conectar o usuário 102."
Saída: 
{
  "codigo": 404,
  "horario": "14:32",
  "servico": "autenticacao",
  "usuario_id": 102
}

[Entrada Real]
Entrada: "Erro 500 às 09:15 no banco de dados principal ao tentar cadastrar o usuário 884."
Saída:
Code language: JavaScript (javascript)

Resposta gerada pela LLM:

JSON

{
  "codigo": 500,
  "horario": "09:15",
  "servico": "banco_de_dados_principal",
  "usuario_id": 884
}
Code language: JSON / JSON with Comments (json)

Por que usar One-Shot em vez de Zero-Shot?

Mesmo sendo apenas um exemplo, a diferença de desempenho entre Zero-Shot e One-Shot pode ser gigantesca em certos cenários:

  • Elimina a Ambiguidade do Formato: Explicar em texto como você quer uma estrutura (“crie um objeto JSON com chaves em minúsculo e valores numéricos para ID“) costuma ser vago. Mostrar um único exemplo ensina a sintaxe exata instantaneamente.
  • Define o Nível de Detalhamento: Se você pedir um resumo em Zero-Shot, o modelo pode gerar 2 linhas ou 3 parágrafos. Ao dar um exemplo de resumo com 3 tópicos, a LLM entende a métrica e a densidade de informação desejadas.
  • Economia de Tokens: Comparado ao Few-Shot (que gasta muitos tokens enviando 4 ou 5 exemplos na janela de contexto), o One-Shot consome pouquíssima cota de tokens e entrega quase a mesma precisão em tarefas de formatação e tom.

O Risco de Overfitting/Super-Alinhamento

O maior perigo do One-Shot Prompting é escolher um exemplo ruim ou excessivamente específico:

  • Viés do Exemplo único: Como o modelo tem apenas um ponto de referência, ele pode tentar copiar características do exemplo que deveriam ser variáveis.
  • Exemplo do problema: Se o seu único exemplo de JSON usar a chave "status": "erro", o modelo pode achar que todas as saídas devem ter a palavra "erro", mesmo que a nova entrada seja um log de sucesso.

Regra de ouro: Escolha um exemplo representativo, neutro e impecável do ponto de vista sintático. Se a tarefa tiver muitos casos de borda (edge cases), passe para o Few-Shot Prompting.