Je rencontre chaque jour des ingénieurs confrontés au même défi. Leurs modèles manquent de rigueur.

Pour résoudre ce problème sans passer par la case coûteuse du réentraînement, une technique se distingue : le few-shot prompting. Cette approche consiste à fournir entre deux et cinq exemples cibles au sein de votre requête.

Mon verdict de terrain : l’apprentissage en contexte (In-Context Learning) est une arme secrète. Notre cher moteur de silicium s’aligne sur vos attentes sans modification de ses paramètres internes.

Les trois niveaux du prompting par l’exemple

Le comportement de notre cerveau de silicium varie selon le nombre de démonstrations soumises :

  • Zero-shot : Aucune illustration. Vous donnez une consigne brute et croisez les doigts.
  • One-shot : Un seul modèle de réponse pour orienter la forme globale.
  • Few-shot : Un mini-ensemble de données pour ancrer le comportement recherché.

Anatomie d’un prompt multi-exemples

Une requête structurée repose sur un agencement rigoureux de trois blocs distincts.

  1. L’instruction principale décrivant la tâche globale.
  2. Les exemples de démonstration sous forme de couples entrée-sortie.
  3. La requête finale contenant la donnée à traiter.

Voici une illustration concrète pour l’analyse de sentiments :

Classer le sentiment du texte suivant en utilisant uniquement les étiquettes : Positif, Neutre ou Négatif.

Texte: "La livraison est arrivée en avance, l'emballage est impeccable !"
Sentiment: Positif

Texte: "L'appareil fonctionne, mais les finitions semblent fragiles."
Sentiment: Neutre

Texte: "Le boîtier s'est brisé dès la première utilisation. À fuir."
Sentiment: Négatif

Texte: "L'ergonomie de l'application s'avère fluide et intuitive."
Sentiment:

La machine complète la dernière ligne par le mot “Positif”, calquant son style sur les cas précédents.

Les avantages pour vos pipelines de production

Pourquoi adopter cette méthode ?

  • Contrôle du format : Vous imposez des structures strictes comme le format JSON ou des contraintes de casse.
  • Identité de marque : La machine adopte le ton spécifique de votre entreprise ou un jargon technique ciblé.
  • Optimisation des ressources : Vous obtenez une précision élevée à l’instant, sans le coût d’un entraînement sur mesure.

Pour observer une mise en œuvre concrète de ces concepts de base, le tutoriel vidéo de Dan Vega disponible sur YouTube propose une introduction accessible aux débutants.

Règles d’or pour concevoir vos exemples

Un mauvais choix de démonstrations détruit les performances de vos applications.

Veillez à la diversité de vos données. Si vous présentez seul des avis positifs dans vos exemples, le système développera un biais.

Garantissez une uniformité totale de la mise en page. Les délimiteurs et les étiquettes doivent être identiques d’une ligne à l’autre.

Surveillez la consommation de jetons (tokens). Un volume excessif d’exemples sature la fenêtre de contexte et gonfle votre facture API.

Mon astuce de terrain : pour les tâches logiques complexes, l’ajout d’une chaîne de pensée (Chain-of-Thought) au sein des exemples évite les erreurs de calcul du moteur de silicium.

La science derrière l’apprentissage en contexte

Aucune modification de poids n’intervient durant ce processus.

Les paramètres du réseau de neurones restent figés. L’apprentissage en contexte réveille des connexions établies lors du pré-entraînement. Les exemples agissent comme une force d’attraction statistique. Ils guident le calcul de prédiction de texte vers la syntaxe exacte visible dans l’historique récent.

Arbitrer entre Few-Shot et Fine-Tuning

Le choix dépend de vos contraintes techniques et de votre budget.

CritèreFew-Shot PromptingFine-Tuning
Volume de données requis2 à 5 exemplesDes centaines ou milliers de lignes étiquetées
Persistance de la modificationTemporaire (limitée à la session)Permanente (altération des poids du modèle)
Coût d’infrastructure initialNégligeableÉlevé (calcul et serveurs dédiés)
Consommation de jetonsÉlevée à chaque appelFaible (la logique est intégrée au modèle)
Usage recommandéPrototypage, respect d’une charte éditorialeExpertise sur un domaine pointu (médecine, droit)

L’évolution dynamique grâce au RAG

Les exemples figés montrent vite leurs limites.

Charger des cas d’usage non pertinents gaspille de l’espace de calcul utile. Les architectures modernes utilisent le prompting dynamique couplé à la génération augmentée par récupération (RAG).

Une base de données vectorielle stocke des centaines d’exemples validés. Lors d’une requête utilisateur, le système recherche les trois cas les plus proches sur le plan sémantique. Ces exemples spécifiques s’injectent alors à la volée dans le prompt final.

Les pièges cognitifs des modèles

Les chercheurs soulignent deux biais majeurs lors de l’usage de cette technique.

Le biais de la classe majoritaire survient lorsque vos exemples penchent vers une catégorie. La machine surreprésentera cette réponse lors de ses choix futurs.

Le biais de récence pousse le modèle à accorder plus de poids au tout dernier exemple situé juste avant la question finale. Placez votre cas le plus clair en fin de liste pour maximiser l’exactitude.

Gabarits de structure pour la production

Le choix du format de données structure la réponse. Voici les deux approches dominantes.

1. Le format Clé-Valeur

Idéal pour l’extraction d’informations structurées.

Instruction: Extraire les entreprises et leurs symboles boursiers respectifs.

---
Entrée: "Apple Inc. (AAPL) a publié des résultats financiers records ce trimestre."
Sortie: {"entreprise": "Apple Inc.", "symbole": "AAPL"}
---
Entrée: "Microsoft Corporation (MSFT) annonce le déploiement de ses nouveaux serveurs."
Sortie: {"entreprise": "Microsoft Corporation", "symbole": "MSFT"}
---
Entrée: "Alphabet Inc. (GOOGL) investit dans la recherche quantique."
Sortie:

2. Le format conversationnel

Ce format configure le comportement des agents conversationnels via les API modernes.

[
  {"role": "system", "content": "Vous êtes un conseiller client. Exprimez une empathie sincère face aux difficultés de l'utilisateur."},
  {"role": "user", "content": "Mon colis n'est pas arrivé alors que la livraison était prévue il y a huit jours !"},
  {"role": "assistant", "content": "Je suis navré pour ce retard. Je comprends votre agacement après une telle attente. Je consulte à l'instant le suivi pour résoudre ce problème."},
  {"role": "user", "content": "L'application s'est fermée brutalement pendant la validation de mon paiement."},
  {"role": "assistant", "content": "Quelle situation stressante ! Je vous présente mes excuses pour ce dysfonctionnement. Vérifions d'abord l'absence de double débit avant de relancer l'application."},
  {"role": "user", "content": "Les chaussures reçues ne correspondent pas à ma pointure."}
]

Le Few-Shot Chain of Thought (CoT)

Présenter seul le résultat final d’un problème complexe favorise les hallucinations.

Le Few-Shot Chain of Thought résout ce problème en intégrant le raisonnement étape par étape dans chaque exemple.

Considérons cette approche classique sans chaîne de pensée :

Q: Roger possède 5 balles de tennis. Il achète 2 boîtes de 3 balles chacune. Combien de balles a-t-il ?
R: 11

Q: La cantine disposait de 23 pommes. Ils en utilisent 20 pour le déjeuner et en achètent 6 de plus. Combien de pommes reste-t-il ?
R:

Le modèle risque de calculer trop vite et de proposer un chiffre erroné.

Ajoutons maintenant le cheminement logique :

Q: Roger possède 5 balles de tennis. Il achète 2 boîtes de 3 balles chacune. Combien de balles a-t-il ?
R: Roger commence avec 5 balles. 2 boîtes de 3 balles représentent 6 balles. 5 + 6 = 11. La réponse est 11.

Q: La cantine disposait de 23 pommes. Ils en utilisent 20 pour le déjeuner et en achètent 6 de plus. Combien de pommes reste-t-il ?
R:

Grâce à cette décomposition, la machine reproduit le calcul pas à pas : “La cantine commence avec 23 pommes. Elle en utilise 20, il reste donc 23 – 20 = 3 pommes. Elle en achète 6 de plus, soit 3 + 6 = 9 pommes. La réponse est 9.”

Sélectionner et ordonner vos démonstrations

L’efficacité de votre système repose sur trois règles d’organisation.

La règle de diversité : Variez les cas de figure. Pour un filtre anti-indésirables, proposez un message de pêche aux données personnelles, une publicité et un courriel professionnel standard.

