Menu

Hallucinations de l'IA : pourquoi les LLM inventent

Une hallucination de l'IA est une réponse assurée mais fausse : un fait, une citation, une fonction ou un paquet inventés. Elle vient de ce qu'un modèle de langage prédit un texte probable au lieu de chercher quoi que ce soit. Les prompts la réduisent ; seule la vérification l'attrape.

Chaque prompt de cette page se modifie, puis s'ouvre dans ChatGPT, Claude ou une autre application d'IA.

Une hallucination de l'IA est une réponse qui semble certaine et qui est fausse : un fait inventé, la citation d'un article qui n'existe pas, une fonction qu'une bibliothèque n'a jamais eue. Tous les modèles de chat le font, ChatGPT, Claude et Gemini compris. Ce n'est pas un bug qu'un correctif fera disparaître ; cela découle de la façon dont les modèles de langage produisent du texte. Les prompts peuvent rendre les hallucinations plus rares, et seule la vérification peut attraper celles qui restent.

Pourquoi les modèles de langage hallucinent

Un modèle de langage écrit un token à la fois, chacun choisi parce qu'il a de bonnes chances de suivre le texte déjà écrit. De bonnes chances au vu de tout ce que le modèle a vu pendant son entraînement. Rien dans ce processus ne va vérifier un fait. Quand la réponse était courante dans les données d'entraînement, la suite probable est en général la vraie. Quand elle était rare, récente ou totalement absente, le modèle produit quand même la suite la plus plausible, et un texte plausible sur un fait qu'il ne possède pas, c'est une hallucination.

Certains types de questions y sont plus exposés que d'autres :

  • Les détails précis : nombres exacts, dates, noms, numéros de version, références de pages. La forme de la réponse est facile à prédire ; le détail, non.
  • Les citations et les liens. Une référence a un format prévisible (auteurs, année, titre, revue), si bien qu'un modèle peut en produire une bien formée pour un article qui n'a jamais été écrit.
  • Les sujets rares ou récents : une petite bibliothèque, une réglementation locale, tout ce qui est postérieur à la fin des données d'entraînement du modèle.
  • Les questions à prémisse fausse. Demandez ce que fait une fonction, et le modèle a tendance à répondre comme si elle existait.

L'aisance n'est pas un signe d'exactitude. Une réponse hallucinée a le même ton assuré, la même mise en forme et le même niveau de détail qu'une réponse juste, c'est pourquoi on la rate facilement.

Le piège de la prémisse fausse

Les onglets ci-dessous portent sur DataFrame.smart_merge() dans pandas. Cette méthode n'existe pas. La première question suppose qu'elle existe ; la seconde permet au modèle de le dire.

Que fait DataFrame.smart_merge() dans pandas, et quand faut-il l'utiliser plutôt que merge() ?
Try it
Example replyReplies vary between models and runs.

DataFrame.smart_merge() fusionne deux DataFrames et détecte les clés de jointure pour vous en comparant les noms et les types des colonnes. Utilisez-la quand vos tableaux partagent des colonnes clés aux noms légèrement différents, par exemple user_id et userId, car elle peut les faire correspondre automatiquement.

Pour garder le contrôle total sur les clés et le type de jointure, merge() reste le meilleur choix.

La première réponse est une hallucination construite avec de vraies pièces : pandas fusionne bien des DataFrames, et faire correspondre des clés est un besoin raisonnable. La question a fourni la prémisse et le modèle a fourni une fonction plausible pour la remplir. Les modèles actuels repèrent plus souvent les prémisses fausses que les anciens, mais une question formulée comme une supposition pousse toujours la réponse vers l'acquiescement.

Le second prompt a fait deux choses. Il a demandé si la méthode existe avant de demander ce qu'elle fait, et il a explicitement autorisé le doute. La réponse a aussi rendu un moyen de vérifier, et c'est l'habitude à garder : hasattr interroge la vraie bibliothèque en une ligne.

Répondre à partir de la source, avec des citations

Le moyen le plus efficace de réduire les hallucinations est de mettre les faits dans le prompt. Quand la réponse se trouve dans un texte que le modèle voit, il n'a rien à se rappeler, et vous pouvez vérifier chaque affirmation dans ce texte. Demander une citation à l'appui de chaque affirmation accélère la vérification, et dire au modèle quoi répondre quand le document est muet le rend moins enclin à combler le vide par une supposition.

Répondre uniquement à partir du document
Fill in
Parts
Réponds à la question en utilisant uniquement le document ci-dessous.
<document> Les sauvegardes s'exécutent chaque nuit à 02:00 UTC et sont conservées 30 jours. Les sauvegardes de la base de données de préproduction sont conservées 7 jours. Les restaurations se demandent dans le canal #ops et sont en général terminées sous quatre heures. </document> Question : Combien de temps les sauvegardes de production sont-elles conservées, et puis-je en restaurer une moi-même ?
Pour chaque partie de la question : la réponse, puis la phrase exacte du document qui l'appuie, entre guillemets.
Si le document ne répond pas à une partie, écris "Absent du document" pour cette partie. N'ajoute aucun fait tiré de connaissances générales.
Try it
Example replyReplies vary between models and runs.

Durée de conservation des sauvegardes de production : 30 jours. Le document donne 30 jours pour les sauvegardes en général et 7 jours uniquement pour la préproduction. "Les sauvegardes s'exécutent chaque nuit à 02:00 UTC et sont conservées 30 jours."

Puis-je en restaurer une moi-même : Absent du document. Il indique seulement comment les restaurations se demandent : "Les restaurations se demandent dans le canal #ops et sont en général terminées sous quatre heures." Cela laisse penser qu'une autre équipe s'en charge, mais le document ne dit pas s'il existe une restauration en libre-service.

