DifyでJSONスキーマ出力を使用する方法
Last updated
Last updated
JSON Schemaは、JSONデータ構造を記述するための仕様です。開発者は、LLMの出力が定義されたデータやコンテンツに厳密に適合するように、JSON Schema構造を定義することができます。これにより、明確で分かりやすいドキュメントやコード構造を生成することが可能となります。
gpt-4o-mini-2024-07-18
及びそれ以降
gpt-4o-2024-08-06
及びそれ以降
OpenAIシリーズモデルの構造化された出力機能について詳しくは、Structured Outputsをご覧ください。
アプリケーション内のLLMを、上記で言及したJSON Schema出力をサポートするモデルのいずれかに切り替えます。次に、設定フォームでJSON Schema
を有効にし、JSON Schemaテンプレートを入力します。同時に、response_format
列を有効にし、json_schema
形式に切り替えます。
LLMによって生成されたコンテンツは、次の形式で出力をサポートします:
テキスト: テキスト形式で出力
以下のJSON Schema形式を参考にして、テンプレートコンテンツを定義できます:
段階的な指導:
基本情報の説明:
name
を設定:スキーマの記述に適した名前を選びます。
description
を追加:スキーマの目的を簡潔に説明します。
strict
をtrueに設定して厳密モードを確保します。
schema
オブジェクトを作成:
type: "object"
を設定して、ルートレベルをオブジェクト型として指定します。
すべてのフィールドを定義するためにproperties
オブジェクトを追加します。
フィールドを定義:
各フィールドに対してtype
とdescription
を含むオブジェクトを作成します。
一般的なタイプ:string
、number
、boolean
、array
、object
。
配列の場合はitems
を使用して要素のタイプを定義します。
オブジェクトの場合は、properties
を再帰的に定義します。
制約を設定:
各レベルでrequired
配列を追加し、すべての必須フィールドをリストアップします。
各オブジェクトレベルでadditionalProperties: false
を設定します。
特殊なフィールドの取り扱い:
オプションの値を制限するためにenum
を使用します。
再帰構造を実装するために$ref
を使用します。
JSON Schemaの例
Prompt
JSON Schemaの例
Prompt
例の出力:
アプリのプロンプトに、ユーザー入力が有効な応答を生成しない状況の処理方法に関する指示が含まれていることを確認してください。
モデルは常に指定されたパターンに従おうとするため、入力が指定されたパターンとまったく無関係である場合、LLM が幻覚を引き起こす可能性があります。
LLM が入力がタスクと互換性がないことを検出した場合、プロンプトに言語を含めて、空のパラメーターまたは特定の文が返されるように指定できます。
すべてのフィールドはrequired
である必要があります。詳細については、こちら を参照してください。
AdditionalProperties: false は常にオブジェクトに設定する必要があります
スキーマのルートレベルのオブジェクトはオブジェクトである必要があります