Pourquoi l'IA gouvernementale échoue sur de vrais textes lus à l'envers, pas seulement inventés, et ce que j'ai appris en bâtissant une porte de décision déterministe.
Artificial IntelligenceGovernmentLegal

Le texte de loi était réel. La réponse était quand même illégale.

Ashutosh SinghalAshutosh Singhal28 juin 202615 min

La première réponse confiante et fausse que j'aie jamais vue d'un chatbot gouvernemental portait sur un bon Section 8.

Un propriétaire demande, en termes simples, s'il peut refuser un locataire qui paierait le loyer avec un bon de logement. La bonne réponse est non. Refuser constitue une discrimination fondée sur la source de revenus au titre du NYC Admin. Code § 8-107(5), et la Human Rights Commission de la ville peut infliger des amendes civiles allant jusqu'à 250 000 $ pour une violation volontaire. Ce n'est pas une question piège. C'est du droit établi. Et en octobre 2023, le bot MyCity de la ville de New York elle-même, tournant sur Azure AI, a dit aux propriétaires d'entreprises et aux bailleurs le contraire. The Markup l'a documenté en mars 2024 : le bot a affirmé que les propriétaires pouvaient éconduire les titulaires de bons, que les commerces pouvaient refuser les espèces, que les employeurs pouvaient empocher une part des pourboires de leurs employés. Chacune de ces réponses était illégale, et chacune portait le sceau de la ville sur un domaine .gov.

Je n'ai pas construit CivicCite parce qu'un modèle a halluciné. Je l'ai construit à cause des réponses qui étaient presque justes, et je veux vous parler de celle qui a changé ma façon de penser au problème dans son ensemble. Si vous voulez voir la chose elle-même, elle vit ici : veriprajna.com/fr/demos/ia-gouvernementale-qui-cite-la-loi-ou-se-tait. Le corpus est un graphe de démonstration synthétique mais fidèle, pas un avis juridique. Mais le mécanisme est réel, et le mécanisme est la partie qui mérite d'être débattue.

Le moment qui m'est resté n'était pas le bot inventant une loi. C'était de voir mon propre pipeline extraire le bon texte de loi et rédiger quand même la mauvaise réponse.

La semaine que j'ai passée à ajouter de la récupération à un problème que la récupération ne peut pas toucher

J'ai commencé comme presque tout le monde dans le GovTech commence, convaincu que le remède à un chatbot menteur était une meilleure récupération. Donner au modèle le vrai code municipal. Ancrer chaque réponse dans une disposition réelle. La génération augmentée par récupération (retrieval-augmented generation), la réponse standard à la peur standard, celle que le modèle invente. C'est une histoire propre, elle se démontre superbement, et j'y ai cru plus longtemps que je n'aurais dû.

Puis j'ai lu les chiffres de Stanford et ils ont ruiné l'histoire. Magesh et ses collègues, dans une étude de 2025 publiée via JELS, ont mesuré les deux outils de recherche juridique conçus précisément pour cela. Lexis+ AI a halluciné sur 17 % des requêtes. L'AI-Assisted Research de Westlaw a halluciné sur 33 %. Ce ne sont pas des chatbots jouets. Ce sont des systèmes qui récupèrent d'abord le texte de loi et génèrent ensuite, construits par des entreprises dont tout le métier est d'avoir raison sur le droit. Environ une réponse sur trois du second outil était encore fausse. La récupération a amélioré le brouillon. Elle n'a pas rendu la réponse sûre à publier.

Je veux être honnête sur ce que j'ai ressenti, parce que je venais de passer une semaine à construire la même architecture en me sentant malin. Mon pipeline décomposait la question du citoyen en sous-questions juridiques atomiques, récupérait des dispositions candidates depuis un graphe de code municipal, et contraignait le modèle à ne rédiger qu'à partir de ce qu'il avait récupéré. Sur la question Section 8, il a tout fait correctement jusqu'à la dernière étape. Il a trouvé § 8-107(5). Le bon texte de loi. Il a extrait le texte exact sur la source de revenus licite. Et puis il a rédigé une phrase qui disait, en substance, oui, vous pouvez refuser le bon.

La bonne loi. La mauvaise réponse. Superposées l'une à l'autre dans le même brouillon.

