Aprendizagem pessoal com IA
e orientação prática

Como usar o objeto jsonarray no Dify?

Conceitos básicos de JSONArray

JSONArray é uma estrutura de matriz para armazenar vários objetos JSON. Cada elemento pode ser um objeto JSON, uma matriz ou um tipo de dados básico (por exemplo, string, número etc.). Na seção Dify No JSONArray Envolve principalmente a análise e a geração de dados JSON.


Todas as estruturas de matriz suportadas pela Dify: String, Number, Boolean, Integer,Objeto, Array, Enum, anyOf

 

guanxi

  • Esquema JSON O esquema JSON é uma especificação para descrever e validar o formato de dados JSON. Ele define a estrutura dos dados JSON, incluindo tipos de dados, atributos, campos obrigatórios etc. O próprio esquema JSON também é um objeto JSON que usa palavras-chave específicas para descrever a organização dos dados e as restrições.
  • JSONArray JSONArray é uma estrutura para dados JSON que representa uma lista ordenada de valores. Essa lista pode conter vários objetos JSON, matrizes ou tipos de dados básicos. [] Embrulhado.

 

Validação e descriçãoJSON Schema: o JSON Schema pode ser usado para validar dados JSON que contenham JSONArray. Por exemplo, você pode definir um campo em um esquema JSON como um tipo de matriz e especificar que cada elemento dessa matriz deve ser um objeto JSON de um formato específico. Essa abordagem garante que cada elemento do JSONArray esteja em conformidade com a estrutura e o tipo esperados ao processar os dados.

exemplo típicoSuponha que tenhamos dados JSON da seguinte forma:

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

 

Se você precisar definir um dado JSON estruturado na Dify, poderá usar o esquema JSON para descrevê-lo JSONArray estrutura. O esquema JSON correspondente pode ser:

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

Neste exemplo, o esquema JSON declara explicitamente que o usuários é um JSONArray, e cada objeto nele deve conter um nome responder cantando idade Atributos.

 

Portanto, a pergunta volta a ser feita:Como você descobre o que está acontecendo na Dify Use o esquema JSON no LLM para fazer com que a saída do LLM siga um formato estruturado.

 

Modelos que suportam a funcionalidade de esquema JSON na Dify

  • o1-2024-12-17 e posteriormente
  • gpt-4o-mini-2024-07-18 e posteriormente
  • gpt-4o-2024-08-06 e posteriormente

 

Para saber mais sobre os recursos de saída estruturada da família de modelos OpenAI, consulte a seção Saída estruturada.

Observação: Tanto o json_schema quanto a chamada de função podem gerar dados estruturados.O json_schema é usado apenas para estruturar dados para o conteúdo.A chamada de função é mais útil ao chamar dados, ferramentas, funções e gerar respostas, que é como a ferramenta associada ao "Assistente Inteligente" na Dify usa a chamada de função.

 

Texto completo: Configuração da saída estruturada do esquema JSON no Dify Tools

O caminho de uso a seguir especifica a saída estruturada do LLM:

  1. Conecta o LLM a ferramentas, funções, dados etc. no sistema; definido na definição da função rigoroso: verdadeiroQuando ativado, o recurso Structured-outputs garante que os parâmetros gerados pelo LLM para uma chamada de função correspondam exatamente ao esquema JSON fornecido na definição da função.
  2. O LLM responde ao usuário com a saída em um formato de conteúdo estruturado, conforme definido no esquema JSON.

A seção a seguir descreve como ativar e usar o recurso JSON Schema na Dify.

 

1. abrir o esquema JSON

Altere o LLM em seu aplicativo para um modelo que ofereça suporte à saída do esquema JSON, conforme descrito acima, e ative o formulário de configuração para Esquema JSON e preencha o modelo de esquema JSON; também ative o formato_de_resposta e mudar para a coluna json_schema Formato.

Como usar o objeto jsonarray no Dify-1

 

O conteúdo gerado pelo LLM é compatível com os seguintes formatos de saída:

  • Texto. Saída em formato de texto

2) Defina o modelo de esquema JSON.

Você pode consultar o seguinte formato de esquema JSON e definir o conteúdo do modelo:

