Prompt Engineering
L'anatomie d'un prompt qui tient en production
Anatomie d'un prompt qui marche, par modèle. Bibliothèque copiable par cas d'usage.
- 01Structurer un prompt efficace : rôle, contexte, tâche, contraintes, format
- 02Adapter le style de prompt selon le modèle (Claude, GPT, Gemini, Copilot)
- 03Utiliser la technique du « Claude Interview »
- 04Constituer une bibliothèque de prompts réutilisables
1. L'anatomie d'un prompt de qualité
Un prompt de développement performant tient sur cinq éléments. Sur une tâche complexe, les cinq comptent. En sauter un, c'est laisser l'IA combler le trou à ta place.
Framework R.C.T.C.F.
Exemple — vague vs structuré
Prompt vague :
Prompt structuré :
Différence : le second prompt réduit à zéro les ambiguïtés. L'IA sait exactement ce qu'on attend, dans quel contexte, avec quelles contraintes.
2. Techniques avancées
2.1 La technique "Claude Interview"
Au lieu de tout spécifier toi-même, laisse l'IA identifier ce qui manque.
Quand l'utiliser : pour les features nouvelles ou complexes où tu ne sais pas encore exactement ce que tu veux.
Résultat : une spec validée avant d'écrire une seule ligne de code. Commence ensuite une nouvelle session avec cette spec comme contexte.
2.2 L'injection documentaire Just-in-Time
Problème : le modèle ne connaît pas tes librairies internes ou les APIs trop récentes.
Solution : n'injecte pas toute la documentation, seulement les signatures d'interface pertinentes.
// À éviter
"Lis toute la doc de notre AuthService et implémente..."
// Bonne approche
"Voici l'interface de notre AuthService :
interface AuthService {
login(credentials: LoginDto): Promise<TokenPair>;
refresh(refreshToken: string): Promise<TokenPair>;
logout(userId: string): Promise<void>;
}
Implémente maintenant le LoginController en utilisant STRICTEMENT
ces méthodes. N'invente aucune méthode non listée ici."
2.3 La critique itérative (Reviewer Pattern)
Ne corrige pas manuellement le code généré par l'IA. Demande-lui de se relire elle-même.
Pourquoi. Si tu corriges à la main, l'IA ne voit jamais ce qui clochait : elle refera la même erreur au prompt suivant. En la forçant à se relire avec un rôle et des critères précis, toi tu comprends pourquoi son premier jet était mauvais — et tu peux mettre à jour ton prompt (ou ton fichier de contexte : CLAUDE.md / AGENTS.md / GEMINI.md) pour qu'elle ne retombe plus dedans.
Résultat : réduit la complexité cyclomatique et améliore la lisibilité sans effort humain supplémentaire.
2.4 Le Plan Mode (Explore sans écrire)
Avant toute implémentation sur du code existant :
2.5 Ne sur-explique pas à un modèle de raisonnement
Vieux réflexe à désapprendre : ajouter « réfléchis étape par étape » à la fin de chaque prompt. Ça datait de l'époque où les modèles ne raisonnaient pas tout seuls. Aujourd'hui, un modèle de raisonnement (Claude en extended thinking, GPT en mode reasoning, Gemini Deep Think) le fait déjà, en interne. Lui redemander par-dessus ne l'aide pas : au mieux c'est neutre, souvent ça brouille sa propre logique et ça coûte des tokens pour rien.
La bonne façon de faire avec ces modèles :
- Dis le quoi et le pourquoi, pas le comment. Donne l'objectif, les contraintes, le résultat attendu. Laisse-le trouver le chemin — c'est justement ce qu'il sait faire.
- Évite les recettes trop détaillées (« d'abord fais ci, ensuite ça, puis vérifie… »). Sur un modèle de raisonnement, ça l'enferme au lieu de l'aider.
- Garde les instructions pas-à-pas pour les modèles rapides (sans raisonnement), qui eux en profitent vraiment.
3. Différences par modèle
Claude (Anthropic)
Style optimal : contexte riche en amont, demandes de clarification bienvenues.
Spécificités :
- Répond mieux aux instructions procédurales étape par étape
- Très bon pour respecter les contraintes négatives ("ne fais pas X")
- Le tag
<context>...</context>améliore la séparation signal/bruit - Préfixe tes règles critiques avec
IMPORTANT:ouYOU MUST:
<context>
Stack: NestJS 10, TypeScript 5.3, PostgreSQL 15
Pattern: Repository + Service + Controller
Voir fichier existant : @src/users/users.service.ts
</context>
IMPORTANT: N'utilise pas de raw SQL. Utilise uniquement TypeORM QueryBuilder.
Tâche : Ajoute une méthode findByEmailOrUsername(query: string) au UserRepository.
Gemini (Google)
Style optimal : structure ta demande avec des sections claires, cite tes sources.
Spécificités :
- Très bon pour les tâches qui nécessitent de montrer son raisonnement ("show your work")
- Supporte les très longs context windows → bon pour analyser tout un module
- Répond bien aux demandes de comparaison et de synthèse
ChatGPT / GPT-5.x (OpenAI)
Style optimal : format d'abord, puis contenu.
Spécificités :
- Très réactif aux exemples de format en début de prompt
- Bon pour les tâches structurées avec des sorties prédictibles (JSON, tables)
- Le system prompt a un impact fort sur le ton et la forme
4. Bibliothèque de prompts essentiels
Analyse & debug
Génération de code
Tests
Revue sécurité
Documentation
Refactoring
5. Les anti-patterns de prompt
| Anti-pattern | Exemple | Pourquoi c'est mauvais | Fix |
|---|---|---|---|
| Trop vague | "améliore ce code" | L'IA improvise selon ses propres critères | Spécifier les critères d'amélioration |
| Trop autoritaire | "sois clean et SOLID" | Vague, interprétation variable | Donner des exemples concrets |
| Contexte absent | "répare le bug" | L'IA ne sait pas ce qui est cassé | Coller le stack trace + contexte |
| Correction en boucle | Corriger 3× sans changer de prompt | Le contexte se pollue, qualité baisse | /clear + nouveau prompt enrichi |
| Demande trop large | "réécris tout le module" | Résultat imprévisible, non reviewable | Découper en étapes atomiques |