La récupération remet au modèle le bon texte de loi. Elle ne fait rien pour empêcher le modèle de le lire à l'envers.

C'est cette semaine-là que le problème a changé de forme pour moi. J'avais traité l'hallucination comme l'ennemi, et l'hallucination est réelle, mais c'est l'échec que l'on peut imaginer attraper. L'échec qui a réellement livré les réponses MyCity est plus subtil et pire : la bonne disposition citée, la mauvaise conclusion énoncée. Aucune fabrication nulle part dans la phrase. Rien qu'un filtre « as-tu inventé ça » puisse attraper, parce que rien n'a été inventé. Juste une mauvaise lecture confiante d'une loi qui était juste là. Ce mode de défaillance est invisible pour la récupération, parce que la récupération vérifie seulement que le texte de loi est présent, jamais que la phrase l'a lu dans le bon sens.

Qu'est-ce qui est pire, une loi inventée ou une vraie lue à l'envers ?

Je n'arrêtais pas de revenir à cette question, et ma réponse devenait de plus en plus certaine. La loi inventée est l'échec le plus sûr.

Pensez à ce qu'un citoyen fait de chacune. Un texte inventé de façon évidente se lit étrangement, cite une section de code qui ne résout pas, sonne faux. Un vrai texte lu à l'envers se lit parfaitement. Il a une vraie citation. La section existe. Un propriétaire lit « oui, vous pouvez refuser le bon », voit un vrai numéro de code attaché, et agit en conséquence. Voilà un refus illégal, un locataire avec une plainte pour discrimination, et une piste documentaire qui remonte à une réponse gouvernementale. La justesse de la citation est précisément ce qui rend la mauvaise conclusion dangereuse. C'est le laisser-passer avec lequel le mauvais conseil entre.

Donc le contrôle qui m'importait le plus n'a jamais été « cette citation est-elle réelle. » C'était « cette citation soutient-elle réellement cette phrase. » Dans le pipeline, ce contrôle est l'entailment : étant donné l'affirmation rédigée et le texte exact de la disposition citée, l'affirmation découle-t-elle du texte, le texte la contredit-il, ou ni l'un ni l'autre. Sur le brouillon Section 8, le « oui » du modèle est attrapé comme contredit par § 8-107(5), parce que la disposition dit clairement le contraire. Le brouillon meurt là. Ce qui survit, et ce que la porte finit par publier, c'est l'affirmation corrigée : un propriétaire ne peut pas refuser, et voici le texte de loi qui le dit.

L'étape Verify ouverte pour inspection, montrant son entrée brute, l'affirmation rédigée sur les bons Section 8 et l'identifiant de citation nyc-admin-8-107-5, et sa sortie brute, le libellé d'entailment entailed avec le texte de disposition cité comme motif.
Chaque étape s'ouvre. Voici Verify, montrant l'affirmation rédigée, le texte statutaire exact contre lequel elle a été vérifiée, et le libellé d'entailment entailed. Que la loi citée soutienne réellement la phrase est une chose que vous pouvez lire, pas un score que vous devez croire sur parole.

La chose sur laquelle j'ai insisté, et la raison pour laquelle cet écran existe, c'est que l'entailment n'est pas une boîte noire qu'il faut croire. Vous pouvez ouvrir l'étape Verify et lire son entrée et sa sortie brutes : l'affirmation rédigée, le texte statutaire contre lequel elle a été vérifiée, le libellé, et le motif dans les propres mots de la disposition. Un verdict que vous ne pouvez pas inspecter n'est pas de la vérification. C'est un second avis avec de meilleurs effets de production. J'avais déjà appris, à mes dépens, que demander à un modèle d'arbitrer un autre modèle ne vous donne que deux modèles d'accord, ce qui est une chose plus faible qu'il n'y paraît.

Le geste qui a finalement marché a été d'arrêter d'essayer de rendre le modèle digne de confiance

Je me souviens du recadrage exact, parce que ça m'a semblé être un abandon et que ça s'est avéré être tout le design. J'ai arrêté d'essayer de rendre le modèle digne de confiance et j'ai commencé à rendre sa fiabilité hors de propos.

Le basculement est celui-ci. Le modèle de langage dans CivicCite est un conseiller. Il décompose la question, il rédige une réponse candidate, il offre un avis d'entailment. Il n'obtient jamais de publier quoi que ce soit. En dehors du cadre agentique, en Python déterministe pur, se trouve une chose que j'appelle la Porte de décision statutaire, et elle ne publie une sous-réponse que lorsque quatre conditions sont réunies à la fois : la citation existe, la disposition est en vigueur, l'affirmation découle du texte cité, et rien n'entre en conflit avec elle. Manquez l'une d'elles et la réponse ne part pas. Deux de ces contrôles sont de la pure arithmétique et de la logique. En vigueur est une comparaison de dates : la disposition n'a pas de date d'abrogation et sa date d'entrée en vigueur est antérieure ou égale à la date de référence. Le conflit est une lecture de graphe. Il n'y a pas de prompt, pas de température, pas de persuasion.

Écran scindé CivicCite. L'assistant ordinaire à gauche publie une réponse marquée aucune base statutaire, aucun contrôle d'entailment, aucun contrôle de vigueur, publiée telle quelle, tandis que le côté CivicCite montre la Porte de décision statutaire lisant RELEASED, une publiée et zéro retenue, avec la réponse portant NYC Admin. Code § 8-107(5) marquée source vérifiée, en vigueur.
La porte lit RELEASED, une publiée et zéro retenue. La réponse ne part que parce qu'elle porte NYC Admin. Code § 8-107(5), marquée source vérifiée, en vigueur. L'assistant ordinaire à gauche a publié sa réponse telle quelle, sans base statutaire et sans contrôles.

Je répète constamment deux phrases maintenant. L'une est les agents conseillent, la porte décide. L'autre est qu'un LLM ne peut pas se voter lui-même au-delà de la porte, peu importe la confiance de son brouillon. Cela compte plus qu'il n'y paraît, parce que l'échec séduisant dans tout ce domaine est de laisser le modèle noter son propre travail et d'appeler la note « vérification. » Un modèle qui rédige la réponse ne peut pas être la chose qui certifie que la réponse est sûre. La porte est délibérément plus bête que le modèle et délibérément hors de lui, et c'est tout l'enjeu. L'intelligence propose. Le code dispose.

Le modèle est un bon rédacteur et un mauvais juge. Alors je le laisse écrire, et je ne le laisse jamais juger.

La démo est honnête sur ses limites, et je le serai aussi. Le corpus est un graphe synthétique mais fidèle de code municipal, paraphrasé à partir de dispositions réelles, pas une source officielle. Le routage d'escalade 311 est calculé et affiché, mais le connecteur vers un vrai système de dossiers est stubbé. La rédaction contrainte utilise un validateur en liste blanche et une seule re-demande plutôt qu'un décodage token par token de production. Ce qui est réel, c'est la logique de décision, et la logique de décision est le produit.

Pourquoi je fais plus confiance au silence qu'à une bonne réponse

Je ne m'attendais pas à être fier de la démo refusant de répondre, et c'est maintenant ma chose préférée qu'elle fasse. L'exemple le plus clair est un food truck.

Un vendeur demande s'il peut laisser son camion garé à une place avec parcmètre toute la journée au titre de la règle générale de stationnement des vendeurs. L'assistant ordinaire répond joyeusement et à tort, citant une règle comme si elle était en vigueur. CivicCite rédige aussi une candidate, et la candidate cite une disposition de stationnement qui a été abrogée. Puis le contrôle de vigueur s'exécute. La disposition a une date d'abrogation. En vigueur échoue. Et au lieu de se rabattre sur quelque règle adjacente et de bluffer, la porte retient la réponse, marque la question comme hors couverture vérifiée, et l'achemine vers un service vivant avec les conclusions partielles jointes.

CivicCite retient une réponse à une question de stationnement au parcmètre pour food truck. Le message indique que la seule disposition portant sur le stationnement général des vendeurs aux places avec parcmètre a été abrogée et qu'aucune disposition actuellement en vigueur ne régit cette question. Les quatre contrôles montrent cite exists, in force et entailed tous en échec, avec no conflict qui passe, et la question est acheminée vers l'accueil général NYC 311.
La non-réponse honnête. La seule disposition couvrant cette question de stationnement est abrogée, donc en vigueur échoue, rien dans l'ensemble récupéré ne régit, et la porte retient et achemine la question vers l'accueil général NYC 311 au lieu de bluffer une réponse.
Une mauvaise réponse sur un domaine gouvernemental n'est pas un embarras. C'est une responsabilité avec le nom de la ville dessus.

Regardez ce que cet écran refuse de faire. Il ne synthétise pas une réponse plausible à partir d'un texte mort. Il dit, en langage clair, que la seule disposition qui traite de ceci a été abrogée et que rien actuellement en vigueur ne régit la question, et il transmet le citoyen plutôt que de deviner. L'abstention honnête bat une mauvaise réponse confiante, surtout dans le gouvernement. Et dans le gouvernement, les enjeux ne sont pas réputationnels. Le conseil juridique gouvernemental se situe dans la zone de fonction propriétaire, ce qui signifie qu'il n'y a pas de bouclier d'immunité souveraine derrière lequel se cacher quand la réponse s'avère fausse.

Ce n'est plus une inquiétude hypothétique, ce qui fait partie de pourquoi j'ai construit la chose maintenant plutôt que plus tard. Il y a eu 78 projets de loi liés aux chatbots dans 27 États en 2026. Le S7263 de New York a atteint le plancher du Sénat le 26 février 2026. Les obligations à haut risque de l'annexe III du règlement européen sur l'IA deviennent exécutoires le 2 août 2026, avec des sanctions allant jusqu'à 15 M€ ou 3 % du chiffre d'affaires mondial. La question réglementaire bascule de « votre IA est-elle utile » à « pouvez-vous prouver que votre IA avait le droit de dire ça. » Le silence, on peut le défendre. Une mauvaise réponse confiante, on ne peut pas.

Le chiffre sur lequel un régulateur peut réellement agir

Je pensais autrefois que la métrique vedette d'un système comme celui-ci était un taux d'hallucination, et je pense maintenant que cet instinct est exactement à l'envers. Un pourcentage est la mauvaise chose à tendre à un régulateur.

Imaginez que vous êtes le Law Department de la ville, le bureau qui porte la responsabilité quand une réponse tourne mal. « Notre chatbot n'hallucine que 4 % du temps » n'est pas rassurant. C'est l'aveu que quatre citoyens sur cent reçoivent une réponse avec l'autorité de la ville derrière et rien derrière la réponse. Le chiffre qui compte n'est pas à propos de la fréquence à laquelle le modèle a tort. C'est à propos de savoir si quoi que ce soit de non vérifié a jamais été autorisé à sortir. Donc la métrique autour de laquelle j'ai construit le benchmark est celle-ci : sur un jeu doré fixe et étiqueté de 12 requêtes, passé dans le vrai pipeline, le nombre de réponses publiées sans base statutaire vérifiée et en vigueur. L'objectif est zéro sur douze.

Un taux d'hallucination dit à un régulateur à quelle fréquence vous avez échoué. Il ne peut pas leur dire que vous l'avez attrapé.
Vue du benchmark du jeu doré avec trois tuiles. Zéro réponse sur 12 publiée sans base statutaire vérifiée et en vigueur avec un objectif de zéro, 100 pour cent de couverture des dossiers d'audit, et 100 pour cent d'accord de disposition avec la vérité terrain, au-dessus de la liste des douze requêtes étiquetées passant dans le pipeline.
Le jeu doré de 12 requêtes passé dans le vrai pipeline. Objectif zéro réponse publiée sans base vérifiée et en vigueur, un dossier archivable par requête, et accord de disposition avec la vérité terrain étiquetée. C'est un jeu étiqueté fixe, pas une promesse sur le monde ouvert.

Je veux être précis sur ce qu'est et n'est pas ce chiffre, parce que le surpromettre trahirait tout le postulat. C'est un résultat sur un jeu étiqueté fixe, pas une garantie sur le monde ouvert et pas « zéro hallucination », une expression que selon moi personne d'honnête ne devrait vendre. Le modèle rédige encore des affirmations imparfaites. Le point, c'est que les non vérifiées sont retenues, pas qu'elles ne sont jamais rédigées. À côté de ce chiffre siègent deux autres : 100 % de couverture des dossiers d'audit, signifiant un dossier archivable par requête qu'elle parte ou refuse, et l'accord de disposition avec la vérité terrain étiquetée. La baseline plain-RAG, l'architecture MyCity sans porte, aurait publié les réponses illégales documentées sur ce même jeu. Cette comparaison est du contexte, pas le titre.

