+140 XP

Few-shot prompting : enseigner par l'exemple

Vous pouvez écrire trois phrases pour tenter d'expliquer ce que signifie « urgent », ou vous pouvez montrer trois messages au modèle et le laisser repérer lui-même le motif. La seconde approche gagne presque toujours.

C'est le few-shot prompting : donner au modèle une poignée d'exemples traités avant de lui demander d'accomplir la vraie tâche. « Shot » veut simplement dire « exemple ». Zero-shot, aucun exemple. One-shot, un seul. Few-shot, deux ou plus.

Le problème de la description

Imaginez que vous vouliez trier les messages clients entrants entre « urgent » et « normal ». Votre premier réflexe est de décrire les règles :

Classe ce message comme urgent ou normal. Urgent signifie que le client est en colère, mentionne une perte d'argent, a une échéance, ou menace de résilier. Normal signifie des questions générales, des retours, ou tout ce qui peut attendre.

Ça fonctionne à peu près. Mais vous allez passer un temps fou à ajouter des cas limites. Et un message calme qui dit « mon paiement a échoué » ? Et un message enthousiaste qui ne pose en fait aucun problème ?

Les mots sur les règles glissent entre les doigts. Les exemples sont nets.

Enseigner par l'exemple à la place

Voici la même tâche sous forme de prompt few-shot. Remarquez qu'il n'y a aucune règle, juste trois exemples puis le nouveau message :

Classify each message as "urgent" or "normal".

Message: "My account got charged twice and the payment is for $4,000. I need this fixed today."
Label: urgent

Message: "Hi! Just wondering what your office hours are over the holidays."
Label: normal

Message: "This is the third time I've emailed. If I don't hear back I'm cancelling my subscription tomorrow."
Label: urgent

Message: "Loving the new dashboard, the charts are really clear."
Label:

Le modèle lit le motif et complète la dernière ligne : normal.

Il a appris de vos exemples que les doubles débits et les menaces de résiliation sont urgents, tandis que les questions aimables et les compliments sont normaux. Vous n'avez jamais écrit ces règles. Les exemples les portaient.

Pourquoi ça marche

