Playbook Dev × IA
Sommaire
02Chapitre 2·45 min·Fondamentaux

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.

Ce que vous saurez faire
  • 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 contient 5 éléments. Aucun n'est optionnel pour les tâches complexes.

Framework R.C.T.C.F.

Prompt
[RÔLE] → Qui est l'IA dans ce contexte ? [CONTEXTE] → Quelle est la situation actuelle du code ? [TÂCHE] → Que doit-elle faire précisément ? [CONTRAINTES] → Quelles sont les limites (stack, perf, sécurité) ? [FORMAT] → Que dois-tu recevoir en sortie ?

Exemple — vague vs structuré

Prompt vague :

Prompt
Écris-moi une fonction pour valider les emails

Prompt structuré :

Prompt
[RÔLE] Tu es un senior backend engineer TypeScript. [CONTEXTE] Je travaille sur un service d'authentification NestJS (v10). On utilise class-validator pour la validation des DTOs. Voir le pattern existant dans @src/auth/dto/register.dto.ts [TÂCHE] Écris une fonction validateEmail(email: string): boolean qui respecte RFC 5321 et bloque les emails avec domaines jetables. [CONTRAINTES] - Aucune dépendance externe — regex pur TypeScript - Gérer les cas null/undefined gracieusement - Performance : < 1ms pour 1000 appels [FORMAT] - Fonction uniquement (pas de classe) - JSDoc complet - 3 exemples de test unitaire Jest inline en commentaire

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.

Prompt
Je veux implémenter [description brève]. Avant de commencer, interviewe-moi en détail. Pose des questions sur : l'implémentation technique, les edge cases, les tradeoffs, les contraintes non évidentes. Ne pose pas de questions triviales. Creuse les parties difficiles. Continue jusqu'à avoir tout ce qu'il faut, puis génère une spec dans SPEC.md.

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 — injecte uniquement 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 sait pas ce qui n'allait pas elle refera la même erreur au prochain prompt. 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 reproduise plus l'erreur.

Prompt
Agis maintenant en tant qu'Architecte Senior. Analyse le code que tu viens de produire selon ces critères : 1. Performance : y a-t-il des N+1, des allocations inutiles ? 2. Sécurité : injection, gestion des erreurs, exposition de données ? 3. SOLID : couplage fort ? responsabilité unique respectée ? 4. Maintenabilité : complexité cyclomatique, lisibilité ? Pour chaque problème trouvé, propose une version refactorisée.

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 :

Prompt
[MODE ANALYSE UNIQUEMENT — N'écris aucun code] Analyse le fichier OrderService.ts. Identifie : 1. Toutes les dépendances sortantes (injections, imports) 2. Les effets de bord si je modifie la méthode processOrder() 3. Les tests existants qui couvrent cette méthode 4. Les risques de régression Livre un rapport d'analyse structuré. Si l'analyse révèle une incompréhension, arrête et signale-le.

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 negatives ("ne fais pas X")
  • Le tag <context>...</context> améliore la séparation signal/bruit
  • Préfixe tes règles critiques avec IMPORTANT: ou YOU 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
Prompt
## Contexte [Colle le fichier complet] ## Tâche Analyse ce service et identifie les problèmes de performance. Montre ton raisonnement étape par étape. Pour chaque problème, cite la ligne concernée. ## Format attendu Tableau : Ligne | Problème | Sévérité | Fix recommandé

ChatGPT / GPT-4o (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
Prompt
Réponds uniquement en JSON avec ce format : { "issue": "description", "severity": "high|medium|low", "fix": "code corrigé", "explanation": "pourquoi" } Analyse ce code TypeScript pour les problèmes de typage : [code]

4. Bibliothèque de prompts essentiels

Analyse & debug

Prompt
# ANALYSE DE CODE Analyse ce [fichier/fonction/module]. Identifie : dépendances sortantes, effets de bord, risques. [MODE LECTURE SEULE — pas de code] # DEBUG L'erreur suivante apparaît : [stack trace] Contexte : [ce que j'essayais de faire] Fix : identifie la cause racine. Ne supprime pas l'erreur — résous-la. Vérifie que le fix n'introduit pas de régression.

Génération de code

Prompt
# NOUVEAU ENDPOINT REST Stack : [NestJS/Express/Laravel/...] Contexte : [description du service existant] Pattern : voir @[fichier existant similaire] Endpoint : [méthode] [route] → [ce qu'il fait] Contraintes : [auth, validation, perf...] Format : Controller + DTO + Service method + test unitaire

Tests

Prompt
# GÉNÉRATION DE TESTS Agis en QA Engineer senior. Génère des tests [Jest/Vitest/JUnit] pour [fonction/service]. Couvre obligatoirement : - Happy path (cas nominal) - Edge cases (null, undefined, empty, boundary values) - Gestion d'erreurs (exceptions attendues) - Cas de sécurité si pertinent Utilise des données réalistes, pas des mocks triviaux.

Revue sécurité

Prompt
# AUDIT SÉCURITÉ Agis en expert sécurité applicative (OWASP Top 10). Analyse ce code pour : 1. Injection (SQL, XSS, command injection) 2. Mauvaise gestion d'authentification/autorisation 3. Secrets codés en dur ou exposés dans les logs 4. Validation des entrées manquante 5. Exposition de données sensibles Pour chaque problème : ligne, sévérité (Critical/High/Medium), fix.

Documentation

Prompt
# DOCUMENTATION AUTO Génère la documentation JSDoc/PHPDoc/JavaDoc pour [fonction/classe]. Inclus : description, @param avec types et descriptions, @returns, @throws, @example avec un cas concret. Style : clair, concis, orienté "pourquoi" pas "quoi".

Refactoring

Prompt
# REFACTORING Ce code fonctionne mais doit être amélioré. Objectifs : [lisibilité / performance / réduction complexité / SOLID] Contraintes : ne pas changer l'interface publique, garder les tests verts. Approche : propose d'abord le plan de refactoring. Attends ma validation avant d'écrire le code.

5. Les anti-patterns de prompt

Anti-patternExemplePourquoi c'est mauvaisFix
Trop vague"améliore ce code"L'IA improvise selon ses propres critèresSpécifier les critères d'amélioration
Trop autoritaire"sois clean et SOLID"Vague, interprétation variableDonner 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 boucleCorriger 3× sans changer de promptLe contexte se pollue, qualité baisse/clear + nouveau prompt enrichi
Demande trop large"réécris tout le module"Résultat imprévisible, non reviewableDécouper en étapes atomiques