Améliorez l'ingénierie des prompts des modèles d'IA avec la sortie JSON

Améliorez l'ingénierie des prompts des modèles d'IA avec la sortie JSON

Points clés

JSON est essentiel pour les applications LLM, permettant des sorties structurées pour la cohérence, l’extraction de données et l’intégration transparente. Des outils comme Pydantic et les API améliorent la validation des schémas et la maintenabilité.

Malgré ses avantages, JSON présente des limitations comme le support partiel des schémas, les limites de tokens et les hallucinations potentielles de contenu. Comprendre ses forces et ses contraintes est crucial pour créer des systèmes intelligents et efficaces.

Novita AI proposera bientôt des descriptions des capacités de chaque LLM, que vous pourrez consulter directement dans la bibliothèque de modèles.

Dans le développement d’applications modernes — en particulier avec l’essor des modèles de langage avancés (LLM) — l’importance d’un échange de données prévisible et structuré est devenue de plus en plus évidente. Bien que les LLM excellent dans la génération de langage naturel, de nombreux cas d’utilisation exigent que leur sortie soit conforme à un format spécifique. Cela garantit une intégration fluide avec d’autres systèmes, bases de données ou processus. C’est là qu’intervient le concept de sorties structurées, où JSON (JavaScript Object Notation) s’est imposé comme un format privilégié pour définir et appliquer ces structures. Cet article explore l’essence de la sortie JSON pour les données structurées, en mettant en lumière ses avantages, ses applications et ses limites.

Qu’est-ce que la sortie JSON pour les sorties structurées ?

json output

de Langchain

Introduction à JSON

La sortie structurée JSON est une technique utilisée avec les grands modèles de langage (LLM) pour garantir que leurs réponses soient conformes à un schéma prédéfini, généralement exprimé au format JSON.

  • Les LLM reçoivent une description détaillée de la structure de sortie souhaitée, comprenant :
    • Les champs
    • Les types de données
    • Les contraintes

Utilisation d’outils pour la mise en œuvre

Des outils comme Pydantic (une bibliothèque Python) peuvent être utilisés pour :

  • Définir des schémas avec des indications de type.
  • Convertir ces schémas en schémas JSON.

Avantages de l’utilisation d’outils comme Pydantic :

  • Garantit des sorties structurées.
  • Améliore la lisibilité et la maintenabilité du code.

Utilisation des API pour la mise en œuvre

  • Certaines API, comme l’API ChatCompletions d’OpenAI, permettent aux développeurs d’imposer des sorties structurées en supportant les fonctionnalités du schéma JSON.
  • Ces API peuvent offrir différents niveaux de fonctionnalité :
    • Par exemple, l’API d’OpenAI prend en charge un sous-ensemble limité des fonctionnalités du schéma JSON.
    • D’autres API peuvent offrir un support de schéma plus large.

Un exemple avec OpenAI

entrée :

from pydantic import BaseModel
from openai import OpenAI

client = OpenAI()

class Step(BaseModel):
    explanation: str
    output: str

class MathReasoning(BaseModel):
    steps: list[Step]
    final_answer: str

completion = client.beta.chat.completions.parse(
    model="gpt-4o-2024-08-06",
    messages=[
        {"role": "system", "content": "You are a helpful math tutor. Guide the user through the solution step by step."},
        {"role": "user", "content": "how can I solve 8x + 7 = -23"}
    ],
    response_format=MathReasoning,
)

math_reasoning = completion.choices[0].message.parsed

sortie :

{
  "steps": [
    {
      "explanation": "Start with the equation 8x + 7 = -23.",
      "output": "8x + 7 = -23"
    },
    {
      "explanation": "Subtract 7 from both sides to isolate the term with the variable.",
      "output": "8x = -23 - 7"
    },
    {
      "explanation": "Simplify the right side of the equation.",
      "output": "8x = -30"
    },
    {
      "explanation": "Divide both sides by 8 to solve for x.",
      "output": "x = -30 / 8"
    },
    {
      "explanation": "Simplify the fraction.",
      "output": "x = -15 / 4"
    }
  ],
  "final_answer": "x = -15 / 4"
}

Quels avantages le format JSON peut-il apporter ?

https://youtu.be/jw\_lL6SJQZg

