Aller au contenu principalAller à la navigation
Développeurs et API · J

JSON Schema

JSON Schema est un standard ouvert qui décrit formellement la structure autorisée de documents JSON. Un schéma fixe quels champs peuvent ou doivent apparaître, quels types de données ils ont, quelles plages de valeurs s'appliquent et comment se construisent objets et tableaux imbriqués. On peut ainsi vérifier automatiquement si un document JSON donné correspond aux attentes. Dans les applications d'IA, JSON Schema est aujourd'hui le mécanisme central pour structurer de façon fiable les sorties des modèles de langage via les structured outputs et les paramètres du function calling. Comme le standard est indépendant du langage, le même schéma sert à la fois de contrat entre services, de règle de validation dans le backend et de documentation lisible par la machine de l'interface de données, ce qui rend les erreurs d'intégration visibles tôt et facilite la collaboration entre équipes.

Également connu sous : JSON-Schema, schéma de validation JSON

Qu'est-ce que JSON Schema ?

JSON Schema est lui-même écrit en JSON et décrit de façon déclarative la structure d'autres données JSON. Un schéma définit, par des mots-clés comme type, properties, required, enum ou items, la forme que peuvent prendre des données valides. Un validateur compare un document entrant au schéma et signale précisément chaque écart.

Le standard est indépendant du langage et de la plateforme et est maintenu en de nombreuses versions (drafts). Des validateurs existent pour presque tout langage de programmation, de sorte que le même schéma s'emploie à l'identique dans le frontend, le backend et le pipeline de données. Cela crée une base de contrat commune et sans ambiguïté entre systèmes.

JSON Schema joue ainsi pour le JSON un rôle comparable à une définition de type dans un langage de programmation : il rend explicites et vérifiables des hypothèses implicites sur les formats.

Mots-clés importants

Le mot-clé type fixe le type de données, par exemple object, array, string, number ou boolean. Avec properties sont décrits les champs d'un objet avec leurs propres sous-schémas, tandis que required indique lesquels de ces champs doivent impérativement être présents.

Pour les contraintes de valeurs, des mots-clés comme enum (un choix fixe de valeurs autorisées), minimum et maximum pour les nombres, minLength et maxLength pour les chaînes ainsi que pattern pour les expressions régulières s'emploient. Avec additionalProperties, on règle si d'autres champs que ceux définis sont autorisés.

Des combinateurs comme anyOf, oneOf et allOf permettent de relier plusieurs conditions et de décrire ainsi précisément des structures de données complexes et variées. Avec des références via le mot-clé $ref, des sous-schémas récurrents s'externalisent et se réutilisent à plusieurs endroits, ce qui garde de vastes schémas lisibles et maintenables.

JSON Schema dans les applications d'IA

Dans le cas du Appel de fonctions ou plutôt Tool Use les développeurs décrivent les paramètres d’une fonction via un JSON Schema. Cela Modèle de langage reçoit ce schéma comme description et fournit ensuite des arguments correspondant exactement à la structure imposée. L’application sait ainsi de façon fiable quels champs attendre avant d’exécuter la fonction.

Avec les structured outputs, les modèles modernes vont encore plus loin : la génération est contrainte de sorte que la sortie suive à coup sûr le JSON Schema défini. Cela lève l'un des plus grands obstacles à une intégration de LLM en production, les réponses au format imprévisible, et rend robuste l'analyse en aval.

En pratique, cela signifie qu'un schéma défini une fois sert à la fois de consigne au modèle, de règle de validation et de documentation de l'interface de données.

Avantages et pratique

JSON Schema réduit les erreurs d’intégration, car les données invalides sont interceptées tôt avec un message clair. Il remplace des routines de contrôle manuelles par une base de règles centrale et déclarative et sert en même temps de documentation vivante d’une Interface.

