Prompts LLM — Techniques & bonnes pratiques
Maîtriser les prompts, c’est multiplier la qualité des réponses sans changer de modèle. Ce guide couvre la structure, les techniques avancées et les pièges courants pour Claude, GPT, Gemini et consorts.
Structure d’un prompt efficace
Un bon prompt suit une structure en 4 blocs. Plus les blocs sont explicites, moins le modèle a à deviner.
| Bloc | Rôle | Exemple |
|---|---|---|
| Rôle | Définir l’expertise du modèle | Tu es un architecte logiciel senior spécialisé en systèmes distribués. |
| Contexte | Donner le background | Nous construisons un service de file d'attente de messages en Python. |
| Tâche | Décrire l’action attendue | Génère le code de base pour un worker utilisant asyncio et RabbitMQ. |
| Format de sortie | Contrôler la forme | Réponds avec du code commenté suivi d'un tableau récapitulatif des dépendances. |
Règle n°1 : un prompt sans rôle produit des réponses génériques. Un prompt avec un rôle produit des réponses ciblées.
Techniques avancées
Few-shot — Donner des exemples
Fournir 2 à 4 exemples d’entrée/sortie avant la requête principale. Le modèle imite le pattern.
Extrait de conversation :
Entrée : "Je suis fatigué."
Sortie : {"emotion": "négative", "intensite": 0.7}
Entrée : "Cette nouvelle fonctionnalité est incroyable !"
Sortie : {"emotion": "positive", "intensite": 0.95}
Entrée : "Le server est en down."
Sortie :Utiliser le few-shot quand le format de sortie doit être strict (JSON, tableau, liste structurée).
Chain-of-thought — Demander le raisonnement
Forcer le modèle à expliciter sa démarche avant de donner la réponse finale.
Résous ce problème étape par étape. Explique ton raisonnement pour chaque étape avant de donner la réponse finale.
Problème : Un train part de Paris à 80 km/h. Un autre part de Lyon (460 km) à 120 km/h dans la direction opposée. Quand se croisent-ils ?Efficace pour les problèmes de logique, mathématiques ou de débogage. Moins utile pour les tâches créatives ou de résumé.
System prompts — Instructions persistantes
Dans les API (OpenAI, Claude, etc.), le system message définit le comportement global de la session.
# Exemple OpenAI
messages = [
{
"role": "system",
"content": "Tu es un assistant de dialogue. Tu réponds en français. "
"Tu cites toujours tes sources quand tu donnes un fait."
},
{"role": "user", "content": "Explique-moi le théorème de Pythagore."}
]Le system prompt persiste dans tout le contexte de la conversation. Il faut le garder concis : un system prompt de plus de 500 mots dilue l’attention du modèle.
Prompt chaining — Chaîner plusieurs appels
Au lieu d’un prompt monstre, découper le travail en étapes qui s’alimentent les unes les autres.
Étape 1 : extraire les entités du texte
Étape 2 : vérifier chaque entité contre la base de connaissances
Étape 3 : rédiger le résumé avec les résultats de l'étape 2Chaque étape reçoit la sortie de la précédente. Plus fiable qu’un seul prompt complexe.
Exemples concrets
Génération de code
Rôle : Développeur backend senior Python.
Contexte : Projet Flask avec SQLAlchemy et JWT.
Tâche : Créer un endpoint POST /register qui valide l'email, hash le mot de passe avec bcrypt, et crée l'utilisateur en base.
Format : Code complet avec docstrings, puis explication de 3 points clés en puces.
Contraintes : Utiliser Flask 3.x, pas de framework d'auth externe.Debugging
Rôle : Ingénieur DevOps senior.
Contexte : Service Node.js en production sur Kubernetes.
Tâche : Analyser le problème suivant et proposer une résolution.
Log :
2024-01-15T10:23:45Z ERROR: ECONNREFUSED 127.0.0.1:5432
2024-01-15T10:23:45Z ERROR: Database connection pool exhausted
2024-01-15T10:24:00Z ERROR: Healthcheck failed
Format : Cause racine → Solution immédiate → Prévention à long terme.Refactoring
Rôle : Architecte logiciel.
Contexte : Fonction de 300 lignes qui fait tout (lecture DB, transformation, envoi email, logging).
Tâche : Proposer une refactoring en 3 fichiers avec une architecture claire.
Format : Liste des fichiers créés, snippet de chaque fichier, puis diagramme de responsabilité en tableau.Documentation
Rôle : Technical writer.
Contexte : Bibliothèque Python interne pour gérer les permissions RBAC.
Tâche : Écrire la documentation d'installation et d'utilisation pour des développeurs juniors.
Format : Sections H2 avec codes d'exemple, tableau des arguments, section FAQ avec 5 questions.
Ton : Simple, direct, sans jargon inutile.Pièges courants
| Piège | Symptôme | Solution |
|---|---|---|
| Prompt trop vague | Réponse large, pas actionable | Ajouter du contexte, des contraintes, un format de sortie |
| Surcharge d’instructions | Le modèle omet des instructions secondaires | Séparer en plusieurs prompts ou utiliser le prompt chaining |
| Incongruences | Le modèle ignore une consigne contradictoire | Relire : les premières instructions priment souvent |
| Format non respecté | Le JSON contient du markdown ou du texte supplémentaire | Préciser : Réponds uniquement avec du JSON, sans texte autour. |
| Hallucination de faits | Le modèle invente des APIs ou des commandes | Demander de citer ses sources ou de dire “je ne sais pas” |
| Longueur excessive | La réponse est coupée ou la qualité dégrade | Limiter la longueur demandée : Réponds en moins de 200 mots. |
Bonnes pratiques résumé
- Spécifier un rôle pour ancrer le ton et l’expertise.
- Fournir le contexte : le modèle ne sait rien de votre projet sauf ce que vous lui dites.
- Demander le format explicitement (JSON, tableau, liste, code seul).
- Donner des exemples (few-shot) pour les formats complexes.
- Demander le raisonnement (chain-of-thought) pour les problèmes logiques.
- Utiliser le system prompt pour les règles globales qui ne changent pas.
- Découper les tâches complexes en chaîne de prompts simples.
- Relire : aucun prompt ne garantit 100 % de précision. Toujours vérifier les faits.
Tester ses prompts itérativement. Le premier jet est rarement le meilleur.