Le « shot » dans ces termes est un exemple. Un prompt zero-shot n’en a aucun, un prompt one-shot en a un et un prompt few-shot en a plusieurs. Choisir entre eux est un arbitrage entre la longueur du prompt et la précision avec laquelle vous pouvez cadrer la sortie.
Le prompting zero-shot
Un prompt zero-shot donne des instructions et l’entrée, rien d’autre.
Classify the support ticket as billing, bug, or feature request.
Return only the label.
<ticket>
{{ticket}}
</ticket>
Les modèles actuels traitent ainsi un large éventail de tâches. Le zero-shot est le bon choix par défaut, car c’est le plus court, le moins cher et le plus facile à maintenir. Ne recourez aux exemples que lorsque des instructions claires n’ont pas donné ce que vous voulez.
Le prompting one-shot
Un prompt one-shot ajoute un seul exemple. Un exemple est très efficace pour fixer le format de la réponse, mais faible pour enseigner un jugement.
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:
Le risque est la sur-imitation. Avec un seul exemple, le modèle peut en copier la longueur, le premier mot ou le sujet.
Le prompting few-shot
Un prompt few-shot fournit plusieurs exemples, en général de deux à cinq, afin que le modèle déduise le motif de ce qu’ils ont en commun.
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}}" ->
Le prompting few-shot est surtout utile lorsque :
- Les catégories ont des frontières floues, difficiles à décrire par des règles.
- Vous avez besoin d’une voix, d’un style ou d’un niveau de détail précis.
- La sortie a un format particulier que le modèle a rarement vu.
Comment choisir de bons exemples
Couvrez l’éventail. Incluez chaque étiquette ou cas au moins une fois. Si tous les exemples sont « high », le modèle penche vers « high ».
Incluez les cas difficiles. Un exemple de cas évident apprend peu. Les cas limites, comme le message sur le taux de taxe ci-dessus, définissent où passe la frontière.
Variez la surface. Utilisez des longueurs, des sujets et des formulations différents, de sorte que les exemples n’aient en commun que le motif qui vous intéresse.
Gardez un format identique. Mêmes délimiteurs, même ordre, mêmes espacements dans chaque exemple. Une mise en forme incohérente est elle-même un motif, et le modèle la reprendra.
Utilisez des données réelles. Des exemples tirés d’entrées réelles correspondent à la distribution à laquelle le prompt sera confronté.
Combien d’exemples
Commencez par deux ou trois. N’en ajoutez que si un test montre que la sortie s’améliore. Chaque exemple coûte des tokens à chaque appel : un prompt de dix exemples exécuté un million de fois est une vraie ligne sur la facture. Pour de longs jeux d’exemples qui ne changent jamais, la mise en cache de prompts du fournisseur réduit ce coût. Voir l’optimisation des tokens.
Quand les exemples se retournent contre vous
- Effets d’ordre. Les modèles peuvent accorder plus de poids aux derniers exemples. Si les résultats penchent vers la dernière étiquette, mélangez les exemples.
- Déséquilibre des étiquettes. Trois exemples positifs et un négatif biaisent la sortie vers le positif.
- Fuite de contenu. Le modèle réutilise dans sa réponse des noms ou des faits tirés des exemples. Dites-lui que les exemples ne servent qu’au format, ou utilisez un contenu manifestement fictif.
- Exemples qui contredisent les instructions. Si les règles disent « une phrase » et qu’un exemple en a deux, l’exemple l’emporte généralement.
Zero-shot ou few-shot : une règle de décision
| Situation | Commencez par |
|---|---|
| Tâche courante, règles claires | Zero-shot |
| Le format de sortie dérive sans cesse | One-shot, ou un schéma |
| Les étiquettes dépendent du jugement | Few-shot |
| Besoin d’un style d’écriture particulier | Few-shot |
| Problème exigeant du raisonnement | Zero-shot avec une technique de raisonnement |
Pour des formats stricts, un schéma est plus fiable que des exemples. Voir les prompts de sortie structurée. Pour les tâches de raisonnement, des exemples de la seule réponse aident moins que de montrer le raisonnement, ce qui est l’idée du prompting par chaîne de pensée.
Séparer les exemples de l’entrée
Enveloppez les exemples et l’entrée réelle dans des délimiteurs distincts pour que le modèle ne puisse pas les confondre, et pour que le texte de l’utilisateur ne puisse pas se faire passer pour un exemple.
<examples>
...
</examples>
<input>
{{message}}
</input>
L’analyseur de prompts PromptFlowEngine signale les variables de modèle non délimitées, l’erreur la plus courante dans les modèles few-shot.