Dans le domaine professionnel de Développement logiciel un schéma est souvent généré à partir de définitions de types et testé automatiquement. Pour les systèmes appuyés sur des LLM, il est recommandé de définir les schémas de façon volontairement étroite, d’assortir chaque champ d’une description claire et de valider en plus les sorties du modèle côté serveur avant tout traitement ultérieur.

Une erreur fréquente est de définir les schémas de façon trop lâche. Si l'on autorise des champs supplémentaires quelconques via additionalProperties ou qu'on renonce à required, beaucoup d'avantages se perdent, des structures inattendues passant inaperçues. À l'inverse, un schéma ne devrait pas être si rigide que des données légitimes et légèrement différentes soient rejetées à tort.

Conception de schémas pour les LLM

Pour qu'un modèle de langage suive le schéma de façon fiable, des noms de champs et des descriptions parlants sont décisifs. Le mot-clé description permet d'assortir chaque champ d'une courte explication, que le modèle interprète comme une instruction. Un champ date_de_livraison avec la description « au format AAAA-MM-JJ » se remplit ainsi bien plus sûrement qu'un champ sans commentaire.

Les énumérations sont un moyen efficace de contenir les hallucinations. Si un champ ne peut prendre qu'un choix fixe de valeurs, cela devrait être imposé par enum plutôt que de laisser le modèle formuler librement. Catégories, statuts ou priorités restent ainsi cohérents et exploitables par la machine.

Pour la profondeur, la mesure s'impose : des schémas trop imbriqués augmentent le risque d'erreur. Il est souvent plus robuste de répartir les structures complexes en plusieurs champs bien délimités et de procéder ensuite à l'assemblage dans le code de l'application.

Questions fréquentes

Qu'est-ce que JSON Schema ?

JSON Schema est un standard ouvert qui décrit formellement la structure de documents JSON. Il fixe quels champs sont autorisés ou requis, quels types de données s'appliquent et comment les structures imbriquées doivent être construites. Un validateur vérifie ainsi automatiquement la validité d'un document.

À quoi JSON Schema sert-il dans le contexte de l'IA ?

Il définit, lors du function calling, les paramètres qu'un modèle de langage doit renvoyer et garantit, via les structured outputs, que les sorties du modèle suivent une structure fixe. Les réponses des LLM deviennent ainsi exploitables de façon fiable par la machine.

Quelle est la différence entre JSON et JSON Schema ?

JSON est le format de données lui-même, donc les données concrètes. JSON Schema est la description de la structure autorisée de ces données. Le schéma est en quelque sorte le cahier des charges, le document JSON le bâtiment achevé, vérifié au regard de ce cahier.

Quels mots-clés importants existe-t-il en JSON Schema ?

Les mots-clés centraux sont type pour le type de données, properties pour les champs d'un objet, required pour les champs obligatoires et enum pour les valeurs autorisées. S'y ajoutent des contraintes comme minimum, maxLength ou pattern ainsi que des combinateurs comme anyOf et oneOf.

JSON Schema garantit-il des sorties LLM sans erreur ?

Les structured outputs imposent que la structure corresponde au schéma, donc qu'aucun champ ne manque et qu'aucun type ne soit faux. Le schéma ne garantit toutefois pas l'exactitude des valeurs sur le fond. Une validation supplémentaire des contenus côté serveur reste donc recommandée.

Comment concevoir un JSON Schema optimal pour un modèle de langage ?

Sont utiles des noms de champs parlants et de courtes descriptions par champ via le mot-clé description, que le modèle interprète comme une instruction. Les listes fermées devraient être imposées par enum, pour contenir les hallucinations. Une imbrication trop profonde accroît le risque d'erreur et se résout souvent mieux dans le code de l'application.

Mettre l'IA au service de votre entreprise ?

Nous vous aidons à intégrer l'intelligence artificielle dans vos processus, votre marketing et votre site — de manière stratégique et sûre.

Demander un projet

Stefan

Votre interlocuteur

Stefan

J'ai hâte de découvrir votre projet et de trouver ensemble la meilleure solution.