Dify에서 jsonarray 객체를 사용하는 방법은 무엇인가요?

AI 실습 튜토리얼7개월 전 업데이트 AI 공유 서클
1.9K 00

JSONArray 기본 개념

JSONArray 는 여러 JSON 객체를 저장하기 위한 배열 구조입니다. 각 요소는 JSON 객체, 배열 또는 기본 데이터 유형(예: 문자열, 숫자 등)일 수 있습니다. 각 요소는 Dify 에서 JSONArray 주로 JSON 데이터를 구문 분석하고 생성하는 작업이 포함됩니다.

Dify에서 지원하는 모든 배열 구조: 문자열, 숫자, 부울, 정수,개체, 배열, 열거형, anyOf

 

guanxi

  • JSON 스키마 JSON 스키마는 JSON 데이터 형식을 설명하고 유효성을 검사하기 위한 사양입니다. 데이터 유형, 속성, 필수 필드 등을 포함한 JSON 데이터의 구조를 정의합니다. JSON 스키마 자체도 특정 키워드를 사용하여 데이터의 구성과 제약 조건을 설명하는 JSON 객체입니다.
  • JSONArray JSONArray는 정렬된 값 목록을 나타내는 JSON 데이터의 구조입니다. 이 목록에는 여러 개의 JSON 객체, 배열 또는 기본 데이터 유형이 포함될 수 있으며, JSONArray는 가운데 대괄호로 형식이 지정됩니다. [] 마무리했습니다.

 

유효성 검사 및 설명JSON 스키마를 사용하여 JSONArray가 포함된 JSON 데이터의 유효성을 검사할 수 있습니다. 예를 들어, JSON 스키마의 필드를 배열 유형으로 정의하고 해당 배열의 각 요소가 특정 형식의 JSON 객체여야 한다고 지정할 수 있습니다. 이 접근 방식은 데이터를 처리할 때 JSONArray의 각 요소가 예상되는 구조와 유형을 준수하도록 보장합니다.

일반적인 예다음과 같은 JSON 데이터가 있다고 가정해 보겠습니다:

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

 

Dify에서 구조화된 JSON 데이터를 정의해야 하는 경우 JSON 스키마를 사용하여 다음을 설명할 수 있습니다. JSONArray 구조입니다. 해당 JSON 스키마는 다음과 같을 수 있습니다:

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

이 예제에서 JSON 스키마는 명시적으로 다음과 같이 명시하고 있습니다. users 필드는 JSONArray이며, 그 안의 각 객체에는 name 노래로 응답 age 속성.

 

그래서 다시 질문이 돌아옵니다:이 기능을 최대한 활용하려면 어떻게 해야 하나요? Dify LLM에서 JSON 스키마를 사용하여 LLM 출력이 구조화된 형식을 따르도록 합니다.

 

Dify에서 JSON 스키마 기능을 지원하는 모델

  • o1-2024-12-17 이후
  • gpt-4o-mini-2024-07-18 이후
  • gpt-4o-2024-08-06 이후

 

OpenAI 모델 제품군의 구조화된 출력 기능에 대해 자세히 알아보려면 다음을 참조하세요. 구조화된 출력.

json_schema 및 함수 호출 둘 다 구조화된 데이터를 생성할 수 있습니다.json_schema는 콘텐츠의 데이터를 구조화하는 데만 사용됩니다.함수 호출은 데이터, 도구, 함수를 호출하고 답을 생성할 때 더 유용하며, Dify의 '스마트 어시스턴트' 관련 도구가 함수 호출을 사용하는 방식입니다.

 

전문: Dify 도구에서 JSON 스키마 구조화된 출력 구성하기

다음 사용 경로는 LLM 구조화된 출력을 지정합니다:

  1. LLM을 시스템의 도구, 함수, 데이터 등에 연결하고 함수 정의에서 설정합니다. strict: true이 기능을 켜면 구조화된 출력 기능이 함수 호출에 대해 LLM이 생성하는 매개변수가 함수 정의에서 제공한 JSON 스키마와 정확히 일치하도록 보장합니다.
  2. LLM은 JSON 스키마에 정의된 대로 구조화된 콘텐츠 형식의 출력으로 사용자에게 응답합니다.

다음 섹션에서는 Dify에서 JSON 스키마 기능을 켜고 사용하는 방법에 대해 간략하게 설명합니다.

 

1. JSON 스키마 열기

위에서 설명한 대로 애플리케이션의 LLM을 JSON 스키마 출력을 지원하는 모델로 전환한 다음 설정 양식을 다음과 같이 설정합니다. JSON Schema 을 클릭하고 JSON 스키마 템플릿을 채우십시오. response_format 열로 전환하고 json_schema 형식.

Dify 中的 jsonarray object 怎么用

 

LLM에서 생성된 콘텐츠는 다음과 같은 출력 형식을 지원합니다:

  • 텍스트. 텍스트 형식의 출력

2. JSON 스키마 템플릿을 정의합니다.

다음 JSON 스키마 형식을 참조하여 템플릿 콘텐츠를 정의할 수 있습니다:

{
"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
}
}

단계별 지침:

  1. 기본 정보를 정의합니다:
  • 설정 name스키마에 설명이 포함된 이름을 지정합니다.
  • 증가 description스키마 사용에 대한 간략한 설명입니다.
  • 설정 strict: true: 엄격 모드를 사용합니다.
  1. 설정 schema 객체:
  • 설정 type: "object": 루트 레벨을 객체 유형으로 지정합니다.
  • 증가 properties 객체: 모든 필드를 정의하는 데 사용됩니다.
  1. 필드를 정의합니다:
  • 다음을 포함하는 각 필드에 대한 개체를 만듭니다. type 노래로 응답 description.
  • 일반적인 유형:stringnumberbooleanarrayobject.
  • 배열의 경우 items 요소 유형을 정의합니다.
  • 객체의 경우, 재귀적 정의 properties.
  1. 제약 조건 설정하기:
  • 각 레벨에 추가 required 모든 필수 필드를 나열하는 배열입니다.
  • 각 개체 수준에서 설정 additionalProperties: false.
  1. 특수 현장 처리:
  • 활용 enum 선택적 값을 제한합니다.
  • 활용 $ref 재귀 구조 구현하기.

일반적인 예

1. 추론의 연쇄(기존)

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"]
}
}

큐 단어 참조

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.

UI 생성기(루트 재귀 모드)

{
"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
}
}

큐 단어 참조:

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

효과의 예:

Dify 中的 jsonarray object 怎么用

 

STH에 주목하세요.

  • 애플리케이션 프롬프트에 사용자 입력이 유효한 응답을 생성하지 않는 상황을 처리하는 방법에 대한 지침이 포함되어 있는지 확인하세요.
  • 모델은 항상 제공된 패턴을 따르려고 시도하며, 입력이 지정된 패턴과 전혀 관련이 없는 경우 LLM이 환각을 일으킬 수 있습니다.
  • LLM이 입력이 작업과 호환되지 않는다고 감지하면 빈 매개변수 또는 특정 문장의 반환을 지정하는 프롬프트에 해당 언어를 포함할 수 있습니다.
  • 모든 필드는 다음과 같아야 합니다. required자세한 내용은 다음을 참조하세요.여기(문학).
  • 추가 속성: false 는 항상 객체에 설정되어야 합니다.
  • 스키마의 루트 수준 개체는 객체여야 합니다.
  • 대규모 모델 구조화 데이터 출력 방법: 엄선된 LLM JSON 리소스 목록
© 저작권 정책
AiPPT

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...