Un grand modèle de langage (l'IA derrière ChatGPT, Claude et Gemini) est une machine à compléter des motifs. Quand il voit une structure claire et répétée, il la poursuit. Trois exemples dans le même format créent un motif fort. Le modèle recopie le format et la logique intégrée dans vos choix.

C'est pourquoi le format compte autant que le contenu. Gardez chaque exemple identique dans sa forme : mêmes labels, même espacement, même formulation pour « Message » et « Label ».

Bien choisir ses exemples

Vos exemples sont vos instructions. Choisissez-les avec soin.

Couvrez l'éventail. Incluez les cas évidents et un cas délicat. Si un message calme peut malgré tout être urgent (comme un discret « mon paiement a échoué »), faites-en précisément l'un de vos exemples. Le modèle apprend vos cas limites à partir des exemples que vous retenez.

Équilibrez vos labels. Si les trois exemples sont « urgent », le modèle aura tendance à tout qualifier d'urgent. Mélangez : deux d'un côté, un de l'autre, ou une répartition égale.

Soyez cohérent. Utilisez exactement les mêmes mots de label à chaque fois. « urgent », « Urgent » et « URGENT » ressemblent à trois catégories différentes pour une machine littérale. Choisissez-en un.

Faites court. Les exemples consomment l'espace que le modèle peut lire d'un coup (sa « context window »). Trois exemples serrés valent mieux que dix exemples bavards.

L'exécuter avec du code

Si vous voulez classer des centaines de messages, vous passerez par une API (un moyen pour votre code de parler au modèle). Voici un exemple court et exécutable avec la librairie Python d'OpenAI. La même idée fonctionne avec Claude ou Gemini, avec d'autres noms de librairies.

python
from openai import OpenAI

client = OpenAI()

few_shot = """Classify each message as "urgent" or "normal".

Message: "My account got charged twice for $4,000. Fix this today."
Label: urgent

Message: "What are your holiday office hours?"
Label: normal

Message: "Third email. Reply or I'm cancelling tomorrow."
Label: urgent

Message: "{new_message}"
Label:"""

def classify(message):
    prompt = few_shot.format(new_message=message)
    response = client.chat.completions.create(
        model="gpt-4.1-mini",
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
    )
    return response.choices[0].message.content.strip()

print(classify("The app keeps crashing every time I try to pay."))

Un détail à connaître : temperature=0. La température contrôle l'aléatoire. Pour la classification, vous voulez la même réponse à chaque fois, donc mettez-la à 0 pour la sortie la plus cohérente et la plus prévisible.

Si vous ne codez pas, vous n'avez pas besoin de ça. Vous pouvez faire du few-shot prompting à la main directement dans ChatGPT, Claude ou Gemini. Collez simplement vos exemples et votre nouveau message dans le chat.

Le few-shot au-delà de la classification

Cette technique ne sert pas qu'à trier. Utilisez-la chaque fois que vous voulez un format ou un style précis.

Mettre en forme des données. Montrez deux exemples de transformation d'une adresse en désordre en champs propres, et le modèle fera le reste.

Reproduire un ton. Collez deux de vos anciens e-mails comme exemples, puis demandez au modèle d'en écrire un troisième dans la même voix. Il copie votre style bien mieux que si vous le décriviez.

Extraire de l'information. Donnez deux exemples d'extraction du nom, de la date et du montant d'une facture, et le modèle comprend exactement quels champs vous voulez et comment les présenter.

Le principe est toujours le même : arrêtez de décrire, commencez à démontrer.

Pour une référence plus poussée et bien écrite sur cette technique et les techniques voisines, le Prompt Engineering Guide ouvert est gratuit et reste à jour.

🎬 [VIDEO: "Few-Shot Prompting Explained" - youtube.com - un tour d'horizon court et en langage simple du zero-shot vs few-shot, avec des exemples en direct que vous pouvez copier]

Vérification des acquis

1. Quelle est la meilleure définition du few-shot prompting ?

2. D'après la leçon, pourquoi les exemples fonctionnent-ils souvent mieux que des règles écrites pour une tâche comme la classification de messages ?

3. Pourquoi le few-shot prompting fonctionne-t-il si bien avec un grand modèle de langage ?

CHOIX MULTIPLES

4. Sélectionnez TOUTES les affirmations correctes sur la distinction entre zero-shot, one-shot et few-shot prompting.

Sélectionnez toutes les réponses correctes.

CHOIX MULTIPLES

5. Sélectionnez TOUTES les pratiques recommandées par la leçon pour rédiger des exemples few-shot.

Sélectionnez toutes les réponses correctes.

Quand le few-shot est superflu

Le few-shot est puissant, mais il n'est pas toujours nécessaire. Les modèles actuels en 2026 sont assez solides pour que les tâches simples fonctionnent souvent en zero-shot, sans aucun exemple. « Résume ceci en une phrase » n'a besoin d'aucune démonstration.

Sortez le few-shot quand :

  • Le format est précis et vous le voulez exact à chaque fois.
  • La tâche comporte des cas limites que les règles peinent à capturer.
  • Vous avez besoin de cohérence sur de nombreuses exécutions (comme classer une boîte de réception entière).
  • Le style ou la voix compte et est difficile à décrire.

Passez-vous-en quand la tâche est courante et évidente. Ajouter des exemples ne fait alors que gaspiller de l'espace et votre temps.

Un test rapide

Vous ne savez pas si vous avez besoin d'exemples ? Essayez d'abord en zero-shot. Si le modèle fait juste, c'est réglé. S'il dérive du format ou se trompe sur votre intention, ajoutez deux ou trois exemples pour le cadrer. Le few-shot est votre correctif quand le zero-shot est proche mais pas fiable.

Erreurs fréquentes

Des exemples incohérents. Si un exemple utilise « urgent » et un autre « priorité haute », le modèle ne sait plus quelles sont vos catégories. Faites-les correspondre exactement.

Trop peu d'exemples pour une tâche difficile. Un seul exemple peut ne pas montrer clairement le motif. Si les résultats sont instables, ajoutez-en un deuxième et un troisième avant de tenter quelque chose de plus sophistiqué.

Divulguer la réponse. Lors des tests, n'incluez pas par accident le bon label sur votre nouveau message. Laissez le Label: final vide pour que le modèle le remplisse.

Des exemples déséquilibrés qui orientent le modèle. Trois exemples « urgent » d'affilée apprennent au modèle qu'urgent est la valeur par défaut. Mélangez vos labels pour rester neutre.

À vous d'essayer

Ouvrez ChatGPT, Claude ou Gemini tout de suite. Collez ceci :

Turn each phrase into a polite, professional sentence.

Phrase: "send me the file"
Sentence: "Could you please send me the file when you have a moment?"

Phrase: "you're late"
Sentence: "I wanted to gently flag that the deadline has passed."

Phrase: "fix the bug"
Sentence:

Regardez-le reproduire le ton de vos deux exemples. Changez ensuite les exemples pour les rendre décontractés et drôles, puis relancez. La sortie change en conséquence. Voilà, vous venez d'enseigner par l'exemple en moins d'une minute.

Points clés

  • Montrez, ne décrivez pas. Deux ou trois exemples dans un format cohérent valent généralement mieux qu'un paragraphe de règles.
  • Vos exemples sont vos instructions. Couvrez l'éventail, incluez un cas délicat et équilibrez vos labels pour que le modèle reste neutre.
  • Gardez un format identique sur chaque exemple : mêmes labels, même espacement, même formulation. L'incohérence perturbe le modèle.
  • Essayez d'abord le zero-shot. N'ajoutez des exemples que si le modèle dérive du format ou se trompe sur votre intention.
  • Mettez la température à 0 pour la classification et toute tâche où vous voulez la même réponse à chaque fois.

À faire, tiré de cette leçon

Ces actions sont compilées dans le plan d'action du rôle.

  • Fournissez deux ou trois exemples traités de manière cohérente pour les formats délicats
Voir le plan d'action complet →

Articles liés

Les articles récents du blog qui s'appuient sur cette leçon.