ChatGPT â Prompt Engineering
Formuler des prompts efficaces pour le développement web.
Clarté & concision
Un bon prompt est spécifique, testable et court. Il supprime les zones grises et impose un format de sortie exploitable par le dev (ou par un script).
đŻ Objectifs de clartĂ©
- Dire ce quâon veut (rĂ©sultat observable) et ce quâon ne veut pas (pĂ©rimĂštre exclu).
- Fixer un format de sortie (ex. âbloc par fichierâ, âdiff unifiĂ©â, âJSONâ).
- Fournir bornes : taille max, étapes, questions si dépassement.
â Check-list express (avant dâenvoyer)
- Résultat attendu = 1 phrase mesurable.
- Contexte minimal (stack, versions, conventions) présent.
- Format de sortie imposé.
- Bornes (lignes, stop, validation) posées.
- Exemples si nĂ©cessaire (few-shot) â âimite ce styleâ.
đ§± Patron concis (copier/coller)
OBJECTIF : <livrable concret> (observable en 1 test / capture dâĂ©cran)
FORMAT : <bloc par fichier | diff | JSON>
CONTRAINTES : <versions, libs, style (PEP8), fichiers autorisés>
BORNES : si > 120 lignes cumulĂ©es â STOP & pose une questionđ§š Mots ambigus Ă bannir (et alternatives)
âamĂ©liorerâ, âoptimiserâ, ârendre joliâ â prĂ©ciser mĂ©trique / rĂšgle (ex. LCP < 2.5 s)
âfais toutâ, âdĂ©cideâ â plan 3-5 Ă©tapes + valider Ă©tape 1
âgĂ©nĂšre un exempleâ â format JSON valide + schĂ©mađ§Ș Auto-contrĂŽle demandĂ© au modĂšle
"Avant le code, rappelle en 3 puces (1) contraintes, (2) risques/alternatives,
(3) contrĂŽles/tests pour vĂ©rifier la solution."đ Exemple clarifiĂ©
OBJECTIF : Créer un formulaire Contact Django (nom, email, message) avec honeypot + rate-limit IP.
FORMAT : bloc par fichier (chemin exact) + 3 tests pytest (ok / honeypot / throttle).
CONTRAINTES : Django 4.2, Bootstrap 5, PEP8, fichiers autorisés uniquement.
BORNES : <= 120 lignes cumulées, sinon STOP & question.Contextualisation
Le contexte alimente la fenĂȘtre dâattention du modĂšle. Plus il est structurĂ© et pertinent, plus la rĂ©ponse est fiable (moins dâhallucinations).
đŠ Context Pack â gabarit
PROJET : <nom> â <but produit>
STACK : Python 3.11, Django 4.2, MariaDB, Bootstrap 5
ARCHI : templates Django, static/js pour scripts, admin custom
CONVENTIONS : PEP8, CBV si pertinent, âbloc par fichierâ pour les rĂ©ponses
FICHIERS AUTORISĂS : models.py, admin.py, views.py, urls.py, templates/<app>/*.html, static/js/*.js
RĂFĂRENCES : <chemins ou modules utiles>đ§ Contexte utile (et inutile)
- Utile : versions exactes, fichiers autorisés, organisation des dossiers, schémas de données, endpoints, contraintes légales/sécu.
- Inutile : longs historiques hors sujet, captures verbeuses, âbla-blaâ marketing.
đ§± Repo snapshot (exemple raccourci)
accounts/
models.py, admin.py, views.py, urls.py
ia/
views.py, templates/ia/chatgpt_*.html
common/
templates/common/base_dashboard_2025.html
static/js/landing_page.jsâïž ParamĂštres dâinfĂ©rence recommandĂ©s (code)
- TempĂ©rature 0â0.3 (moins de variabilitĂ©).
- Sortie JSON quand câest parsĂ© cĂŽtĂ© back.
- Demande de preuves (grep, chemins, commandes) pour rĂ©duire lâinvention.
đ§© Exemple complet
PROJET : Ideo-Lab
OBJECTIF : Ajout dâun modĂšle âArticleâ + admin + ListView + URL + template.
STACK/CONVENTIONS : Django 4.2, Bootstrap 5, PEP8, bloc par fichier.
FICHIERS AUTORISĂS : blog/models.py, blog/admin.py, blog/views.py, blog/urls.py, templates/blog/article_list.html
BORNES : <= 120 lignes ; sinon STOP & question.
SORTIE : blocs par fichier + commandes manage.py + 1 test pytest (liste non vide).Progressivité (itérations courtes)
DĂ©couper le travail en Ă©tapes courtes et validables Ă©vite la dĂ©rive et facilite la relecture. On crĂ©e un rythme : plan â Ă©tape N â validation â Ă©tape N+1.
đșïž Protocole dâitĂ©ration
1) Demander un plan 3â5 Ă©tapes.
2) Dire âOK Ă©tape 1â : livrer uniquement lâĂ©tape 1 (stop aprĂšs).
3) Exécuter les contrÎles/tests proposés.
4) Valider / demander une retouche.
5) Passer Ă lâĂ©tape suivante.âïž Gabarit âĂtape Nâ
"Ok étape N. Donne uniquement <élément> (max 60 lignes).
Format bloc par fichier. Si dĂ©passement â STOP et propose un split logique."đ§Ș Gate review (avant dâavancer)
- Build passe / migrations appliquées / tests OK ?
- Noms/chemins conformes, pas dâeffets de bord ?
- Diff minimal (si modif) + doc courte / commentaires de tĂȘte ?
đ Exemple âCRUD en 3 tranchesâ
Ătape 1 : ModĂšle + admin + migration (+ test modĂšle simple)
Ătape 2 : Vue ListView + URL + template minimal (+ test liste)
Ătape 3 : Form (Create) + tests (OK/erreur/permission)đ Stop conditions (le modĂšle doit sâarrĂȘter)
⹠> 120 lignes cumulées
⹠Changement de périmÚtre imprévu
âą DĂ©pendance manquante dĂ©tectĂ©eExemples concrets â bons vs mauvais prompts
âBon vs mauvaisâ permet de voir immĂ©diatement ce quâon change pour rendre un prompt exploitable par un dev.
A) Scaffold Django (CRUD + admin)
Mauvais :
"Fais un blog Django."
Bon :
RĂLE : Architecte Django senior
OBJECTIF : ModÚle Article(title, slug unique, body, published_at, is_published) + admin + ListView paginée + URL + template Bootstrap 5.
FICHIERS AUTORISĂS : blog/models.py, blog/admin.py, blog/views.py, blog/urls.py, templates/blog/article_list.html
CONTRAINTES : PEP8, chemins exacts, si >120 lignes â STOP & question
SORTIE : blocs par fichier + commandes manage.py + 1 test pytest (liste non vide)B) Bug avec stack trace
Mauvais :
"Ăa plante, aide-moi."
Bon :
"Voici la stack trace (20 lignes) et views.py (l.10â60).
Explique la cause probable en 3 points, propose 1 patch minimal (diff unifié)
et 1 test pytest qui Ă©choue avant / passe aprĂšs. Bloc par fichier."C) SQL â ORM + index
Mauvais :
"Convertis cette requĂȘte."
Bon :
"Convertis cette requĂȘte SQL en QuerySet Django. Donne lâindex Ă ajouter
(champ + ordre) pour optimiser le WHERE et lâEXPLAIN attendu. Bloc par fichier."D) Composant React (Next.js 14 + Tailwind)
Mauvais :
"Fais un formulaire React."
Bon :
"Crée un composant 'ContactForm' contrÎlé (nom, email, message),
validation (email/longueur), props typĂ©es, Tailwind uniquement, exemple dâusage.
Fournis le code complet + snippet dâintĂ©gration. <= 120 lignes, sinon STOP."E) GĂ©nĂ©rer des tests Ă partir dâune spec
Mauvais :
"Fais des tests."
Bon :
"à partir de ce schéma OpenAPI (extrait), écris 3 tests pytest (succÚs/erreur/permission),
avec fixtures. Indique les commandes pour les exĂ©cuter. Bloc par fichier."đ§Ż Anti-patterns courants â corrections
âFais toutâ â Plan 3â5 Ă©tapes + OK Ă©tape 1 seulement
âOptimiseâ â Donne mĂ©trique/objectif et mĂ©thode de mesure
âĂcris du codeâ â Format bloc par fichier + bornes + tests