Le problème

Les LLM sont excellents pour générer du texte, mais les applications nécessitent souvent des données structurées — objets JSON, tableaux, valeurs typées. Obtenir une sortie structurée fiable nécessite des techniques spécifiques.

Approche 1 : Ingénierie de prompts

Demandez au modèle de répondre au format JSON :

  • Spécifiez le schéma exact dans la demande.
  • Inclure un exemple de paire entrée/sortie.
  • Ajouter « Répondre uniquement avec un JSON valide. Aucune explication. »

Approche 2 : Appel de fonction / Utilisation de l’outil

La plupart des API majeures prennent désormais en charge l’appel de fonctions :

  • Définir un schéma JSON pour la sortie attendue.
  • Le modèle est contraint à la sortie correspondant au schéma.
  • Fonctionne avec OpenAI, Anthropic, Google et la plupart des fournisseurs.

Approche 3 : Décodage contraint

Des bibliothèques comme Outlines et LMQL obligent le modèle à produire une sortie valide :

  • Définir un modèle pydantique ou un schéma JSON.
  • Le processus de décodage fait respecter le schéma token par token.
  • Garantie à 100 % d’une structure de sortie valide.

Approche 4 : Bibliothèque Instructor

La bibliothèque Instructor enveloppe toute API LLM avec une validation Pydantic :

  • Définir votre modèle de données avec Pydantic.
  • La bibliothèque Instructor gère automatiquement les nouvelles tentatives et les validations.
  • Fonctionne avec OpenAI, Anthropic, Gemini et des modèles locaux.

Meilleures pratiques

  • Toujours valider la sortie par rapport à un schéma.
  • Utiliser les types d’enum pour les champs aux options limitées.
  • Inclure la logique de réessai pour les réponses malformées.
  • Garder les schémas simples — les structures imbriquées augmentent les taux d’erreur.
  • Tester avec 50+ exemples pour mesurer la fiabilité.