Regardez comment la réponse a traité la seconde question. Un modèle répondant à partir de ses connaissances générales aurait pu décrire une commande de restauration. Contraint au document, il a séparé ce que le texte dit de ce qu'il laisse seulement supposer. Désactivez la partie contraintes et reposez la question pour voir si la réponse les distingue encore.

Les balises <document> séparent le contenu source de vos consignes ; délimiteurs et balises XML explique pourquoi c'est important, et context engineering traite de la fourniture des bons documents aux modèles à grande échelle. La même idée fait fonctionner les applications de chat avec recherche web ou envoi de fichiers : la réponse n'est fiable que dans la mesure des sources présentes dans la conversation, alors lisez la source citée, pas seulement son résumé.

D'autres habitudes de prompt qui aident

  • Demandez, ne supposez pas. "Existe-t-il un moyen de faire X ?" avant "Comment faire X ?" Une prémisse fausse est l'hallucination la plus facile à déclencher.
  • Demandez de signaler l'incertitude. "Signale toute affirmation dont tu n'es pas sûr" vous donne une liste d'endroits à vérifier en premier. Ces signalements ne sont pas des probabilités calibrées, mais ils pointent souvent vers les points faibles.
  • Demandez des sources que vous pouvez ouvrir. Puis ouvrez-les. Une référence que vous n'avez pas ouverte n'a pas été vérifiée, et un lien peut exister tout en disant autre chose que l'affirmation qu'il est censé appuyer.
  • Repartez de zéro quand une conversation s'allonge. Les détails du début d'une longue conversation peuvent se mélanger ou disparaître à mesure qu'elle grandit. Pour les faits qui comptent, ouvrez une nouvelle conversation en y collant le contenu pertinent ; tokens et fenêtre de contexte explique pourquoi.
  • Posez la question une seconde fois, à neuf. Si deux réponses indépendantes à la même question factuelle divergent, au moins l'une est fausse. L'accord est une preuve plus faible, car un modèle peut répéter la même erreur.

Vérifier ce qui compte

Aucun prompt ne supprime les hallucinations : décidez donc de ce qu'il faut vérifier selon le coût d'une erreur. Un brainstorming ou un premier jet peut contenir quelques erreurs. Un chiffre dans un rapport, une affirmation juridique ou médicale, une citation attribuée à une personne ou une référence dans votre travail demandent une source primaire.

Le code est la sortie la plus facile à vérifier, car l'exécuter le teste. Une méthode inventée échoue avec une AttributeError ou son équivalent dès que la ligne qui l'appelle s'exécute : assurez-vous donc que votre test atteint cette ligne. Le cas risqué est le nom de paquet inventé. Si un modèle vous dit d'installer un paquet dont vous n'avez jamais entendu parler, vérifiez qu'il existe, que c'est bien le projet que vous croyez et qu'il est largement utilisé, avant de l'installer. Des chercheurs en sécurité ont montré que les modèles inventent souvent les mêmes faux noms de paquets encore et encore, et un attaquant qui publie un paquet sous l'un de ces noms fait installer son code par quiconque suit la suggestion. Les vérifications du code écrit par l'IA sont détaillées dans prompts pour coder.

Questions fréquentes

Qu'est-ce qu'une hallucination de l'IA ?

Une hallucination de l'IA est une réponse d'un modèle de langage qui paraît assurée et fluide mais qui est fausse ou sans fondement : un fait inventé, la citation d'un article qui n'existe pas, une fonction qu'une bibliothèque n'a jamais eue. Le modèle ne ment pas exprès. Il a produit le texte qui semblait le plus probable, et probable ne veut pas dire vrai.

Pourquoi ChatGPT invente-t-il des choses ?

Les modèles de chat génèrent du texte en prédisant le token suivant, l'un après l'autre, à partir des régularités apprises pendant l'entraînement. Sauf si un outil comme la recherche web ou un document figure dans la conversation, rien ne va chercher la réponse. Quand la bonne réponse était rare dans les données d'entraînement, ou absente, le modèle produit quand même la suite la plus plausible, et une mauvaise réponse plausible se lit exactement comme une bonne.

Peut-on empêcher complètement l'IA d'halluciner ?

Non. Les modèles actuels hallucinent moins que les précédents, et répondre à partir de documents que vous fournissez ou de résultats de recherche réduit encore le phénomène, mais aucun prompt ne le supprime. Considérez chaque fait, chiffre, citation, référence ou API qui compte comme une affirmation à vérifier dans une source primaire.

Quels prompts réduisent les hallucinations de l'IA ?

Trois aident le plus. Donnez explicitement la permission de dire "je ne sais pas". Fournissez le document source et demandez au modèle de répondre uniquement à partir de lui. Demandez une citation directe à l'appui de chaque affirmation, pour pouvoir la comparer au texte. Évitez les questions qui supposent qu'une chose est vraie, car le modèle a tendance à suivre la supposition.

Quels sont des exemples d'hallucinations de l'IA en programmation ?

Appeler une méthode qu'une bibliothèque n'a pas, passer une option qui n'existe pas, importer un paquet que personne n'a publié, décrire le comportement d'une ancienne version d'une bibliothèque comme s'il était actuel. Le code rend beaucoup de ces erreurs faciles à repérer, car une méthode inventée échoue dès que la ligne qui l'appelle s'exécute. Les noms de paquets inventés sont le cas dangereux : vérifiez qu'un paquet est réel et connu avant de l'installer.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER