Menu

Few-shot prompting: exemplos e quando usar

Few-shot prompting coloca no prompt alguns exemplos resolvidos, cada um com uma entrada e a resposta que você quer, para que o modelo copie o padrão. É o jeito mais rápido de ensinar um formato, um conjunto de rótulos ou um estilo da casa que o modelo não adivinharia.

Você pode editar cada prompt desta página e depois abri-lo no ChatGPT, no Claude ou em outro app de IA.

Few-shot prompting é mostrar ao modelo alguns exemplos resolvidos de uma tarefa, cada um com uma entrada e a resposta que você quer, antes de dar a ele a entrada real. O modelo lê o padrão e o continua. Exemplos são o jeito mais rápido de fixar coisas difíceis de dizer em palavras: onde fica a fronteira entre duas categorias, a forma exata da saída ou a voz em que a sua equipe escreve.

Como o few-shot prompting funciona

Brown et al. 2020, "Language Models are Few-Shot Learners", mostraram que o GPT-3 conseguia aprender uma tarefa nova a partir de algumas demonstrações colocadas no prompt, sem nenhum retreinamento. Isso se chama aprendizado em contexto (in-context learning): nada no modelo muda, e os exemplos só afetam a resposta àquele prompt. Da próxima vez, os exemplos precisam estar lá de novo.

Os nomes seguem o número de exemplos. Um prompt zero-shot não tem nenhum, um prompt one-shot tem um, e um prompt few-shot tem vários, normalmente entre dois e alguns poucos.

Zero-shot e few-shot lado a lado

As duas abas abaixo pedem a mesma coisa com a mesma instrução. A única diferença é que a segunda aba acrescenta quatro exemplos com rótulo antes do chamado real.

Classifique o chamado de suporte como bug, cobrança, conta ou sugestão. Chamado: Redefini minha senha, mas a nova não funciona, continua aparecendo credenciais inválidas.
Try it
Example replyReplies vary between models and runs.

Categoria: bug

O usuário redefiniu a senha, mas a nova senha é rejeitada no login. Isso aponta para um problema no fluxo de redefinição de senha, então provavelmente é um bug no sistema de autenticação.

Os exemplos mudaram duas coisas. A primeira é o formato: a resposta zero-shot acrescentou um título em negrito e uma explicação, enquanto a resposta few-shot seguiu os exemplos e deu uma palavra, que um script consegue ler diretamente. A segunda é a decisão. "Bug" é uma leitura razoável do chamado, e a maioria das pessoas escolheria essa. Mas esta equipe classifica problemas de login como conta, e o terceiro exemplo diz isso sem uma única palavra de explicação. Nenhuma instrução mencionou essa regra; os exemplos a carregaram.

Quantos exemplos usar

Comece com dois a cinco. Isso basta para a maioria das tarefas de formatação e classificação e mantém o prompt curto.

  • Um exemplo mostra um formato, mas o modelo tende a copiá-lo de perto demais. Se o único exemplo for um resumo de 30 palavras sobre uma mudança de preço, o próximo resumo pode sair com 30 palavras e estranhamente focado em dinheiro.
  • Dois ou três exemplos diferentes deixam o modelo ver o que eles têm em comum (o padrão) e o que varia (os detalhes).
  • Em classificação, inclua pelo menos um exemplo para cada rótulo e depois acrescente os casos limítrofes que deram errado sem exemplos.
  • Passando de alguns poucos, os ganhos costumam diminuir enquanto cada requisição fica mais longa, o que custa tokens e tempo. Se você precisa de dezenas de exemplos para acertar, talvez a tarefa precise de uma instrução mais clara ou de outra abordagem.

Como escolher bons exemplos

O modelo aprende com tudo o que os seus exemplos têm em comum, não só com a coisa que você queria ensinar.

  • Cubra os casos difíceis. Exemplos fáceis ensinam pouco. Os exemplos mais úteis ficam na fronteira, como o chamado de login acima.
  • Varie a superfície. Misture entradas curtas e longas, assuntos diferentes e formas diferentes de dizer as coisas. Se todas as avaliações positivas dos seus exemplos forem curtas, o modelo pode tratar o tamanho como o sinal.
  • Equilibre os rótulos e embaralhe a ordem. Os modelos tendem a puxar para o rótulo que aparece mais vezes nos exemplos e para o que aparece por último.
  • Confira cada exemplo. Um erro em um exemplo é uma instrução para cometer esse erro.
  • Use entradas reais. Exemplos tirados dos seus dados de verdade se parecem muito mais com o que o modelo vai ver do que exemplos inventados.

