Zero-shot prompting é pedir a um modelo que faça uma tarefa só a partir de uma instrução, sem mostrar a ele nenhum exemplo da resposta que você quer. "Traduza este parágrafo para o espanhol" e "Resuma este e-mail em duas frases" são prompts zero-shot. É o jeito padrão de usar modelos de chat e, para tarefas comuns, costuma ser tudo de que você precisa.
O que zero-shot significa
Em aprendizado de máquina, um "shot" é um exemplo resolvido. Os termos são mais antigos que os modelos de chat, mas o sentido que eles têm no mundo dos prompts foi popularizado por Brown et al. 2020, "Language Models are Few-Shot Learners", que testou o GPT-3 em três situações: uma descrição da tarefa com zero, uma ou algumas demonstrações no prompt, e nenhum retreinamento em nenhuma delas. Para aquele modelo, alguns exemplos geralmente eram melhores do que nenhum.
Desde então, os modelos de chat foram muito treinados para seguir instruções, e é por isso que um pedido simples funciona tão bem hoje. Um prompt zero-shot é exatamente a situação para a qual eles foram treinados: alguém descreve um trabalho em palavras e espera que ele seja feito.
Zero-shot não significa zero contexto. Um bom prompt zero-shot ainda diz o público, cola a entrada e descreve o formato e os limites. A única coisa que ele deixa de fora é um exemplo pronto da saída.
Um prompt zero-shot bem feito
O prompt abaixo extrai tarefas de anotações de reunião sem nenhum exemplo da saída, só com uma descrição precisa dela. Desligue partes para ver quais linhas fazem o trabalho.
Sync da sprint, terça
A Priya vai corrigir o timeout do login antes de sexta.
Conversamos sobre trocar de provedor de CI, nada decidido.
Tom fica com as notas de versão da 2.4.
Alguém precisa atualizar o documento de onboarding.
Lena: eu reviso as notas do Tom até quinta.Priya: Corrigir o timeout do login (antes de sexta) Tom: Escrever as notas de versão da 2.4 Sem responsável: Atualizar o documento de onboarding Lena: Revisar as notas de versão do Tom (até quinta)
A linha de formato faz o papel que um exemplo faria: ela detalha a forma exata de cada linha, então não há nada para copiar. Desligue-a e a resposta escolhe uma forma própria, muitas vezes uma lista com marcadores e nomes em negrito, que é fácil de ler, mas não cola direito em um gerenciador de tarefas. Desligue as restrições e a discussão sobre CI pode aparecer como tarefa, porque nada disse ao modelo que assuntos sem decisão não contam.
Quando o zero-shot basta
O zero-shot funciona quando o modelo consegue deduzir tudo a partir das suas palavras:
- A tarefa é comum. Resumir, traduzir, explicar, corrigir a gramática e escrever uma função a partir de uma especificação clara são tarefas que o modelo viu inúmeras vezes no treinamento.
- Você consegue descrever a saída com exatidão. "Uma linha por item, responsável primeiro" é tão claro quanto um exemplo. Veja saída estruturada para descrever formatos que um programa vai ler.
- As categorias significam o que dizem. Separar avaliações em positivas e negativas normalmente dispensa exemplos, porque esses rótulos significam a mesma coisa para quase todo mundo.
Quando acrescentar exemplos
Algumas coisas são difíceis de colocar em palavras, e é aí que os prompts zero-shot começam a errar:
- As suas próprias fronteiras. Se a sua equipe de suporte classifica "não consigo entrar" como problema de conta e não como bug, o modelo não tem como saber. Ele vai escolher a leitura que a maioria das pessoas faria.
- Um estilo da casa. As mensagens de commit da sua equipe ou o tom da sua newsletter são mais fáceis de mostrar do que de descrever.
- Erros repetidos por pouco. Se você já reescreveu a instrução duas vezes e a saída continua um pouco errada do mesmo jeito, pare de reescrever e mostre duas ou três respostas certas.
Isso é prompt few-shot. Um bom hábito é começar com zero-shot, olhar o que volta e acrescentar exemplos só para a coisa específica que sai errada.
Chain of thought zero-shot
Kojima et al. 2022, "Large Language Models are Zero-Shot Reasoners", descobriram que acrescentar uma frase, "Let's think step by step" ("Vamos pensar passo a passo"), deixava os modelos grandes visivelmente melhores em problemas de aritmética, simbólicos e de lógica, sem nenhum exemplo. A frase faz o modelo escrever os passos intermediários antes da resposta, e cada passo escrito vira contexto para o seguinte. O método deles usava duas chamadas: a primeira produzia o raciocínio e a segunda pedia a resposta final.
No bloco abaixo, a primeira aba força uma resposta imediata e a segunda dá espaço para o modelo trabalhar.
12h40
A primeira resposta esqueceu os 10 minutos recuperados pelo trem: o tipo de deslize que acontece quando o modelo precisa se comprometer com a resposta nos primeiros tokens. Um modelo atual pode muito bem acertar esta de qualquer jeito; a diferença cresce com o número de passos do problema. A segunda versão tem mais uma vantagem: cada passo fica visível, então você consegue ver onde a resposta errou.
Modelos que raciocinam internamente antes de responder já fazem esse trabalho sem que ninguém peça, então "Vamos pensar passo a passo" acrescenta pouco para eles, além de uma resposta mais longa. Chain of thought aprofunda a técnica, incluindo a versão few-shot.
Zero-shot e few-shot lado a lado
| Zero-shot | Few-shot | |
|---|---|---|
| O que o prompt contém | Instruções, contexto e entrada | O mesmo, mais alguns pares de entrada e resposta |
| Melhor para | Tarefas comuns com uma saída fácil de descrever | Rótulos próprios, formatos incomuns, estilo da casa |
| Custo | Prompt curto | Prompt mais longo, mais tokens por chamada |
| Falha típica | Escolhe a interpretação mais comum, não a sua | Copia padrões acidentais dos exemplos |
Perguntas frequentes
O que é zero-shot prompting?
Zero-shot prompting é dar uma tarefa a um modelo de linguagem só com instruções, sem nenhum exemplo resolvido da saída. "Resuma este e-mail em duas frases" é um prompt zero-shot. Os modelos de chat atuais são treinados para seguir instruções, então prompts zero-shot dão conta bem da maioria das tarefas do dia a dia.
Qual é a diferença entre prompt zero-shot e few-shot?
Um prompt zero-shot descreve a tarefa em palavras. Um prompt few-shot acrescenta alguns exemplos, cada um com uma entrada e a resposta que você quer, para que o modelo possa copiar o padrão. Comece com zero-shot; passe para few-shot quando a saída continuar errando um formato ou uma distinção que é mais fácil de mostrar do que de descrever.
Por que se chama zero-shot?
Em aprendizado de máquina, um "shot" é um exemplo resolvido. O artigo do GPT-3 de Brown et al., de 2020, "Language Models are Few-Shot Learners", testou o modelo com zero, uma ou algumas demonstrações da tarefa no prompt, e isso tornou os nomes padrão no mundo dos prompts: zero-shot, one-shot e few-shot.
Quando o prompt zero-shot não funciona?
Ele tem dificuldade quando a tarefa depende de regras que só você conhece, como as categorias da sua equipe ou o estilo da casa, quando o formato da saída é incomum e em raciocínios de várias etapas em que o modelo responde rápido demais. Exemplos resolvem os dois primeiros casos; pedir que o modelo trabalhe passo a passo ajuda no terceiro.
O que é chain of thought zero-shot?
É um prompt zero-shot que pede ao modelo que raciocine antes de responder, na forma mais famosa acrescentando "Vamos pensar passo a passo" (no original, "Let's think step by step"). Kojima et al. mostraram em 2022 que essa única frase, sem exemplos, melhorou os resultados de modelos grandes em problemas de aritmética e lógica.