Le dossier est la partie que je défendrais le plus fort.

Le tiroir Dossier de décision statutaire montrant du JSON. Vérificateur veriprajna-civiccite version 0.1, disposition RELEASED, une liste de normes nommant NIST AI RMF Govern et Measure logging et FedRAMP StateRAMP continuous monitoring, et une sous-réponse pour le domaine du logement citant NYC Admin. Code § 8-107(5) avec les contrôles citation exists, in force, entailed et no conflict tous vrais, décision RELEASE.
Le dossier écrit pour cette requête. Disposition RELEASED, la citation, les quatre contrôles, et la décision, en JSON. Il nomme NIST AI RMF et FedRAMP StateRAMP logging comme les normes vers lesquelles il est construit. Chaque requête en obtient un, que la réponse parte ou non.

Chaque requête, publiée ou refusée, produit un Dossier de décision statutaire : la disposition, la citation, les quatre résultats de contrôle, la décision, sous forme de données structurées que vous pouvez classer et relancer. Il nomme le logging NIST AI RMF et le continuous monitoring FedRAMP et StateRAMP comme les normes vers lesquelles il est construit. Je fais attention avec cette phrase. Construit vers est une direction, pas une certification, et je ne prétendrai pas que CivicCite soit certifié au regard d'aucune d'elles. Mais un auditeur ne veut pas une promesse que le modèle est intelligent. Un auditeur veut un dossier, par interaction, qui montre exactement pourquoi une réponse a été autorisée à exister, sous une forme qui survit à quelqu'un qui essaie de la casser. La reproductibilité est ce qui transforme une décision en preuve, et la preuve est ce sur quoi un régulateur peut agir.

Et si vous préférez le regarder plutôt que de lire ma description, voici toute la démo qui tourne de bout en bout.

La question qui me reste

Je n'arrête pas de revenir à quelque chose qui m'a surpris dans ma propre réaction. La première fois que j'ai vu CivicCite refuser une question et l'acheminer vers un service, une partie de moi l'a lu comme un échec du système.

Ce n'était pas un échec. Il faisait la seule chose que les bots confiants ne peuvent pas faire, qui est de connaître le bord de ce qu'il peut prouver et de s'y arrêter. J'avais passé si longtemps à optimiser pour une bonne réponse que j'avais discrètement assumé qu'une bonne réponse était le but. Ce n'est pas le cas. Dans le gouvernement, le but est une réponse défendable, et la distance entre ces deux mots est toute la raison pour laquelle ce produit existe. Une réponse défendable ressemble parfois à une citation publiée. Tout aussi souvent, elle ressemble à une question acheminée et un dossier classé.

Donc la question que je laisserais à quiconque construit de l'IA pour un gouvernement, ou l'achète, n'est pas « quelle est la précision de votre modèle. » De meilleurs modèles continueront de s'améliorer à écrire des réponses fluides, fausses dans leur contexte, parce que la fluidité n'a jamais été la pièce manquante. La question que je pose avant que quoi que ce soit ne quitte la porte est plus étroite et plus dure. Pouvez-vous prouver, maintenant, que cette réponse exacte remonte à un texte de loi qui existe et est actuellement en vigueur, et cette preuve survivrait-elle à un tribunal qui voudrait la faire échouer ? Si la réponse est non, peu importe à quel point le modèle est bon. Le système doit rester silencieux. Vous pouvez le regarder décider, dans un sens ou dans l'autre, ici : veriprajna.com/fr/demos/ia-gouvernementale-qui-cite-la-loi-ou-se-tait.

La confiance n'appartient pas à un modèle qu'il faut croire. Elle appartient à du code que l'on peut auditer.

Recherche associée

Également publié sur

Développez votre IA en toute confiance.

Collaborez avec une équipe forte d'une solide expérience dans la conception de la prochaine génération d'IA d'entreprise. Nous vous aidons à concevoir, développer et déployer une stratégie d'IA digne de confiance.

Veriprajna société de conseil en Deep Tech est spécialisée dans la conception de systèmes d'IA critiques pour la sûreté destinés aux secteurs de la santé, de la finance et de la réglementation. Nos architectures sont validées au regard de protocoles établis et accompagnées d'une documentation de conformité complète.