¿Cómo utilizar el objeto jsonarray en Dify?
Tutoriales prácticos sobre IAActualizado hace 8 meses Círculo de intercambio de inteligencia artificial 13.5K 00
Conceptos básicos de JSONArray
JSONArray
es una estructura de array para almacenar múltiples objetos JSON. Cada elemento puede ser un objeto JSON, una matriz o un tipo de dato básico (por ejemplo, cadena, número, etc.). En el Dify En el JSONArray
Se trata principalmente de analizar y generar datos JSON.
Todas las estructuras de array soportadas por Dify: String, Number, Boolean, Integer,ObjetoArray, Enum, anyOf
guanxi
- Esquema JSON JSON Schema es una especificación para describir y validar el formato de datos JSON. Define la estructura de los datos JSON, incluidos los tipos de datos, atributos, campos obligatorios, etc. El propio esquema JSON es también un objeto JSON que utiliza palabras clave específicas para describir la organización de los datos y las restricciones.
- JSONArray JSONArray es una estructura para datos JSON que representa una lista ordenada de valores. Esta lista puede contener varios objetos JSON, matrices o tipos de datos básicos.JSONArray se formatea con el corchete central
[]
Envuelto.
Validación y descripciónJSON Schema: JSON Schema puede utilizarse para validar datos JSON que contengan JSONArray. Por ejemplo, puedes definir un campo en un JSON Schema como un tipo array y especificar que cada elemento en ese array debe ser un objeto JSON de un formato particular. Este enfoque garantiza que cada elemento del JSONArray se ajuste a la estructura y tipo esperados al procesar los datos.
ejemplo típicoSupongamos que tenemos los siguientes datos JSON:
{ "users": [ {"name": "Alice", "age": 30}, {"name": "Bob", "age": 25} ] }
Si necesita definir un dato JSON estructurado en Dify, puede utilizar JSON Schema para describirlo JSONArray
estructura. El esquema JSON correspondiente puede ser:
{ "type": "object", "properties": { "users": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer" } }, "required": ["name", "age"] } } }, "required": ["users"] }
En este ejemplo, el esquema JSON establece explícitamente que la variable users
es un JSONArray, y cada objeto en él debe contener un objeto name
responder cantando age
Atributos.
Así que vuelve la pregunta:¿Cómo puedo sacar el máximo partido del Dify Utiliza el esquema JSON en LLM para que la salida de LLM siga un formato estructurado.
Modelos que soportan la funcionalidad JSON Schema en Dify
o1-2024-12-17
y más tardegpt-4o-mini-2024-07-18
y más tardegpt-4o-2024-08-06
y más tarde
Para obtener más información sobre las funciones de salida estructurada de la familia de modelos OpenAI, consulte el documento Salida estructurada.
Tenga en cuenta que json_schema y llamada a funciones Ambos pueden generar datos estructurados.json_schema sólo se utiliza para estructurar datos para el contenido.La llamada a funciones es más útil cuando se llaman datos, herramientas, funciones y se generan respuestas, que es como la herramienta asociada "Asistente Inteligente" en Dify utiliza la llamada a funciones.
Texto completo: Configuración de la salida estructurada del esquema JSON en las herramientas de Dify
La siguiente ruta de uso especifica la salida estructurada LLM:
- Conecta el LLM a las herramientas, funciones, datos, etc. del sistema; se establece en la definición de la función.
strict: true
Cuando la activas, la función Structured-outputs garantiza que los parámetros que LLM genera para una llamada a función coinciden exactamente con el esquema JSON que proporcionas en la definición de la función. - LLM responde al usuario con una salida en un formato de contenido estructurado tal y como se define en el esquema JSON.
La siguiente sección describe cómo activar y utilizar la función de esquema JSON en Dify.
1. Abrir esquema JSON
Cambie el LLM de su aplicación a un modelo que admita la salida de esquema JSON como se ha descrito anteriormente y, a continuación, active el formulario de configuración para JSON Schema
y rellene la plantilla JSON Schema; active también la opción response_format
y cambiar a la columna json_schema
Formato.

El contenido generado por LLM admite los siguientes formatos de salida:
- Texto. Salida en formato de texto
2. Defina la plantilla del esquema JSON.
Puede consultar el siguiente formato de esquema JSON y definir el contenido de la plantilla:
{
"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
}
}
Instrucciones paso a paso:
- Definir la información básica:
- establecer
name
: Dé a su esquema un nombre descriptivo. - aumentar
description
Descripción breve del uso del esquema. - establecer
strict
: true: Asegura el modo estricto.
- establecer
schema
Objeto:
- establecer
type: "object"
: Especifica el nivel raíz como tipo de objeto. - aumentar
properties
Objeto: se utiliza para definir todos los campos.
- Define los campos:
- Crear un objeto para cada campo que contenga
type
responder cantandodescription
. - Tipos comunes:
string
,number
,boolean
,array
,object
. - Para matrices, utilice la función
items
Define el tipo de elemento. - Para los objetos, las definiciones recursivas
properties
.
- Restricciones de ajuste:
- Añadir en cada nivel
required
Lista de todos los campos obligatorios. - Ajuste en cada nivel de objeto
additionalProperties: false
.
- Manejo especial del campo:
- utilizar
enum
Limitar los valores opcionales. - utilizar
$ref
Implementación de estructuras recursivas.
ejemplo típico
1. Cadena de razonamiento (convencional)
Ejemplo de archivo de esquema 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"]
}
}
Palabra clave de referencia
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.
Generador de IU (modo raíz recursivo)
{
"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
}
}
Palabra de referencia:
You are a UI generator AI. Convert the user input into a UI.
Ejemplos de efectos:

llamar la atención sobre algo
- Por favor, asegúrese de que las instrucciones de la aplicación contienen instrucciones sobre cómo manejar situaciones en las que la entrada del usuario no produce una respuesta válida.
- El modelo siempre intentará seguir el patrón proporcionado y puede hacer que la LLM alucine si la entrada no guarda ninguna relación con el patrón especificado.
- Si LLM detecta que la entrada es incompatible con la tarea, puede incluir el idioma en el prompt para especificar la devolución de parámetros vacíos o una sentencia específica.
- Todos los campos deben ser
required
Para más información, consulteaquí (literario). - propiedadesadicionales: false debe establecerse siempre en el objeto
- El objeto de nivel raíz del esquema debe ser un objeto
- Métodos de salida de datos estructurados de grandes modelos: una lista seleccionada de recursos JSON de LLM
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...