?
Skilldébutant

Few-shot : enseigner par l'exemple

Sélectionner et formater des exemples pour maximiser l'apprentissage in-context.

Few-shot prompting : l'apprentissage par l'exemple

Le few-shot prompting consiste à fournir quelques exemples (shots) au modèle pour qu'il comprenne le pattern attendu. C'est l'une des techniques les plus fiables pour obtenir des sorties cohérentes et formatées.

Pourquoi le few-shot est puissant

  • Communique le format de sortie mieux que toute description
  • Désambiguïse les instructions floues
  • Calibre le ton et le niveau de détail
  • Fonctionne sur tous les modèles, même les plus petits

Combien d'exemples ?

  • 1-2 exemples : Suffisant pour le format de sortie
  • 3-5 exemples : Bon pour la classification et les tâches structurées
  • 5-10 exemples : Pour les tâches avec beaucoup de nuances
  • Au-delà : Rendements décroissants, préférer le fine-tuning

Structure d'un prompt few-shot

[Instruction optionnelle]

[Exemple 1]
Input: ...
Output: ...

[Exemple 2]
Input: ...
Output: ...

[Cas réel]
Input: ...
Output:

Sélection des exemples

Diversité

Couvrir les différents cas de figure :

# Classification de tickets support

Ticket: "Je ne peux pas me connecter depuis 3 jours"
Catégorie: authentification
Priorité: haute

Ticket: "Comment changer ma photo de profil ?"
Catégorie: how-to
Priorité: basse

Ticket: "L'app crash quand j'ouvre les paramètres"
Catégorie: bug
Priorité: haute

Exemples boundary

Inclure des cas limites pour calibrer :

# Cas ambigu - montrer la décision attendue
Ticket: "Le chargement est lent depuis la mise à jour"
Catégorie: performance  # Pas "bug" car pas de crash
Priorité: moyenne  # Pas "haute" car fonctionnel

Exemples négatifs

Montrer ce qu'il ne faut PAS faire :

# Résumé - bon exemple
Texte: [article de 500 mots]
Résumé: "L'entreprise X a levé 50M€ pour développer son outil de RAG." (1 phrase)

# Pas comme ça (trop long, trop de détails)

Dynamic few-shot

Sélectionner les exemples dynamiquement selon la requête :

from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector

selector = SemanticSimilarityExampleSelector.from_examples(
    examples,
    OpenAIEmbeddings(),
    Chroma,
    k=3  # 3 exemples les plus similaires
)

prompt = FewShotPromptTemplate(
    example_selector=selector,
    example_prompt=example_template,
    prefix="Classifie le ticket suivant :",
    suffix="Input: {input}\nOutput:"
)

Formatage des exemples

Délimiteurs clairs

---
Input: "texte d'entrée"
Output: {"label": "...", "score": 0.9}
---

Cohérence stricte

Tous les exemples doivent suivre exactement le même format. Une incohérence confond le modèle.

Erreurs courantes

  • Exemples tous du même type (pas de diversité)
  • Format incohérent entre les exemples
  • Trop d'exemples (dépasse le contexte, dilue l'attention)
  • Exemples non représentatifs des cas réels
  • Oublier les cas limites (le modèle inventera son propre comportement)

Sources

promptsfew-shotexemples