ChatGPT – Gestion du Contexte & Sessions
Préserver la cohérence, savoir réinitialiser et découper intelligemment.
Rappel de contexte (résumer avant de relancer)
Avant toute nouvelle demande, fournis un résumé d’état court et structuré. Il sert d’« ancre » pour le modèle et réduit les ambiguïtés.
🎯 Objectif
- Donner au modèle ce qui est vrai maintenant (stack, versions, fichiers, étapes validées).
- Encoder les contraintes (format de sortie, bornes, fichiers autorisés) à chaque relance.
- Éviter de « repartir à zéro » sans le vouloir.
🧱 State Pack — modèle minimal (copier/coller)
PROJET : Ideo-Lab (Django 4.2 + MariaDB + Bootstrap 5)
OBJECTIF ACTUEL : <ex : ajouter un formulaire Feedback avec honeypot + throttle>
STACK / VERSIONS : Python 3.11, Django 4.2, Bootstrap 5.3
CONTRAINTES :
- PEP8, chemins de fichiers exacts
- Sortie par blocs : fichier ➜ code
- Si > 120 lignes cumulées : STOP & question
FICHIERS AUTORISÉS :
- models.py, forms.py, views.py, urls.py
- templates/<app>/*.html, static/js/*.js
DERNIÈRE ÉTAPE VALIDÉE : <ex : modèle + migration OK>
PROCHAINE ÉTAPE DEMANDÉE : <ex : vue CBV + url + tests>🧪 Evidence Pack — pour les bugs
- Repro : étapes claires (1–N) + données d’entrée.
- Trace : stack trace + extrait de log (20 lignes max).
- Surface : fichiers possiblement impliqués.
REPRO : POST /feedback/ avec payload X → 500
TRACE (extrait) : IntegrityError: UNIQUE constraint failed...
SURFACE : feedback/models.py, feedback/views.py (l.12–60)🧩 En-tête de prompt (à coller avant la demande)
[STATE PACK] ... (ci-dessus)
[DEMANDE] Donne uniquement <élément précis> en respectant CONTRAINTES et format bloc-par-fichier.
[VERIF] Liste 3 contrôles pour valider l’étape.✅ Exemple rempli (Ideo-Lab)
PROJET : Ideo-Lab (Django 4.2 + MariaDB + Bootstrap 5)
OBJECTIF ACTUEL : Feedback form: modèle + vue + template + throttle IP
DERNIÈRE ÉTAPE VALIDÉE : Modèle + migration OK
PROCHAINE ÉTAPE DEMANDÉE : Vue CreateView + url + tests pytest (ok/honeypot/throttle)
CONTRAINTES : blocs par fichier, chemins exacts, Bootstrap 5, <= 120 lignes → STOPReset de projet (quand & comment)
Le reset consiste à ouvrir un nouveau fil en transportant un résumé propre et les contraintes. Il isole le sujet et restaure la cohérence.
🧭 Déclencheurs de reset
- Réponses devenues génériques ou qui ignorent des contraintes claires.
- Changement d’objectif significatif (nouvelle feature / gros pivot).
- Conversation trop longue : premières infos hors fenêtre de contexte.
🧼 Deux types
- Soft reset : même fil, on colle un « State Pack » actualisé et on repart.
- Hard reset : nouveau fil + State Pack + décision finale de l’étape précédente.
🛠️ Rituel de reset (prêt à l’emploi)
1) Ouvre un nouveau fil intitulé : [IA/ChatGPT] <thème> – <étape>
2) Colle le STATE PACK (stack, contraintes, fichiers autorisés).
3) Rappelle le format de sortie attendu (bloc par fichier, diff si modif).
4) Demande un mini-plan (3–5 étapes) et valide étape 1 uniquement.
5) À chaque étape : copie les contrôles/commandes à exécuter, puis valider.📎 Gabarit « RESET PACK »
[RESET PACK]
Projet : <…>
Objectif : <…>
Étape demandée : <ex : Modèle + admin>
Contraintes : <fichiers autorisés, format de sortie, bornes>
Sortie : blocs par fichier + commandes manage.py
Dis, en 3 puces, ce que tu vas livrer et comment on contrôle.⛔ Pièges fréquents
- Laisser le modèle « inventer » des fichiers non autorisés.
- Demander 5 choses en même temps (migrations + vue + template + tests).
- Ne pas verrouiller les versions (ex : Django 5 au lieu de 4.2).
Limiter la dérive des réponses
La dérive vient de l’oubli du début de conversation, d’objectifs flous, ou d’instructions contradictoires. On la combat par des ancres, des bornes et des vérifications.
🧷 Contre-mesures essentielles
- Ancre systématique : coller le State Pack avant chaque demande importante.
- Température 0–0.3 pour le code et le SQL.
- Bornes : « si > 120 lignes, stop et pose une question ».
- Preuves : exige
grep, chemins exacts, commandes à exécuter. - Sortie structurée : bloc par fichier, ou JSON si c’est parsé côté back.
🔁 Boucle de vérification (« self-check »)
"Avant de donner le code :
- Rappelle en 3 puces les contraintes.
- Donne 3 risques/alternatives et ton choix.
- Indique comment vérifier (tests/commandes)." 🧮 Budget de contexte (règle pratique)
- Garde le State Pack < 250–400 mots pour rester dans la fenêtre.
- Préférer des liens/chemins précis à des grands pavés textuels.
✂️ Travailler par tranches
ÉTAPE N : "Donne uniquement <élément> (max 60 lignes), bloc par fichier.
Si tu dépasses, arrête-toi et demande quel fichier détailler en premier."🧰 Exemple — garde-fous combinés
[STATE PACK] …
[DEMANDE] Vue CBV + URL (rien d’autre), Bootstrap 5, chemins exacts.
[BOUNDS] ≤ 60 lignes ; si + : STOP.
[SELF-CHECK] contraintes ✔︎ / risques ✔︎ / contrôles ✔︎Découpage logique (un thème = une conversation)
Un fil = un objectif cohérent. On découpe par « tranches verticales » (valeur livrable) ou « tranches horizontales » (technique), mais sans tout mélanger.
🪚 Deux stratégies de découpe
- Verticale (préférée) : une mini-feature utilisable (ex : « formulaire Feedback » : modèle → vue → template → tests).
- Horizontale : une couche technique (ex : « traductions i18n – extraction des templates »).
📦 Tâches atomiques courantes (Ideo-Lab)
- Django modèle+admin → migration → test CRUD minimal.
- Vue+URL → template minimal → tests (OK/erreur/permissions).
- Asset JS/CSS → intégration <script>/static → contrôle console.
- RAG / recherche → indexation → requête de test → évaluation.
✅ Definition of Done (DoD) — gabarit
DOD :
- Code linté (PEP8) + chemins/noms conformes
- Tests : 1 succès + 1 erreur + 1 edge case
- Commandes d’exécution fournies et passantes
- Documentation courte (README section / commentaire en tête)🧭 Nommage & Handover
Nom de fil : [App] <Feature> – Étape <N>
Handover quand on change de fil :
- State Pack + décision finale
- Prochaine étape demandée (une seule)📁 Exemples d’arborescence de fils
1) i18n — extraction & graphe de templates
2) IA — page ChatGPT (menus + modales)
3) Feedback — formulaire + throttling
4) SEO — sitemap.xml + robots.txt