Mantenha o formato idêntico

Todos os exemplos devem usar os mesmos rótulos, separadores e maiúsculas, e a entrada real deve ter exatamente a mesma cara das entradas de exemplo. No prompt dos chamados, cada exemplo é "Chamado:" e depois "Rótulo:", e o prompt termina com uma linha "Rótulo:" em aberto, o que deixa só uma coisa natural para escrever em seguida.

Para exemplos mais longos, envolva cada um em marcadores claros, como tags <example>, para que o modelo saiba onde um termina e o próximo começa; veja delimitadores e tags XML. Na API, você também pode fornecer os exemplos como turnos anteriores da conversa: uma mensagem do usuário com a entrada de exemplo e depois uma mensagem do assistente com a resposta, repetindo para cada exemplo.

Prompts few-shot dão bons templates de prompt reutilizáveis: a instrução e os exemplos ficam fixos e só a entrada muda. O bloco abaixo reescreve uma mensagem de commit no estilo de uma equipe. Digite a sua própria mensagem no campo e desligue a parte dos exemplos para ver quanto do estilo eles carregam.

Mensagens de commit no estilo da casa
Fill in
Parts
Reescreva a mensagem de commit no estilo da nossa equipe. Responda só com a mensagem reescrita.
Antes: coloquei aquele lance de exportar csv na página de relatórios Depois: feat(reports): adiciona exportação em CSV Antes: atualizei o lodash por causa do aviso de segurança Depois: chore(deps): atualiza lodash para corrigir alerta de segurança Antes: Corrigido crash quando o carrinho tá vazio!! Depois: fix(cart): evita crash com carrinho vazio Antes: erro de digitação no readme Depois: docs(readme): corrige erro de digitação
Antes: fiz a busca ignorar maiúsculas e minúsculas Depois:
Try it
Example replyReplies vary between models and runs.

feat(search): faz a busca ignorar maiúsculas e minúsculas

Nenhuma das regras está escrita: um tipo em minúsculas, um escopo entre parênteses, um verbo no presente, nenhum ponto final. Os exemplos mostram as quatro, e a resposta as segue. Com os exemplos desligados, o modelo ainda melhora a mensagem, mas precisa adivinhar um estilo, e nada garante que o palpite dele bata com o seu.

Exemplos few-shot também podem demonstrar raciocínio, e não só respostas. Exemplos resolvidos que mostram os passos são a forma como o chain of thought foi apresentado pela primeira vez. Com modelos que raciocinam internamente antes de responder, limite os exemplos a entradas, respostas e formato: passos de raciocínio roteirizados podem desviá-los de um caminho melhor, e alguns fornecedores recomendam tentar zero-shot primeiro com esses modelos.

Perguntas frequentes

O que é few-shot prompting?

Few-shot prompting é incluir no prompt alguns exemplos de uma tarefa, cada um com uma entrada e a saída correta, antes da entrada real. O modelo continua o padrão que os exemplos definem. É mais útil para categorias próprias, formatos incomuns e estilos da casa, que são mais fáceis de mostrar do que de descrever.

Quantos exemplos um prompt few-shot deve ter?

De dois a cinco é um bom ponto de partida para a maioria das tarefas. Em classificação, inclua pelo menos um exemplo por rótulo, mais os casos limítrofes em que o modelo errou sem exemplos. Passando de alguns poucos, cada exemplo extra costuma ajudar menos e deixa cada requisição mais longa.

O que é one-shot prompting?

One-shot prompting dá ao modelo exatamente um exemplo. Isso basta para mostrar um formato, mas o modelo tende a copiar esse único exemplo de perto demais, incluindo o tamanho, a redação e até o assunto. Um segundo exemplo, diferente, mostra ao modelo quais características são o padrão e quais são acidentes.

O modelo aprende com os meus exemplos?

Só no pedido atual. Os exemplos moldam a resposta por estarem no contexto; os pesos do modelo não mudam, e nada é lembrado na próxima conversa. Isso se chama aprendizado em contexto (in-context learning), e é por isso que um prompt few-shot precisa levar os exemplos toda vez que você o usa.

Exemplos ruins podem piorar a saída?

Podem. O modelo copia tudo o que os exemplos têm em comum, incluindo erros, tamanho e um tom que você não pretendia. Se a maioria dos exemplos tem o mesmo rótulo, o modelo também tende a puxar para esse rótulo. Confira se os seus exemplos estão corretos, variados e equilibrados.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR