Le WordPress d'aujourd'hui, décodé pour les développeurs

IA & MCP

Un schéma JSON strict pour peupler un catalogue de pièces détachées BTP

Comment obtenir d'un LLM des fiches produit fiables et typées pour un catalogue technique de pièces détachées BTP, grâce à un schéma JSON strict plutôt qu'un prompt en texte libre.

Par WordPress Développement • 7 septembre 2024 • 4 min de lecture • Aucun commentaire
Un schéma JSON strict pour peupler un catalogue de pièces détachées BTP

"required": ["reference", "categorie", "diametre_mm", "materiau", "compatible_avec"] — cette seule ligne, ajoutée à la définition d’un schéma JSON, a suffi à éliminer la quasi-totalité des fiches produit incomplètes générées pour le catalogue de pièces détachées d’un négociant en matériel BTP.

Le catalogue compte plusieurs centaines de références de pièces (joints, raccords, filtres) dont les fiches techniques d’origine, fournies par les fabricants sous forme de tableaux PDF hétérogènes, devaient être converties en fiches produit structurées pour le site WordPress. Un premier essai avec un prompt en texte libre, demandant simplement de « renvoyer un JSON avec les caractéristiques de la pièce », a produit un résultat inexploitable en l’état.

Le problème du prompt en texte libre

Sans contrainte de format explicite, un LLM varie la structure de sa réponse selon la formulation de la fiche source : un champ nommé diametre dans une réponse devient diametre_mm dans une autre, un champ optionnel disparaît totalement quand l’information n’est pas présente dans le texte source, sans qu’aucune valeur nulle ne signale son absence.

Sur les quatre cents premières fiches traitées avec cette approche, trente-sept présentaient au moins un champ manquant ou renommé, ce qui obligeait à une vérification manuelle systématique avant tout import dans le catalogue — un travail presque aussi long que la saisie manuelle que l’automatisation était censée éviter.

Passage à un schéma JSON strict

L'essentiel à retenir : Un prompt en texte libre produit un JSON qui varie de forme d'une réponse à l'autre ; Un schéma JSON strict impose les champs, leurs types et les valeurs autorisées ; La validation du schéma doit rester automatisée avant tout import dans le catalogue

La solution consiste à fournir au modèle un schéma JSON complet, avec chaque champ, son type et, quand c’est pertinent, la liste des valeurs autorisées. La plupart des API de LLM récentes acceptent un mode de sortie structurée qui garantit que la réponse respecte ce schéma, plutôt que de simplement l’espérer via une consigne textuelle.

{
  "type": "object",
  "properties": {
    "reference": { "type": "string" },
    "categorie": {
      "type": "string",
      "enum": ["joint", "raccord", "filtre", "collier"]
    },
    "diametre_mm": { "type": "number" },
    "materiau": {
      "type": "string",
      "enum": ["laiton", "acier inoxydable", "pvc", "caoutchouc"]
    },
    "compatible_avec": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["reference", "categorie", "diametre_mm", "materiau", "compatible_avec"],
  "additionalProperties": false
}

L’ajout de "additionalProperties": false s’est révélé aussi important que la liste des champs obligatoires : sans cette contrainte, le modèle ajoutait parfois des champs supplémentaires non prévus par la nomenclature du catalogue, qui se retrouvaient ensuite orphelins lors de l’import.

Le résultat après passage au mode strict

Sur les quatre cents fiches suivantes, générées avec ce schéma strict, aucun champ obligatoire n’était manquant. Le contrôle qualité restant à effectuer se limite désormais à vérifier l’exactitude des valeurs elles-mêmes — un diamètre mal lu sur un PDF source, par exemple — plutôt que la structure de la réponse.

Cette distinction est importante : un schéma strict garantit la forme de la réponse, jamais son exactitude factuelle. Une pièce technique mal identifiée dans le PDF d’origine restera mal identifiée dans le JSON généré, même avec le schéma le plus rigoureux.

Adapter le schéma à la nomenclature

La liste des valeurs autorisées pour les champs categorie et materiau doit refléter exactement la nomenclature interne du catalogue, pas une classification générique. Un négociant qui distingue le laiton chromé du laiton brut, par exemple, doit intégrer cette distinction dans l’énumération du schéma, sous peine de voir le modèle regrouper les deux sous une seule valeur approximative.

  • Lister d’abord la nomenclature réelle utilisée en interne, avant d’écrire le schéma.
  • Tester le schéma sur un échantillon volontairement hétérogène de fiches sources, pas uniquement sur les cas les plus simples.
  • Prévoir un champ de confiance ou de commentaire libre, alimenté par le modèle, pour signaler les cas ambigus plutôt que de les deviner silencieusement.

Un schéma JSON strict ne rend pas un modèle plus intelligent, il l’empêche simplement d’improviser une structure différente à chaque réponse — ce qui, pour un import massif, compte davantage que la qualité rédactionnelle du texte.

En résumé

Pour peupler un catalogue technique à partir de données hétérogènes, un schéma JSON strict transforme un LLM en outil de conversion fiable, à condition que la nomenclature du schéma corresponde exactement à celle utilisée en interne. La question de l’indexation de ces fiches dans un moteur de recherche interne reste un sujet séparé, à traiter une fois le catalogue peuplé de données propres.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi