Donner des exemples (few-shot)
Montrer plutôt que décrire
Décrire un style (« chaleureux mais précis ») est difficile ; le montrer est facile. Un exemple est une paire « entrée → sortie attendue » que l'on place avant la vraie demande.
| Technique | Nombre d'exemples | Quand l'utiliser |
|---|---|---|
| zero-shot | 0 | tâche simple, format libre |
| one-shot | 1 | fixer un format et un ton |
| few-shot | 2 à 5 | cas variés, style très particulier |
sequenceDiagram participant U as user participant M as model Note over U,M: Exemple (écrit par vous) U->>M: "Tasse céramique 350 ml, émail mat vert sauge..." M->>U: fiche idéale en JSON Note over U,M: Vraie demande U->>M: "Gourde isotherme 500 ml, inox..." M-->>U: nouvelle fiche, même style
Le modèle voit une conversation où « il » a déjà répondu parfaitement une fois : il continue sur la même lancée.
Dans AI Studio
Dans le chat, écrivez une description d'exemple, puis modifiez la réponse du modèle (AI Studio permet d'éditer un tour de conversation) pour qu'elle soit exactement la fiche que vous voulez. Les tours suivants s'appuieront dessus.
Dans le code du lab
Les exemples deviennent des tours user / model placés avant la demande :
EXEMPLES = [
(
"Tasse céramique 350 ml, émail mat vert sauge, passe au lave-vaisselle",
{
"titre": "Tasse en céramique 350 ml, émail mat vert sauge",
"accroche": "Votre boisson chaude préférée mérite une jolie tasse.",
...
},
),
]
def build_contents(description: str) -> list[types.Content]:
"""Les exemples deviennent des tours user/model, puis vient la vraie demande."""
contents = []
for entree, sortie in EXEMPLES:
contents.append(types.Content(role="user", parts=[types.Part(text=entree)]))
contents.append(types.Content(role="model", parts=[
types.Part(text=json.dumps(sortie, ensure_ascii=False))]))
contents.append(types.Content(role="user", parts=[types.Part(text=description)]))
return contentsCode complet : fiche_produit.py.
Votre exemple de fiche contient « Garantie 2 ans » alors que la description d'exemple n'en parle pas. Quel risque ?
L'exemple contredit l'interdit du prompt système. Face à cette contradiction, le modèle imite souvent l'exemple. Un exemple doit être irréprochable.
Dans la liste contents envoyée à l'API, dans quel ordre apparaissent les éléments ?
On reconstitue une conversation : la question d'exemple, la réponse idéale, puis la vraie question. Le modèle répond au dernier tour user.
Résultat obtenu
Le 2026-10-15, avec un seul exemple (la tasse), gemini-3.5-flash a produit pour la gourde une fiche de même structure et de même ton, et n'a repris que les caractéristiques fournies (extrait) :
{
"titre": "Gourde isotherme en inox 500 ml avec bouchon anti-fuite",
"accroche": "Emportez vos boissons chaudes ou froides partout avec vous en toute sérénité.",
"points_forts": [
"Contenance de 500 ml",
"Conception en inox",
"Garde le froid 24 h et le chaud 12 h",
"Bouchon anti-fuite"
]
}Comme dans l'exemple, les points forts reprennent un à un les éléments de la description, sans garantie ni dimension inventées.
Exercice
Ajoutez à EXEMPLES un deuxième exemple, d'une catégorie différente (textile, par exemple), qui montre le cas d'une description pauvre (« Tee-shirt coton bio, blanc »). À quoi ressemble la fiche idéale ?
Voir la solution
EXEMPLES.append((
"Tee-shirt coton bio, blanc",
{
"titre": "Tee-shirt blanc en coton bio",
"accroche": "Un basique tout simple, en coton bio.",
"description": "Ce tee-shirt blanc est confectionné en coton bio. "
"Un indispensable facile à associer.",
"points_forts": ["Coton bio", "Coloris blanc", "Basique polyvalent"],
"mots_cles": ["tee-shirt", "coton bio", "blanc"],
},
))La fiche reste courte : pas de taille, de grammage ni de coupe, puisque la description n'en parle pas. Cet exemple apprend au modèle qu'une fiche brève vaut mieux qu'une fiche inventée.
Je sais faire
- Expliquer zero-shot, one-shot et few-shot
- Construire des exemples sous forme de tours user / model
- Vérifier qu'un exemple respecte toutes les règles du prompt système
- Choisir des exemples variés, dont un cas difficile