Recherche · IA digne de confiance pour le commandement et le contrôle
Le décodage contraint expliqué : faire produire aux modèles de langage des sorties structurées valides
Le décodage contraint garantit la forme de la sortie d’un modèle de langage. Il ne garantit pas que le contenu soit vrai. Dans notre évaluation, il a fait passer la validité structurelle de 60,8 % à 100 %, en laissant la question de l’exactitude à d’autres parties du système.
Ce qui déraille sans lui
Demandez à un modèle de langage un enregistrement dans un format fixe : la plupart du temps, vous en obtenez un. Parfois, vous obtenez une accolade qui ne se ferme jamais, un champ obligatoire omis ou une valeur qui n’est pas l’une des options permises. Dans une chaîne automatisée, chacun de ces cas signifie un message rejeté. Lors de notre essai, le même modèle avec la même invite, sans contrainte, a produit un enregistrement structurellement valide dans 60,8 % des cas. Quatre sorties sur dix ne pouvaient pas du tout être traitées.
Comment il fonctionne
Un modèle de langage écrit un jeton à la fois. À chaque étape, il attribue une cote à chaque jeton de son vocabulaire, et l’un d’eux est choisi. Le décodage contraint ajoute une vérification entre la cotation et le choix.
- Le format exigé est décrit par un schéma JSON ou par une grammaire, puis compilé en automate qui suit l’endroit où la sortie se trouve dans le format.
- À chaque étape, l’automate indique quels jetons pourraient légalement venir ensuite.
- Tous les autres jetons sont écartés, et le modèle choisit parmi ceux qui restent.
- Le jeton choisi fait avancer l’automate, et le cycle recommence jusqu’à ce que le format soit complet.
Le résultat ne peut pas être mal formé, puisqu’un choix mal formé n’a jamais été offert. Willard et Louf décrivent la technique générale dans Efficient Guided Generation for Large Language Models.
Ce qu’il garantit et ce qu’il ne garantit pas
| Il garantit | Il ne garantit pas |
|---|---|
| Que la sortie est analysable. | Que les valeurs sont exactes. |
| Que chaque champ obligatoire est présent. | Que les valeurs viennent de l’entrée et n’ont pas été inventées. |
| Que chaque valeur a le type permis et fait partie des options permises. | Que le modèle était confiant, ou aurait dû l’être. |
La dernière ligne est la plus importante. Quand le modèle hésite entre deux valeurs permises, la contrainte l’oblige tout de même à en choisir une, et l’enregistrement paraît aussi propre que celui d’un modèle confiant. C’est pourquoi Gridnorth fait suivre l’extraction d’un contrôle de confiance par champ et d’une étape de confirmation par l’opérateur. Voir le fonctionnement.
Ce que nous avons mesuré
- Enregistrements structurellement valides : 100 % avec la contrainte, 60,8 % sans.
- Exactitude des champs, tous champs confondus : 84,4 %. La contrainte a rendu les enregistrements traitables. Elle n’a pas rendu chaque valeur exacte.
- Temps d’extraction médian : 7,7 s sur un seul GPU NVIDIA T4. Nous présentons le temps de bout en bout et n’avons pas isolé le coût de la contrainte.
La page des résultats donne la méthode et les limites, et l’intégrité des essais explique les précautions prises.
Dernière révision 29 septembre 2026