JSON (JavaScript Object Notation) est largement utilisé pour les sorties structurées et l’échange de données, offrant une gamme d’avantages qui le rendent indispensable dans le développement d’applications modernes. Voici un aperçu simplifié de ses principaux avantages :

1. Sortie prévisible et cohérente

  • JSON garantit que les sorties respectent strictement un schéma prédéfini, éliminant les variations et facilitant le traitement fiable des données par les systèmes en aval.
  • Le strict respect du schéma réduit la probabilité que les LLM génèrent des champs inattendus ou « hallucinés », assurant des résultats cohérents et précis.

2. Extraction fiable des données et lisibilité machine

  • La nature structurée et hiérarchique de JSON le rend idéal pour extraire des informations spécifiques des sorties, que ce soit pour l’analyse de données, la création de rapports ou l’intégration dans des applications.
  • Il est facilement analysé et traité par les machines, permettant une automatisation et des flux de travail transparents.

3. Facilité d’analyse et d’intégration

  • Le format léger et textuel de JSON est simple à lire pour les humains et à analyser pour les machines, améliorant ainsi la convivialité.
  • La plupart des langages de programmation modernes supportent JSON nativement ou via des bibliothèques, simplifiant l’intégration. Exemples :
    • Python : module json
    • Go : package encoding/json
    • Node.js : objet JSON intégré
    • Java : bibliothèques Jackson et Gson
    • ASP.NET : System.Text.Json ou Newtonsoft.Json
    • Ruby : bibliothèque json

4. Définition et validation du schéma

  • Le schéma JSON fournit un moyen standardisé de définir la structure attendue et les types de données de la sortie.
  • La validation garantit que les sorties sont conformes aux schémas prédéfinis, permettant la détection automatique des erreurs et empêchant les données malformées.

5. Flexibilité avec les paramètres optionnels

  • JSON prend en charge les champs optionnels, offrant une flexibilité dans la conception du schéma.
  • Des outils comme Pydantic en Python permettent aux développeurs de définir des schémas avec des annotations de type optionnelles, gérant les cas où certains champs peuvent ne pas toujours être présents.

6. Efficacité et performances

  • La syntaxe minimaliste de JSON assure une représentation compacte et efficace des données, ce qui le rend idéal pour les environnements où la bande passante est limitée.
  • Dans des implémentations comme Baseten, les masques de tokens précalculés pour les schémas minimisent la latence des appels suivants, améliorant encore les performances.

7. Interopérabilité et extensibilité

  • JSON est compatible avec une large gamme de langages de programmation, frameworks et outils, garantissant une intégration transparente entre différents systèmes et plateformes.
  • Sa structure flexible permet aux développeurs d’étendre ou de modifier les formats de données sans casser les flux de travail existants ou la compatibilité.

8. Intégration avec les API et bases de données

  • JSON est le format de données par défaut pour de nombreuses API modernes, permettant une communication cohérente et prévisible entre les clients et les serveurs.
  • Il est également pris en charge nativement par de nombreuses bases de données (par exemple, MongoDB, PostgreSQL), ce qui le rend efficace pour stocker et récupérer des données structurées.

9. Format lisible par l’humain

La structure simple et intuitive de JSON permet aux développeurs et aux parties prenantes non techniques de le lire et de le comprendre facilement, simplifiant le débogage et la collaboration.

En combinant prévisibilité, efficacité, convivialité et flexibilité, JSON est devenu une pierre angulaire du développement d’applications modernes. Sa capacité à imposer des sorties structurées, à assurer un échange fiable de données et à s’intégrer de manière transparente avec les outils, API et bases de données en fait un format inestimable pour les développeurs et les organisations.

Applications du format JSON

L’utilisation de JSON pour les sorties structurées est polyvalente et continue de croître dans divers domaines :

1. Web scraping

  • Extraction d’éléments spécifiques tels que les titres, les paragraphes, les liens et les images de pages web, et présentation dans un format JSON structuré.

2. Extraction de données à partir de texte

  • Conversion de texte non structuré en objets JSON structurés pour des tâches telles que la récupération d’informations, l’analyse de données ou l’organisation de contenu.

3. Construction de chatbots et d’agents conversationnels

  • Garantir que les réponses des chatbots respectent une structure JSON prédéfinie, en particulier lors de l’intégration avec des systèmes backend ou des API.

Novita AI a lancé des descriptions de capacités pour chaque LLM, que vous pouvez consulter directement dans la console et la documentation.

Choisissez votre modèle

Limitations du format JSON

Malgré ses avantages, l’utilisation de JSON pour les sorties structurées présente certaines limitations :

1. Support partiel du schéma JSON

  • Certaines API LLM, comme l’API ChatCompletions d’OpenAI, ne supportent qu’un sous-ensemble de la spécification complète du schéma JSON. Des fonctionnalités telles que minimum et maximum pour les nombres ou minItems et maxItems pour les tableaux peuvent ne pas être supportées, limitant les contraintes que vous pouvez imposer.

2. Limitations de formatage

  • Certaines spécifications de formatage, comme les formats datetime dans les schémas Pydantic, peuvent ne pas être directement gérées par les API, nécessitant des étapes de post-validation supplémentaires.

3. Possibilité d’hallucinations

  • Bien que JSON garantisse la structure de la sortie, le contenu dans les champs structurés peut toujours être halluciné. Par exemple, les identifiants de produits peuvent être formatés correctement sous forme de chaînes, mais les identifiants eux-mêmes peuvent être invalides ou absurdes.

4. Limites de tokens de sortie

  • Les sorties JSON sont limitées par les limites de tokens des LLM (par exemple, les modèles OpenAI avec un plafond de 16 384 tokens). Si la sortie structurée dépasse la limite, elle peut être tronquée, résultant en un JSON invalide.

5. Limites de complexité du schéma

  • Les schémas profondément imbriqués avec de nombreuses propriétés d’objet peuvent provoquer des erreurs API. Il est recommandé de garder les schémas relativement plats et simples pour de meilleures performances et éviter les erreurs.

6. Capacités de schéma dynamique limitées

  • Les schémas hautement dynamiques ou arbitraires, comme les listes de paires clé-valeur où les clés ne sont pas prédéfinies, sont difficiles à implémenter avec les sorties structurées. Dans de tels cas, le mode JSON standard avec des instructions dans le prompt système peut être plus efficace.

7. Surcharge de latence

  • Le traitement des schémas structurés peut introduire une latence pour les requêtes initiales, car le schéma doit être traité et potentiellement mis en cache.

8. Absence de commentaires natifs

  • JSON ne prend pas en charge les commentaires dans les données, ce qui peut rendre les structures complexes plus difficiles à comprendre sans documentation externe.

JSON est une pierre angulaire dans le développement d’applications modernes avec les LLM, offrant un format robuste et largement adopté pour les sorties structurées. En imposant des schémas prédéfinis, il assure la cohérence, facilite l’extraction de données et rationalise l’intégration entre les systèmes. Malgré des limitations telles que le support partiel du schéma JSON et les hallucinations potentielles de contenu, sa prévisibilité, sa facilité d’utilisation et sa compatibilité le rendent indispensable pour créer des applications intelligentes et intégrées. Une compréhension claire de ses forces et de ses contraintes est essentielle pour optimiser les solutions pilotées par LLM.

Questions fréquemment posées

La sortie structurée avec JSON est-elle garantie sans erreur ?

Bien que la sortie structurée garantisse que la réponse soit un objet JSON valide conforme au schéma, elle ne garantit pas l’exactitude ou la validité du contenu dans cette structure. Des hallucinations peuvent toujours se produire.

L’utilisation de la sortie structurée avec JSON ralentit-elle la réponse du LLM ?

Il peut y avoir une légère surcharge de latence initiale lorsque le schéma est traité. Cependant, dans certaines implémentations, cette surcharge est minimisée après les premières requêtes grâce à la mise en cache et à d’autres optimisations.

Quelle est la différence entre le mode JSON et le mode schéma JSON ?

En mode JSON, vous demandez au LLM de renvoyer un objet JSON valide sans spécifier de schéma détaillé. En mode schéma JSON, vous fournissez un schéma JSON spécifique, et le LLM est contraint de respecter cette structure dans sa sortie.

Novita AI est la plateforme tout-en-un cloud qui propulse vos ambitions en IA. API intégrées, sans serveur, instance GPU — les outils rentables dont vous avez besoin. Éliminez l’infrastructure, commencez gratuitement et réalisez votre vision IA.

Lecture recommandée