Comment utiliser l'objet jsonarray dans Dify ?

JSONArray Concepts de base

JSONArray est une structure de tableau permettant de stocker plusieurs objets JSON. Chaque élément peut être un objet JSON, un tableau ou un type de données de base (chaîne de caractères, nombre, etc.). Dans le fichier Dify Dans le cadre de la JSONArray Il s'agit principalement d'analyser et de générer des données JSON.

Toutes les structures de tableau prises en charge par Dify : chaîne de caractères, nombre, booléen, entier,Objet, Array, Enum, anyOf

 

guanxi

  • Schéma JSON Le schéma JSON est une spécification permettant de décrire et de valider le format de données JSON. Il définit la structure des données JSON, y compris les types de données, les attributs, les champs obligatoires, etc. Le schéma JSON lui-même est également un objet JSON qui utilise des mots-clés spécifiques pour décrire l'organisation des données et des contraintes.
  • JSONArray JSONArray est une structure de données JSON qui représente une liste ordonnée de valeurs. Cette liste peut contenir plusieurs objets JSON, des tableaux ou des types de données de base. Cette liste peut contenir plusieurs objets JSON, des tableaux ou des types de données de base. [] Enveloppé.

 

Validation et descriptionJSON Schema : JSON Schema peut être utilisé pour valider des données JSON contenant des JSONArray. Par exemple, vous pouvez définir un champ dans un schéma JSON comme un type de tableau et spécifier que chaque élément de ce tableau doit être un objet JSON d'un format particulier. Cette approche garantit que chaque élément du tableau JSON est conforme à la structure et au type attendus lors du traitement des données.

exemple typique: Supposons que nous ayons des données JSON comme suit :

{
"users": [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
}

 

Si vous avez besoin de définir des données JSON structurées dans Dify, vous pouvez utiliser le schéma JSON pour les décrire. JSONArray structure. Le schéma JSON correspondant peut être :

{
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" }
},
"required": ["name", "age"]
}
}
},
"required": ["users"]
}

Dans cet exemple, le schéma JSON indique explicitement que l'élément users est un JSONArray, et chaque objet qui le compose doit contenir un élément name répondre en chantant age Attributs.

 

La question se pose donc à nouveau :Comment savoir ce qui se passe dans l'Union européenne ? Dify Utiliser le schéma JSON dans LLM pour que les résultats de LLM suivent un format structuré.

 

Modèles qui supportent la fonctionnalité JSON Schema dans Dify

  • o1-2024-12-17 et plus tard
  • gpt-4o-mini-2024-07-18 et plus tard
  • gpt-4o-2024-08-06 et plus tard

 

Pour en savoir plus sur les capacités de sortie structurée de la famille de modèles OpenAI, veuillez vous référer à la page d'accueil du site Web de l'OpenAI. Sortie structurée.

Notez que json_schema et l'option appel de fonction Tous deux peuvent générer des données structurées.json_schema n'est utilisé que pour structurer les données pour le contenu.L'appel de fonction est plus utile lorsqu'il s'agit d'appeler des données, des outils, des fonctions et de générer des réponses, et c'est ainsi que l'outil associé "Smart Assistant" dans Dify utilise l'appel de fonction.

 

Texte intégral : Configuration de la sortie structurée JSON Schema dans Dify Tools

Le chemin d'utilisation suivant spécifie la sortie structurée de LLM :

  1. Connecte le LLM aux outils, fonctions, données, etc. du système ; défini dans la définition de la fonction strict: trueLorsque vous l'activez, la fonction Structured-outputs garantit que les paramètres générés par LLM pour un appel de fonction correspondent exactement au schéma JSON que vous fournissez dans la définition de la fonction.
  2. Le LLM répond à l'utilisateur en produisant un contenu structuré tel que défini dans le schéma JSON.

La section suivante explique comment activer et utiliser la fonction JSON Schema dans Dify.

 

1. ouvrir le schéma JSON

Faites passer le LLM de votre application à un modèle qui prend en charge la sortie JSON Schema comme décrit ci-dessus, puis activez le formulaire d'installation pour JSON Schema et remplissez le modèle JSON Schema ; activez également la fonction response_format et passer à la colonne json_schema Format.

Dify 中的 jsonarray object 怎么用

 

Le contenu généré par LLM prend en charge les formats de sortie suivants :

  • Texte. Sortie au format texte

2. définir le modèle de schéma JSON.

Vous pouvez vous référer au format JSON Schema suivant et définir le contenu du modèle :

{
"name":"template_schema",
"description":"A generic template for JSON Schema",
"strict":true,
"schema": {
"type":"object",
"properties": {
"field1": {
"type":"string",
"description":"Description of field1"
},
"field2": {
"type":"number",
"description":"Description of field2"
},
"field3": {
"type":"array",
"description":"Description of field3",
"items": {
"type":"string"
}
},
"field4": {
"type":"object",
"description":"Description of field4",
"properties": {
"subfield1": {
"type":"string",
"description":"Description of subfield1"
}
},
"required": ["subfield1"],
"additionalProperties":false
}
},
"required": ["field1","field2","field3","field4"],
"additionalProperties":false
}
}

Instructions étape par étape :

  1. Définir les informations de base :
  • mettre en place nameNom du schéma : donnez un nom descriptif à votre schéma.
  • augmenter descriptionLe schéma : Une brève description de l'utilisation du schéma.
  • mettre en place strict: true : assurer le mode strict.
  1. établir schema Objet :
  • mettre en place type: "object": Spécifie le niveau racine en tant que type d'objet.
  • augmenter properties Objet : utilisé pour définir tous les champs.
  1. Définir les champs :
  • Créer un objet pour chaque champ contenant type répondre en chantant description.
  • Types courants :stringnumberbooleanarrayobject.
  • Pour les tableaux, utilisez la fonction items Définit le type d'élément.
  • Pour les objets, les définitions récursives properties.
  1. Fixer des contraintes :
  • Ajouter à chaque niveau required Tableau listant tous les champs obligatoires.
  • Réglage de la additionalProperties: false.
  1. Traitement spécial des champs :
  • utiliser enum Limiter les valeurs optionnelles.
  • utiliser $ref Mise en œuvre de structures récursives.

exemple typique

1) Chaîne de raisonnement (conventionnelle)

Exemple de fichier de schéma JSON

{
"name":"math_reasoning",
"description":"Records steps and final answer for mathematical reasoning",
"strict":true,
"schema": {
"type":"object",
"properties": {
"steps": {
"type":"array",
"description":"Array of reasoning steps",
"items": {
"type":"object",
"properties": {
"explanation": {
"type":"string",
"description":"Explanation of the reasoning step"
},
"output": {
"type":"string",
"description":"Output of the reasoning step"
}
},
"required": ["explanation","output"],
"additionalProperties":false
}
},
"final_answer": {
"type":"string",
"description":"The final answer to the mathematical problem"
}
},
"additionalProperties":false,
"required": ["steps","final_answer"]
}
}

Référence au mot clé

You are a helpful math tutor. You will be provided with a math problem,
and your goal will be to output a step by step solution, along with a final answer.
For each step, just provide the output as an equation use the explanation field to detail the reasoning.

Générateur d'interface utilisateur (mode récursif racine)

{
"name":"ui",
"description":"Dynamically generated UI",
"strict":true,
"schema": {
"type":"object",
"properties": {
"type": {
"type":"string",
"description":"The type of the UI component",
"enum": ["div","button","header","section","field","form"]
},
"label": {
"type":"string",
"description":"The label of the UI component, used for buttons or form fields"
},
"children": {
"type":"array",
"description":"Nested UI components",
"items": {
"$ref":"#"
}
},
"attributes": {
"type":"array",
"description":"Arbitrary attributes for the UI component, suitable for any element",
"items": {
"type":"object",
"properties": {
"name": {
"type":"string",
"description":"The name of the attribute, for example onClick or className"
},
"value": {
"type":"string",
"description":"The value of the attribute"
}
},
"additionalProperties":false,
"required": ["name","value"]
}
}
},
"required": ["type","label","children","attributes"],
"additionalProperties":false
}
}

C'est la référence aux mots :

You are a UI generator AI. Convert the user input into a UI.

Exemples d'effets :

Dify 中的 jsonarray object 怎么用

 

attirer l'attention sur qqch.

  • Veillez à ce que les messages-guides de l'application contiennent des instructions sur la manière de traiter les situations où la saisie de l'utilisateur ne produit pas une réponse valide.
  • Le modèle tentera toujours de suivre le modèle fourni et peut faire halluciner le LLM si l'entrée n'a aucun rapport avec le modèle spécifié.
  • Si LLM détecte que l'entrée est incompatible avec la tâche, vous pouvez inclure la langue dans l'invite pour spécifier le retour de paramètres vides ou d'une phrase spécifique.
  • Tous les champs doivent être requiredPour plus d'informations, veuillez consulterici (littéraire).
  • additionalProperties : false doit toujours être défini dans l'objet
  • L'objet de niveau racine du schéma doit être un objet
  • Méthodes de sortie des données structurées des grands modèles : une liste de ressources JSON du LLM
© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...