Blog

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

#SujetArticle
000Visionhpq-vision-quiz
001Intégrationhpq-dans-le-portfolio
002Designhpq-design-system
003Geminihpq-gemini-provider
004Stockagehpq-stockage-dedup
005Repopulationhpq-repopulation
006Validationcet article

Les ADR internes restent dans les rules Cursor ; ces articles en sont la version publique sur le blog.

Quiz : andrewchicout.dev.