Grounding et double passe : limiter les hallucinations du Quiz HP
- hpq
- llm
- validation
- adr
- mdx
HPQ-000 exige une hallucination quasi-nulle. Un prompt « sois factuel » ne suffit pas. Le pipeline retenu combine grounding (source de référence) et double passe (génération puis vérification).
Articles précédents : Gemini · stockage · repopulation.
Pipeline en deux temps
1. Génération avec grounding
Le prompt inclut une fiche de faits du film concernée — rédigée dans mes propres mots, pas copiée depuis Harry Potter Wiki ou HP Lexicon (faits bruts OK, formulation protégée non).
Gemini produit en JSON :
- statement — affirmation vrai/faux en français
- answer — boolean
- sujet — tag snake_case pour la dédup
Règles injectées : film unique, ~50 % de faux crédibles, sujet nouveau (liste des sujets existants fournie), calibrage difficulté obligatoire.
2. Validation en double passe
Second appel avec la même fiche + l'affirmation générée. Verdict structuré : valid true/false + reason optionnelle.
Rejet si :
- contradiction avec la fiche
- mélange de films
- faux absurde ou ambigu
- mauvais calibrage (question trop facile pour hard, trop obscure pour easy, etc.)
Si invalide → pas d'insert, nouvelle génération (max 5 tentatives par question, puis abandon).
Fiches de faits
Un dossier par film dans le domaine HPQ facts :
- Template partagé
- Film 1 rempli (Philosopher's Stone / École des sorciers)
- Films 2–8 : à rédiger — prérequis avant populate sur ces films
Sources de vérification : Harry Potter Wiki, HP Lexicon — consultées, jamais copiées. Le Lexicon a été poursuivi en 2008 pour reprise de texte protégé : d'où la règle de reformulation.
Calibrage des difficultés
Sans règles explicites, Gemini produisait les mêmes questions basiques pour easy, medium et hard.
Fichier difficulty.ts — guidance injectée dans génération et validation :
- Facile — personnages principaux, moments iconiques, une idée par phrase
- Moyen — secondaires, objets/lieux précis, pas les clichés faciles
- Difficile — détails fins, quasi-vrais subtils, réservé aux fans
La validation rejette une question mal calibrée même si elle est factuellement correcte.
Coût quota
~2 appels Gemini minimum par question acceptée, plus les rejets (doublon sujet, validation failed).
Bootstrap 720 questions (24 × 30) ≈ 1500+ requêtes — plusieurs jours de populate réalistes sur free tier, surtout avec quotas par modèle (cf. article Gemini).
Alternatives écartées
- Grounding seul — pas de filet si le modèle ignore le contexte
- Double passe seule — génération sans ancrage, plus de rejets en aval
- JSON strict seul — ne répond pas au critère hallucination quasi-nulle
Limites honnêtes
- Zéro hallucination reste irréaliste ; on filtre, on ne garantit pas
- Qualité des fiches = plafond de qualité des questions
- Sujet qui échoue 5 fois d'affilée → trou dans le stock pour ce combo
- Tags sujet incohérents → quasi-doublons possibles (surveiller empiriquement)
Série HPQ — bilanc
| # | Sujet | Article |
|---|---|---|
| 000 | Vision | hpq-vision-quiz |
| 001 | Intégration | hpq-dans-le-portfolio |
| 002 | Design | hpq-design-system |
| 003 | Gemini | hpq-gemini-provider |
| 004 | Stockage | hpq-stockage-dedup |
| 005 | Repopulation | hpq-repopulation |
| 006 | Validation | cet article |
Les ADR internes restent dans les rules Cursor ; ces articles en sont la version publique sur le blog.
Quiz : andrewchicout.dev.