JSON形式での出力
Last updated
Was this helpful?
Last updated
Was this helpful?
DifyはLLMツールチェーンプラットフォームとして、JSON形式での出力機能をサポートしています。この機能により、LLMから返されるデータの形式が利用しやすく、安定し、予測可能になります。エラー処理やフォーマット変換の手間を削減できます。
データ形式の整合性確保: LLMがコンテンツを生成する場合でも、事前に設定された形式に準拠し、データの不整合を防ぎます。
後続処理の簡素化: データベース、APIまたはフロントエンドは、追加のデータクレンジングなしでJSONスキーマを直接解析できます。
ローコード開発の効率化: 開発者は複雑なデータ検証ロジックを手書きする必要がなく、JSONスキーマを使用して出力を制限できます。
Difyの操作画面では、次の2つの方法でJSON形式での出力を実装できます。
方法1: ツール設定を直接行う
方法2: LLMノードのJSONスキーマエディタを使用する
> データ構造 > 出力変数の定義を参照してください。
> 高級機能 > 構造化出力 と > 活用事例 > 構造化出力を参照してください。
例外状況
JSONスキーマエディタを使用して構造化出力を行う際に、以下の制限や例外状況が発生する可能性があります。
モデルの能力制限: 一部のLLM(特に70B以下のモデル、またはGPT-3.5Turbo相当のモデル)は、指示への追従性が低いため、JSONスキーマの解析に失敗する可能性があります。
形式の互換性: 一部のLLMはJSONモードのみをサポートし、JSONスキーマをサポートしていないため、厳密なスキーマ解析に失敗する可能性があります。
エラーメッセージ: Failed to parse structured output: output is not a valid json str
というエラーが発生します。この種のエラーは、主にモデルがJSONの生成に失敗したことが原因です。
推奨される対処方法
JSONスキーマをサポートするモデルを優先的に使用する: 推奨リストは以下のとおりです。
Gemini2.0Flash/Flash-Lite
Gemini1.5Flash8B(0827/0924)
Gemini-1.5pro
GPT-4o
GPT-4o-mini
o1-mini/o3-miniシリーズ
システムプロンプトを適切に調整する: 指示への追従性を高め、LLMの出力がスキーマ規範に準拠するように、システムプロンプトを調整してください。例えば、JSONスキーマが数式の構造化を目的としているのに、法律条文の解析を指示すると、モデルがタスクを正しく理解できず、出力の精度が低下する可能性があります。
例外処理ポリシーを設定する: 解析に失敗した場合、以下の対策を検討できます。
再試行設定: ノード内で再試行設定を有効にし、最大再試行回数と再試行間隔を設定して、解析エラーの影響を軽減します。
エラー時の処理を設定する: ノード内の例外処理でエラー時の処理を設定します。ノードで例外が発生すると、エラー時の処理が自動的に実行されます。
を参照してください。