O “shot” nesses termos é um exemplo. Um prompt zero-shot não tem nenhum, um one-shot tem um e um few-shot tem vários. Escolher entre eles é uma troca entre o tamanho do prompt e a precisão com que você consegue fixar a saída.
Prompting zero-shot
Um prompt zero-shot dá instruções e a entrada, nada mais.
Classify the support ticket as billing, bug, or feature request.
Return only the label.
<ticket>
{{ticket}}
</ticket>
Os modelos modernos resolvem uma ampla gama de tarefas assim. Zero-shot é o padrão certo porque é o mais curto, o mais barato e o mais fácil de manter. Recorra a exemplos apenas depois que instruções claras não produzirem o que você quer.
Prompting one-shot
Um prompt one-shot acrescenta um único exemplo. Um exemplo é muito bom para fixar o formato da resposta e fraco para ensinar um julgamento.
Write a changelog entry for the commit below.
Example:
Commit: "fix: retry webhook delivery on 5xx"
Entry: "Fixed: webhooks are now retried when your server returns a 5xx error."
Commit: "{{commit_message}}"
Entry:
O risco é a imitação excessiva. Com um só exemplo, o modelo pode copiar o tamanho, a palavra inicial ou o assunto.
Prompting few-shot
Um prompt few-shot fornece vários exemplos, tipicamente de dois a cinco, para que o modelo infira o padrão pelo que eles têm em comum.
Rate the urgency of each message as low, medium, or high.
Message: "The export button is slightly misaligned." -> low
Message: "Checkout fails for all customers since 09:00." -> high
Message: "Can you add dark mode at some point?" -> low
Message: "Invoices for March show the wrong tax rate." -> medium
Message: "{{message}}" ->
O prompting few-shot é mais útil quando:
- As categorias têm limites difusos, difíceis de descrever com regras.
- Você precisa de uma voz, estilo ou nível de detalhe específicos.
- A saída tem um formato próprio que o modelo viu pouco.
Como escolher bons exemplos
Cubra a variedade. Inclua cada rótulo ou caso pelo menos uma vez. Se todos os exemplos forem “high”, o modelo tende a “high”.
Inclua os casos difíceis. Um exemplo de caso óbvio ensina pouco. Os casos limítrofes, como a mensagem sobre a taxa de imposto acima, definem onde fica a linha.
Varie a superfície. Use comprimentos, assuntos e redações diferentes, para que o único ponto em comum entre os exemplos seja o padrão que importa.
Mantenha o formato idêntico. Mesmos delimitadores, mesma ordem, mesmo espaçamento em todos os exemplos. A formatação inconsistente é, ela mesma, um padrão, e o modelo vai captá-la.
Use dados reais. Exemplos tirados de entradas reais correspondem à distribuição que o prompt enfrentará.
Quantos exemplos
Comece com dois ou três. Acrescente mais só se um teste mostrar que a saída melhora. Cada exemplo custa tokens a cada chamada, então um prompt de dez exemplos executado um milhão de vezes é um item real na fatura. Para conjuntos longos de exemplos que nunca mudam, o cache de prompts do provedor reduz esse custo. Veja a otimização de tokens.
Quando os exemplos saem pela culatra
- Efeitos de ordem. Os modelos podem dar mais peso aos últimos exemplos. Se os resultados tendem ao último rótulo, embaralhe os exemplos.
- Desequilíbrio de rótulos. Três exemplos positivos e um negativo enviesam a saída para o positivo.
- Vazamento de conteúdo. O modelo reutiliza nomes ou fatos dos exemplos na resposta. Diga que os exemplos servem só para o formato, ou use conteúdo claramente fictício.
- Exemplos que contradizem as instruções. Se as regras dizem “uma frase” e um exemplo tem duas, o exemplo costuma prevalecer.
Zero-shot ou few-shot: uma regra de decisão
| Situação | Comece com |
|---|---|
| Tarefa comum, regras claras | Zero-shot |
| O formato de saída vive mudando | One-shot, ou um esquema |
| Os rótulos dependem de julgamento | Few-shot |
| É preciso um estilo de escrita específico | Few-shot |
| Problema de muito raciocínio | Zero-shot com uma técnica de raciocínio |
Para formatos rígidos, um esquema é mais confiável do que exemplos. Veja os prompts de saída estruturada. Em tarefas de raciocínio, exemplos só da resposta ajudam menos do que mostrar o raciocínio, que é a ideia por trás do prompting de cadeia de pensamento.
Separando os exemplos da entrada
Envolva os exemplos e a entrada real em delimitadores distintos para que o modelo não os confunda e para que o texto do usuário não se passe por um exemplo.
<examples>
...
</examples>
<input>
{{message}}
</input>
O analisador de prompts do PromptFlowEngine sinaliza variáveis de template sem delimitação, o erro mais comum em templates few-shot.