Un nouveau benchmark portant sur 12 API de grands modèles de langage (LLM) révèle que presque tous les services renvoient du JSON conforme au schéma demandé, mais qu'une minorité non négligeable génère des valeurs factuellement erronées. Le coût en tokens du même schéma varie de quelques dizaines à près de cinq mille. Les développeurs qui construisent des pipelines d'extraction ou des agents pilotés par les données ne peuvent plus considérer la « validité du schéma » comme un indicateur de l'exactitude.

Pourquoi ce test est important

Les fournisseurs d'API vantent la « sortie structurée » (structured output) comme un moyen d'éliminer les erreurs d'analyse syntaxique (parsing). La promesse est simple : donnez au modèle un schéma JSON, et il remplira les champs sans que vous ayez à écrire de code de post-traitement fragile. En pratique, de nombreux systèmes de production s'appuient déjà sur cette garantie pour éviter les plantages et maintenir la propreté des pipelines d'analyse en aval. Lorsque cette garantie n'est que partiellement vérifiée, des bugs s'immiscent silencieusement et les calculs de coûts basés sur l'utilisation des tokens deviennent totalement erronés.

La bonne nouvelle : les schémas sont désormais largement appliqués

  • La plupart des modèles de la suite de tests ont produit du JSON ayant passé un validateur strict.
  • Le décodage contraint (constrained decoding) – les modèles qui verrouillent le décodeur sur le schéma ne peuvent pas émettre de caractères parasites, rendant les charges utiles malformées pratiquement inexistantes.
  • Taux d'erreurs d'analyse – les développeurs n'ont plus besoin d'envelopper chaque appel dans des blocs try-catch pour pallier les erreurs de syntaxe JSON.

La mauvaise nouvelle : validité ≠ exactitude

Une structure valide ne garantit pas une valeur valide. Quatre des douze modèles — DeepSeek V4, Qwen et GLM-5.2 (ces deux derniers apparaissant sous deux noms différents dans le rapport) — ont produit du JSON parfaitement formé mais contenant des chiffres erronés lorsque le mode « réflexion » (ou chain-of-thought) était activé.

  • Sur le modèle Qwen, une simple extraction arithmétique est passée de 1 réponse correcte sur 16 avec le raisonnement activé à 8 correctes sur 8 lorsque le raisonnement était désactivé.
  • DeepSeek V4 Pro a montré une variation similaire : la précision de l'extraction est passée de 1/8 à 7/8 une fois que le modèle a cessé de tenter d'expliquer ses étapes.

L'étape de raisonnement supplémentaire interfère avec le décodeur contraint, laissant le modèle dériver vers l'hallucination tout en respectant les accolades extérieures.

Le côté sombre : surprises sur le coût des tokens et paramètres ignorés

  • Format de réponse de Claude – lorsqu'il est accédé via des points de terminaison (endpoints) compatibles avec OpenAI, Claude ignore complètement le flag response_format, renvoyant 0 % de sortie conforme au schéma. Le modèle prend bien en charge les appels structurés, mais uniquement via l'interface native de tool-calling d'Anthropic.
  • Inflation des tokens du schéma – un schéma modeste de 12 Ko coûte 30 tokens sur DeepSeek, alors que la même charge utile a consommé 4 959 tokens sur Claude.
  • Incohérences de facturation – certains fournisseurs comptent le schéma comme faisant partie du prompt, facturant chaque token consommé ; d'autres le traitent comme une couche superposée gratuite. À grande échelle, la facture du schéma peut dépasser le coût du contenu généré par le modèle.

Ce que les développeurs devraient faire maintenant

  1. Valider les valeurs, pas seulement les structures – un validateur de schéma ne détectera pas une réponse numérique incorrecte même si elle correspond au type attendu. Ajoutez des vérifications spécifiques au domaine (plage, unité, cohérence entre les champs).
  2. Désactiver le chain-of-thought pour l'extraction sur DeepSeek, Qwen et GLM lorsque vous avez besoin d'un remplissage de champs fiable. L'étape de raisonnement supplémentaire est optionnelle et n'est pas requise pour l'exactitude.
  3. Auditer l'utilisation des tokens – enregistrez le nombre de tokens consommés par chaque requête, y compris la partie schéma, et comparez les factures entre les fournisseurs avant de vous engager dans des déploiements à grande échelle.
  4. Tester la portabilité – un schéma qui fonctionne sur OpenAI peut être silencieusement ignoré sur Gemini ou Claude. Effectuez un test de cohérence rapide sur chaque plateforme cible avant de déployer votre code.

Contre-argument des fournisseurs

Certains fournisseurs soutiennent que le mode « réflexion » est un choix du développeur destiné aux tâches où l'explication prime sur l'exactitude brute de l'extraction. Claude ignore le flag response_format et suggère d'utiliser plutôt les appels d'outils (tool calls) natifs d'Anthropic. Ces explications sont techniquement correctes, mais elles transfèrent la responsabilité aux développeurs, qui doivent savoir quel mode choisir et comment budgétiser les frais de tokens cachés.

L'essentiel

Un schéma JSON n'est plus un filet de sécurité ; c'est simplement une structure. Assurez-vous que les données à l'intérieur correspondent à la réalité, surveillez les coûts de tokens cachés et n'oubliez pas que la « réflexion » d'un modèle peut corrompre même la sortie la plus propre en apparence.