CommunityRédaction et éditiongithub.com

reduce-hallucination

Auditez les agents LLM contre les hallucinations en utilisant des techniques issues de la science de l'interrogatoire. Ancrez, citez, abstenez-vous. Une compétence d'agent ouverte.

Qu'est-ce que reduce-hallucination ?

Cette compétence, conçue pour les agents IA (Claude Code, Cursor, etc.), transforme les techniques vérifiées de la science de l'interrogatoire (utilisées pour obtenir la vérité d'un témoin compétent) en un audit standard pour les LLM. Chaque nœud LLM est traité comme un témoin, et la transition entre les nœuds comme une transcription de témoignage. L'objectif est de détecter et de corriger les hallucinations (fabrications, déformations, citations erronées) dans les pipelines d'agents LLM. La compétence s'appuie sur trois piliers : une citation doit être fidèle (exacte), pertinente (en lien avec la question) et *supportive* (c'est-à-dire qu'elle soutient réellement l'affirmation, et non la contredit). Elle propose un protocole d'audit en cinq phases, allant de l'interrogation de chaque nœud (détection de signaux d'alarme comme l'absence d'option 'inconnu') à la vérification des flux de données entre les nœuds, en passant par la confrontation avec les enregistrements de tâches. Elle offre également trois couches de correctifs classés par retour sur investissement : des corrections de prompt/schéma, un validateur de code déterministe, et un nœud d'examen croisé LLM. L'ensemble est documenté dans un fichier SKILL.md très détaillé, avec des exemples concrets et une structure de rapport d'audit.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add zhichao1208/reduce-hallucination

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait reduce-hallucination ?

Transformez les techniques vérifiées que la science de l'interrogatoire utilise pour amener un témoin compétent à dire la vérité en un audit standard pour les agents LLM. Chaque nœud LLM est un témoin. La transition entre les nœuds est la transcription du témoignage. Les corrections de l'utilisateur et les enregistrements de tâches sont des preuves physiques.

La théorie et les preuves se trouvent dans references/. Lisez references/research-map.md pour les citations derrière chaque affirmation.

Trois règles de fer

  1. Pas d'accusation sans preuve (règle de Wellman). Chaque constat doit citer la requête, le schéma ou la sortie réelle concerné. Un soupçon sans citation va dans une liste « à vérifier », pas dans les constats.
  2. Les signaux de surface ne prouvent pas la vérité. Un texte fluide, confiant et détaillé n'est pas plus correct qu'un texte laconique. Les gens lisent la tromperie à partir du comportement à peu près au hasard. Jugez uniquement le contenu : l'ancrage, la cohérence, si l'étendue citée existe.
  3. L'auto-correction nécessite un nouveau signal externe. « Êtes-vous sûr ? Vérifiez à nouveau » sans nouvelle preuve dégrade la précision. Chaque nouvelle vérification doit injecter des résultats récupérés ou la sortie du validateur.

Les trois piliers d'une bonne citation

La qualité des citations se décompose en trois vérifications, par ordre croissant de difficulté et de valeur :

PilierQuestionStatut aujourd'hui
FidèleLa citation est-elle textuellement réelle et l'affirmation non fabriquée ?En grande partie résolvable : correspondance textuelle de chaîne + abstention.
PertinenteLa source est-elle sur le sujet pour la question ?En grande partie résolvable : qualité de la récupération + sondage de cohérence.
SupportiveLa source soutient-elle l'affirmation, vs la contredit-elle, vs reste-elle neutre ?La frontière. Difficile, et la rare classe « contredit » est celle où les systèmes sont les plus faibles.

Une citation qui correspond à un passage réel et pertinent mais qui ne soutient pas réellement l'affirmation (« mé-ancrage ») est pire qu'aucune citation, car elle crée une confiance artificielle sur une affirmation erronée et désarme la seule défense qui fonctionne pour le réviseur (vérifier le contenu). Montrer une citation sans la vérifier en arrière-plan rend l'hallucination plus dangereuse, pas moins.

Protocole d'audit

Phase 1 — interrogez chaque témoin (drapeaux rouges de la requête et du schéma)

Pour chaque nœud LLM, exécutez la liste des drapeaux rouges. Chaque drapeau est une violation d'interrogatoire.

#Drapeau rouge (quoi chercher)Pourquoi c'est importantPréjudice
R1Un champ d'énumération sans option null / unknown ; une instruction unidirectionnelle « générez une confirmation de X ».Forcer une réponse produit de la conformité (analogue à de faux aveux).Fabrication forcée, élaboration confiante.
R2La prose accorde une abstention (« utilisez null si absent ») mais le schéma n'a pas de null.Le schéma l'emporte, l'abstention est nulle.Fabrication silencieuse.
R3La requête demande des preuves/citations, mais rien en aval ne les vérifie.Dire sans vérifier apprend au modèle à fabriquer des citations plus convaincantes.Ancres fictives.
R4Instructions directionnelles : « soyez conservateur », « supposez », « déduisez de », « par défaut à ».Présomption unidirectionnelle ; combiné avec R1, cela produit un biais systématique.Sortie biaisée dans une direction.
R5Un champ agrégé sans unité définie (« années totales », « score global »).Une mesure doit avoir son unité déclarée avant de pouvoir être verrouillée.Inadéquation de définition interprétée comme une erreur d'extraction.
R6Exemples few-shot qui sont hors tâche ou qui modélisent un raisonnement sans citation.Les exemples fixent l'attente d'une réponse « bonne ».Enseigne le mauvais style de sortie.
R7La requête prétend que le nœud peut faire quelque chose pour lequel il n'a pas d'outil.Fausse prémisse.Narration de processus fabriquée.
R8Un « fait » fourni par l'utilisateur ou un nœud amont, utilisé comme vérité sans balise de source.Ne confronter qu'avec des preuves vérifiées.Pollution des prémisses.
R9Un modèle avec un emplacement obligatoire et aucune branche vide.La version modèle de forcer une réponse.Un blanc est rempli avec la valeur la plus proche.
R10Nouvelle vérification / nouvelle tentative écrite de manière agressive (« vous vous êtes trompé, corrigez ») sans nouvelle preuve.La sycophantie inverse les réponses correctes.Les bonnes réponses sont annulées.

Enregistrez chacun comme : nœud | R# | texte cité | conséquence en une ligne.

Phase 2 — auditez la transcription (limites des nœuds / flux de données)

C'est là que se produit la plupart des hallucinations de pipeline. Dessinez le flux de données et vérifiez chaque arête :

  1. L'incertitude traverse-t-elle la frontière ? confidence / missing_fields / null / notes en amont — est-ce que quoi que ce soit en aval les consomme, ou un modèle les aplatit-il en une assertion ? Recherchez l'incertitude « lettre morte » : produite mais jamais lue.
  2. La provenance est-elle perdue ? Une valeur que le raisonnement en amont admet être « supposée/déduite » devient un fait non marqué en aval. Le schéma devrait porter stated | inferred | absent.
  3. Les catégories de faits se croisent-elles ? Des données de configuration ou d'exigence rendues comme si l'utilisateur/le document les avait affirmées.
  4. Un agrégat change-t-il d'unité ? « années médicales totales » en amont devient « années en tant que titre X » en aval.
  5. Le LLM effectue-t-il un calcul déterministe ? Le calcul de dates, les sommes, les décomptes dans une requête doivent être déplacés vers une étape de code.

Phase 3 — faites correspondre les preuves physiques (lorsque des enregistrements de tâches existent)

  1. Extrayez les sorties intermédiaires des nœuds pour un échantillon de tâches (privilégiez celles avec des corrections d'utilisateur ou des échecs).
  2. Comparez la sortie finale avec chaque sortie intermédiaire de nœud par rapport à l'entrée brute, champ par champ ; localisez quelle première frontière a perdu la vérité.
  3. Trouvez des déclarations antérieures incohérentes : le même champ se contredisant d'un nœud à l'autre.
  4. Si les corrections sont directionnelles (systématiquement dans un sens), revérifiez les instructions directionnelles de la phase 1 R4 ; une erreur aléatoire pointe davantage vers la qualité de l'entrée.
  5. Classez honnêtement : « information qui n'a jamais été dans la source » (un écart de processus, pas une hallucination) vs « information qui était dans l'entrée mais formulée incorrectement » (une véritable hallucination).

Phase 4 — correctifs classés (par ROI)

Couche 1 — requête / schéma (aucun changement structurel)

  • Chaque R1/R2 → ajoutez une énumération null/unknown + une ligne dé-stigmatisante (« X est une réponse correcte et attendue »).
  • Chaque R9 → ajoutez une branche vide au modèle (l'assertion devient une question ouverte).
  • Chaque R5 → divisez l'unité, ou affichez une plage {floor, ceiling}.
  • Chaque R3 → ajoutez un triplet {value, source, evidence_quote} aux champs porteurs de charge.

Couche 2 — un validateur de code déterministe (coût LLM nul)

ValidateurVérifications
Liste blanche d'énumérationLa valeur du champ est dans l'ensemble autorisé.
Correspondance textuelle de chaîneevidence_quote existe textuellement dans la source citée ; sinon, rejetez ou dégradez.
Cohérence entre champsLes totaux se réconcilient ; missing_fields ne contredit pas les valeurs remplies.
Calcul d'unitéLes différences de dates / sommes effectuées dans le code ; le LLM ne fait que de l'extraction sémantique.
Contrat de sortieChaque emplacement de fait visible par l'utilisateur est non vide et provient d'un champ source autorisé.

Placez-le avant tout nœud qui produit du contenu visible par l'utilisateur. En cas d'échec, écrivez un indicateur de repli et acheminez vers une question ouverte ou un humain.

Couche 3 — un nœud d'examinateur croisé LLM (LM-contre-LM)

  • Un nœud séparé qui reçoit uniquement la sortie examinée plus le document source (pas le contexte polluant).
  • Formulez la tâche pour réfuter : « Essayez de réfuter : est-ce que chaque affirmation dans cette sortie remonte au document source ? Listez les affirmations qui ne le font pas. »
  • Sortie {verdict, offending_claims[]} ; pour les flux à enjeux élevés, reposez la question dans un ordre différent et prenez un vote de cohérence.
  • Coût : +1 appel LLM par tâche — limitez-le aux sorties visibles par l'utilisateur ou aux décisions à enjeux élevés uniquement.

Phase 5 — le rapport

# Audit d'hallucination — {agent}
## Verdict en une ligne
## Aperçu des preuves (nœuds / version auditée / échantillon de tâches / échantillon de corrections + direction)
## Constats (chaque : emplacement | R# | texte cité | conséquence | correctif #)
## Carte des flux de données et canaux de lettres mortes
## Recommandations de correctifs (Couche 1/2/3, chacune étiquetée avec les constats qu'elle élimine)
## À vérifier (soupçons sans suffisamment de preuves + comment les obtenir)
## Limite honnête (quelles corrections sont des écarts de processus, pas des hallucinations ; ce que cet audit n'a pas couvert)

La supportivité comme frontière (extension facultative)

Fidèle + pertinent sont le minimum. Le problème ouvert est supportif : la source citée soutient-elle, contredit-elle ou reste-t-elle neutre sur l'affirmation ? Deux notes de la recherche :

  • Modélisez-le comme position plus degré. La position à trois voies (implique / contredit / neutre) manque le soutien partiel ou conditionnel, qui constitue l'essentiel des textes réglementaires et juridiques. Ajoutez un indicateur « partiel/conditionnel » qui achemine vers un examen humain.
  • La supportivité est relative à l'intention. Le même passage soutient « nous nous conformons » et contredit « nous avons une lacune », selon ce que l'utilisateur avance. Lorsque la position ou l'intention est incertaine, présentez à la fois une source qui soutient et une source qui contredit et laissez l'utilisateur choisir. Présentez la direction comme un indicateur invitant à l'examen, pas comme un verdict.

Rappels

  • Si une requête est « choquante », vérifiez d'abord s'il s'agit d'un modèle généré automatiquement (la répétition Rôle/Objectif/Tâche en est le signe). « Un problème systématique avec ce générateur » vaut mieux que d'énumérer le même défaut par agent.
  • Contrastez au sein d'un même agent : quels champs sont propres et lesquels échouent. La différence est généralement la réponse (les champs avec une option unknown ont tendance à être propres).
  • Passez le rapport à travers une étape de révision en langage clair : un constat doit être compréhensible pour quelqu'un qui n'a pas lu la théorie.

Compétences connexes

Fait partie d'une petite famille de compétences d'agent ouvertes pour une communication fiable et claire :

  • reduce-hallucination — auditer les agents LLM ; ancrer, citer, s'abstenir.
  • better-doc — Style classique + Brièveté intelligente.
  • numbers — donner du sens aux chiffres, et les afficher proprement.

Skills associés