Gemini 2.5 – Gestion du Contexte & Sessions
Préserver la cohérence, savoir réinitialiser et découper intelligemment.
Rappel de contexte (résumer avant de relancer)
Avec Gemini 2.5, un rappel d’état court et structuré sert d’ancre et réduit les ambiguïtés. Transmets-le avant chaque relance importante.
🎯 Objectifs
- Exprimer ce qui est vrai maintenant : stack/versions, fichiers autorisés, étape validée.
- Encoder les contraintes de sortie (bloc par fichier / JSON + schéma), bornes (STOP si dépassement).
- Préciser modèle & région Vertex AI, sécurité (safety settings) et tools autorisés.
🧱 STATE PACK — gabarit Vertex AI
PROJET : Ideo-Lab
OBJECTIF ACTUEL : <livrable concret mesurable>
STACK / VERSIONS : Python 3.12, Django 5, Bootstrap 5
VERTEX : project=<ID>, region=us-central1, model=gemini-2.5-pro
CONTRAINTES :
- Sortie : <bloc par fichier | JSON (schema) | diff unifié si modif>
- ≤ 120 lignes cumulées ➜ STOP & question
- FICHIERS AUTORISÉS : app/{models.py,views.py,urls.py}, templates/app/*.html, static/js/*.js
TOOLS AUTORISÉS : <none | lookup_doc | web | code_interpreter>
RAG / SOURCES : <datastore Vertex AI Search> (citer les passages)
DERNIÈRE ÉTAPE VALIDÉE : <ex : modèle + migration OK>
ÉTAPE DEMANDÉE : <ex : ListView + URL + template + 1 test>🧪 Evidence Pack (bugs)
REPRO : 1) ... 2) ... 3) ...
TRACE (20 lignes max) : ...
SURFACE : views.py (l.12–60), models.py🧩 Sortie JSON typée (Vertex AI)
from vertexai.generative_models import GenerationConfig, ResponseSchema
schema = ResponseSchema(type="object", properties={
"files":{"type":"array","items":{"type":"object","properties":{
"path":{"type":"string"},
"action":{"type":"string","enum":["create","patch"]},
"content":{"type":"string"}}}},
"commands":{"type":"array","items":{"type":"string"}}
}, required=["files"])
cfg = GenerationConfig(response_mime_type="application/json", response_schema=schema)Demande :
"Rends la réponse au format du schéma ci-contre.
Si tu modifies un fichier, fournis un DIFF UNIFIÉ dans 'content'."✅ Exemple rempli (Ideo-Lab)
PROJET : Ideo-Lab
OBJECTIF ACTUEL : Feedback form (honeypot + throttle IP)
DERNIÈRE ÉTAPE VALIDÉE : Modèle + migration OK
ÉTAPE DEMANDÉE : CreateView + URL + 3 tests (ok/honeypot/throttle)
VERTEX : project=acme, region=europe-west1, model=gemini-2.5-pro
CONTRAINTES : bloc-par-fichier, chemins exacts, ≤ 120 lignes → STOPReset de projet (quand & comment)
Le reset = ouvrir un nouveau fil en transportant un résumé propre + contraintes. Il isole le sujet et restaure la cohérence.
🧭 Déclencheurs
- Réponses génériques / contradictions persistantes.
- Changement d’objectif (feature majeure / pivot).
- Conversation trop longue (début hors fenêtre).
🧼 Types
- Soft reset : même fil + STATE PACK réactualisé.
- Hard reset : nouveau fil + STATE PACK + décision d’étape précédente.
🛠️ Rituel (5 étapes)
1) Nouveau fil : [IA/Gemini] <thème> – <étape>
2) Coller le STATE PACK (stack, modèles, contraintes, tools).
3) Rappeler le format de sortie attendu (bloc | JSON | diff).
4) Demander un mini-plan (3–5 étapes) et valider l’étape 1 seulement.
5) Exécuter les contrôles/commandes fournis, consigner le résultat.📎 RESET PACK — gabarit express
[RESET PACK]
Projet : <...> | Objectif : <...> | Étape demandée : <...>
Contraintes : fichiers autorisés, bornes, format de sortie
Vertex : project=<ID>, region=<...>, model=gemini-2.5-pro
Sortie : blocs par fichier + commandes manage.py
Dis en 3 puces ce que tu vas livrer et comment on valide.⛔ Pièges
- Laisser le modèle créer des fichiers non autorisés.
- Demander 5 tâches d’un coup (migrations + vues + templates + tests).
- Oublier les versions / la région / le modèle Vertex.
Limiter la dérive des réponses
La dérive vient d’un contexte incomplet, d’objectifs flous, ou d’instructions contradictoires. Remèdes : ancre, bornes, preuves, sortie structurée.
🧷 Contre-mesures essentielles
- Ancre systématique : coller le STATE PACK avant chaque demande importante.
- Température 0–0.3 pour code/SQL ; stop_sequences pour couper net.
- Bornes : “si > 120 lignes, STOP et pose une question”.
- Preuves : chemins exacts, commandes à exécuter, diff unifié, tests.
- Sortie JSON validée par
response_schemaquand le back applique.
🔁 Self-check (avant envoi)
"Avant de donner le code :
- Rappelle en 3 puces les contraintes.
- Donne 2 alternatives + ton choix.
- Indique comment vérifier (tests/commandes)."🧮 Budget de contexte (règle pratique)
- Garder le STATE PACK < 250–400 mots.
- Préférer chemins & références à de longs pavés.
- Tracer tokens/latence/coût pour chaque appel Vertex.
✂️ Travailler par tranches
ÉTAPE N : "Donne uniquement <élément> (max 60 lignes), bloc par fichier.
Si tu dépasses, STOP et propose un split."🧰 Exemple combiné
[STATE PACK] …
[DEMANDE] Vue CBV + URL (rien d’autre), Bootstrap 5, chemins exacts.
[BOUNDS] ≤ 60 lignes ; si + : STOP.
[SELF-CHECK] contraintes ✔︎ / alternatives ✔︎ / contrôles ✔︎Découpage logique (un thème = une conversation)
Un fil = un objectif cohérent. On découpe en « tranches verticales » (valeur livrable) ou « tranches horizontales » (technique), mais on évite de tout mélanger.
🪚 Stratégies
- Verticale (préférée) : mini-feature utilisable (p.ex. « Feedback » : modèle → vue → template → tests).
- Horizontale : une couche technique (p.ex. i18n templates, accessibilité, SEO).
📦 Tâches atomiques courantes
- Modèle+admin Django → migration → test CRUD minimal.
- Vue+URL → template minimal → tests (OK/erreur/permissions).
- Asset JS/CSS → intégration static → contrôle console.
- RAG/Grounding → indexation → requête test → évaluation/citations.
✅ Definition of Done (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 du fil : [App] <Feature> — Étape <N>
Handover quand on change de fil :
• STATE PACK + décision finale
• Prochaine étape demandée (une seule)