Le gradient de complexité : Progressez du plus simple au plus complexe. Placer le cas le plus difficile juste avant la question finale force le modèle à maintenir un niveau de réflexion élevé.

L’équilibre des classes : Proposez un nombre identique d’exemples pour chaque catégorie de réponse afin d’éviter les décisions biaisées.

L’intégration des exemples dans le prompt système

Placer vos exemples dans le message système consiste à intégrer les démonstrations au cœur même des instructions de haut niveau.

Cette approche sépare la logique de configuration de la conversation active de l’utilisateur.

Vous êtes un agent de tri pour le support technique. Votre tâche consiste à classer les tickets d'assistance selon ces catégories : [Matériel, Logiciel, Facturation]. Renvoyez uniquement la catégorie valide.

Voici les modèles de classification attendus :
<example>
Entrée: "Mon écran reste noir bien que le voyant d'alimentation soit vert."
Sortie: Matériel
</example>

<example>
Entrée: "L'application affiche une erreur de connexion lors de la synchronisation."
Sortie: Logiciel
</example>

Le prompt de l’utilisateur reste alors propre, contenant seul sa demande brute.

Deux architectures d’intégration

Le choix de la structure de charge utile (payload) influence le traitement de la fenêtre de contexte.

La première méthode intègre tout au sein du prompt système sous forme de texte brut :

[
  {"role": "system", "content": "Instructions... <example>In: X, Out: Y</example>"},
  {"role": "user", "content": "Requête réelle"}
]

La seconde simule un historique de discussion artificielle en alternant les rôles utilisateur et assistant :

[
  {"role": "system", "content": "Instructions principales..."},
  {"role": "user", "content": "Exemple Entrée 1"},
  {"role": "assistant", "content": "Exemple Sortie 1"},
  {"role": "user", "content": "Requête réelle"}
]

Pourquoi privilégier le prompt système ?

Des travaux de recherche publiés par l’Association for Computing Machinery (ACM) mettent en lumière plusieurs bénéfices notables de cette pratique.

La structure garantit un respect strict des formats de sortie. La séparation logique empêche le mélange entre vos règles métier et les données utilisateur.

De plus, cette méthode assure la pérennité des exemples lors des longues sessions de discussion. Les démonstrations situées dans le prompt système ne risquent pas d’être effacées par le glissement de la fenêtre de contexte.

Prenez garde toutefois au mélange d’informations factuelles. L’usage de données trop réalistes au sein des exemples peut induire le modèle en erreur. Utilisez des données fictives pour éviter toute hallucination.

Zero-Shot vs Few-Shot : Le Duel

La distinction fondamentale réside dans la présence de ces modèles de comportement au sein de la requête.

CaractéristiqueZero-Shot PromptingFew-Shot Prompting
Nombre d’exemplesZéroGénéralement 2 à 5
MécanismeS’appuie sur les connaissances acquises lors de l’entraînement initialUtilise l’apprentissage en contexte pour reproduire le modèle fourni
Précision du formatVariable (risque de bavardage inutile)Excellente (reproduction fidèle de la structure)
Coût en jetonsFaibleÉlevé (facturation de chaque exemple à chaque appel)

Mise en situation : Extraction et formatage

Prenons le cas de l’extraction d’un produit et de son état d’usure.

Avec l’approche sans exemple (Zero-shot) :

[Prompt]
Extraire le produit et son état de ce texte. 
Format attendu : Produit | État.

Texte: "Je vends un iPhone 13 peu servi avec de légères rayures."

[Sortie du modèle]
Produit : iPhone 13 | État : Peu servi avec de légères rayures.

Le format demandé est globalement respecté, mais la machine ajoute des étiquettes non sollicitées comme “Produit :” et “État :”.

Voyons maintenant la même tâche configurée avec l’approche multi-exemples (Few-shot) :

[Prompt]
Extraire le produit et son état du texte.

Texte: "À vendre : PlayStation 5 neuve sous scellé."
PlayStation 5 | Neuve

Texte: "Veste en cuir vintage des années 90, très usée."
Veste en cuir | Très usée

Texte: "Je vends un iPhone 13 peu servi avec de légères rayures."

[Sortie du modèle]
iPhone 13 | Peu servi

En analysant les démonstrations, la machine a éliminé les fioritures inutiles de manière autonome.

Leave a Reply

Your email address will not be published. Required fields are marked *