{
"name": "template_schema", "description".
"description": "Um modelo genérico para JSON Schema",

"schema": {
"type": "object", "properties": { "name": "template_schema", "strict":true, "schema": {
"properties": {
"field1": {
"type": "string", "description": {
"description": "Descrição do campo1"
}, "field1": { "type": "string", "description": "Descrição do campo1
"field2": {

"description": "Descrição do campo2"
}, "field2": { "type": "number", "description": "Descrição do campo2" }, "description": "Descrição do campo2" }
"field3": {


"items": {
"type": "string"
}
}, "items": { "type": "string" }
"field4": {
"type": "object", "description": "Descrição do campo4", {
"description": "Descrição do field4",
"properties": {
"subfield1": {
"type": "string", "description": { "subfield1": {
"description": "Descrição do subcampo1"
}
}, "required": ["subfield1"], "description": "Descrição do subcampo1" }
"required": ["subfield1"], "additionalProperties".
"additionalProperties":false
}
}, "required": ["field1", "field1"], "additionalProperties":false }
"required": ["field1", "field2", "field3", "field4"], "additionalProperties":false } }, "additionalProperties":false }
"additionalProperties":false
}
}

Instruções passo a passo:

  1. Definir informações básicas:
  • configurar nomeNome: Dê ao seu esquema um nome descritivo.
  • aumentar descriçãoDescrição breve do uso do esquema: uma breve descrição do uso do esquema.
  • configurar rigoroso: true: garante o modo estrito.
  1. estabelecer esquema Objeto:
  • configurar tipo: "objeto"Especifica o nível raiz como um tipo de objeto.
  • aumentar propriedades Objeto: Usado para definir todos os campos.
  1. Defina os campos:
  • Criar um objeto para cada campo contendo tipo responder cantando descrição.
  • Tipos comuns:stringnúmerobooleanomatrizobjeto.
  • Para matrizes, use o itens Define o tipo de elemento.
  • Para objetos, definições recursivas propriedades.
  1. Definição de restrições:
  • Adicionar em cada nível necessário Matriz que lista todos os campos obrigatórios.
  • Configurando o additionalProperties: false.
  1. Manuseio de campo especial:
  • fazer uso de enum Limite de valores opcionais.
  • fazer uso de $ref Implementação de estruturas recursivas.

exemplo típico

1. cadeia de raciocínio (convencional)

Exemplo de arquivo de esquema JSON

{
"name": "math_reasoning", "description".
"description": "Registra as etapas e a resposta final do raciocínio matemático", "strict":true, { "name".
"strict":true, "schema": { "name": "math_reasoning
"schema": {
"type": "object", "properties": {
"properties": {
"steps": {
"type": "array", "description": {
"description": "Matriz de etapas de raciocínio", "items": {
"itens": {
"type": "object", "properties": { "properties": {
"properties": {
"explanation" (explicação): {
"type": "string", "description": {
"description": "Explicação da etapa de raciocínio"
}, "output": { "explanation": { "type": "string", "description": "Explicação da etapa de raciocínio" }, "output": { "explanation": { "type": "string", "description": "Explicação da etapa de raciocínio
"output": {
"type": "string", "description": "Explicação da etapa de raciocínio" }, "output": {
"description": "Saída da etapa de raciocínio"
}
}, "required": ["explanation" (explicação), "description" (descrição): "Output of the reasoning step" (saída da etapa de raciocínio)
"required": ["explanation", "output"], "additionalProperties":falseProperties":falseProperties
"additionalProperties":false
}
}, "final_answer".
"final_answer": {
"type": "string", "description".
"description": "A resposta final para o problema matemático"
}
}, "additionalProperties":false, "description": "A resposta final para o problema matemático" }

"required": ["steps", "final_answer"]
}
}

Referência à palavra-chave

Você é um tutor de matemática útil. Você receberá um problema de matemática e seu objetivo será apresentar uma solução passo a passo, juntamente com uma resposta final.
Você receberá um problema de matemática e seu objetivo será apresentar uma solução passo a passo, juntamente com uma resposta final.
Para cada etapa, basta fornecer o resultado como uma equação e usar o campo de explicação para detalhar o raciocínio.

Gerador de interface do usuário (modo recursivo raiz)

{
"name": "ui", "description": "Dynamically generated UI" (IU gerada dinamicamente), {
"description": "Dynamically generated UI", "strict":true, { "name": "ui",
"strict":true, { "schema": {
"schema": {
"type": "object", "properties": { "type": "object", "properties": {
"properties": {
"type": {
"type": "string", "description".

"enum": ["div", "button", "header", "section", "field", "form"]
},
"label" (rótulo): {
"type": "string", "description": {
"description": "O rótulo do componente da interface do usuário, usado para botões ou campos de formulário"

"children": {
"type": "array", "description": "O rótulo do componente da interface do usuário, usado para botões ou campos de formulário" }, "children": {
"description": "Nested UI components" (componentes de IU aninhados), "items": {
"items": {
"$ref": "#"
}
}, "attributes": { "$ref": "#" }
"attributes": {
"type": "array", "description": "Componente da interface do usuário, adequado para qualquer elemento", "attributes": {
"description": "Atributos arbitrários para o componente da interface do usuário, adequados para qualquer elemento", "items": {
"items": {
"type": "object", "properties": {
"properties": {
"name": {
"type": "string", "description".
"description": "O nome do atributo, por exemplo, onClick ou className"
}, "value": { "name": { "type": "string", "description": "O nome do atributo, por exemplo, onClick ou className
"value": {
"type": "string", "description": "O nome do atributo, por exemplo, onClick ou className" }, "value": {
"description": "O valor do atributo"
}
}, "additionalProperties":false, "description": "O valor do atributo" }

"required": ["name", "value"]
}
}
}, "required": ["label", "attributes"] }
"required": ["type", "label", "children", "attributes"], "additionalProperties":false, "required": ["name", "value"] } }, "additionalProperties":false
"additionalProperties":false
}
}

Referência à palavra Cue:

Você é uma IA geradora de IU. Converta a entrada do usuário em uma IU.

Exemplos de efeitos:

Como usar o objeto jsonarray no Dify-1

 

chamar a atenção para algo

  • Certifique-se de que os prompts do aplicativo contenham instruções sobre como lidar com situações em que a entrada do usuário não produz uma resposta válida.
  • O modelo sempre tentará seguir o padrão fornecido e poderá causar alucinações no LLM se a entrada não tiver nenhuma relação com o padrão especificado.
  • Se o LLM detectar que a entrada é incompatível com a tarefa, você poderá incluir o idioma no prompt para especificar o retorno de parâmetros vazios ou de uma frase específica.
  • Todos os campos devem ser necessárioPara obter mais informações, consulteaqui (literário).
  • additionalProperties: false deve ser sempre definido no objeto
  • O objeto de nível raiz do esquema deve ser um objeto
  • Métodos de saída de dados estruturados de modelos grandes: uma lista selecionada de recursos JSON do LLM
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Como usar o objeto jsonarray no Dify?

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil