GitHub Repo
Difyコミュニティが構造化出力の修正を提案、フィールド名とSchemaキーワードの衝突に対応
10月29日のDifyコミュニティ報告によると、特定のフィールド名とローカルSchema参照の組み合わせにより、エージェントの作成に失敗する可能性がある。報告者は翌日に修正を提案し、テスト結果を公表したが、確認時点ではまだマージされていない。

Difyの構造化出力レイヤーで、フィールド名の互換性に関する問題が見つかった。コミュニティは10月29日、mainブランチのdify-agentについて、出力フィールド名がdefaultで、ローカルの$defs定義を$refで参照している場合、エージェントの作成時にKeyErrorが発生する可能性があると報告した。同じ構造でもフィールド名をwidgetに変えると正常に処理されるため、問題はモデルの生成内容ではなくSchemaの走査にあると考えられる。問題報告
JSON Schemaでは、再利用可能なサブ構造を$defsに格納し、$refで参照できるため、複数のフィールドで同じオブジェクト定義を共有するのに適している。こうした参照には明確な構造上の意味があるため、走査処理ではSchemaキーワードと、properties内にあるユーザー定義のフィールド名を区別する必要がある。JSON Schema公式ガイド
Difyの公開コードによると、出力レイヤーはまずローカル参照を展開し、その後SchemaをPydanticに渡す。現在の走査処理はdefault、enum、constなどのキー名に遭遇すると、その値を保持して中身の処理をスキップする。このルールがフィールド名のマッピングにも適用されるため、参照が展開されないままルートレベルの$defsが削除され、後続のSchema生成に失敗する可能性がある。出力レイヤーのコード
10月30日に提案された修正では、配置場所に応じて走査方法を切り替える。Schemaオブジェクト内ではリテラルデータを保持し、フィールドマッピング内では各サブSchemaを個別に処理する。報告者によると、追加したテストは元のバージョンで13件失敗し、修正適用後は出力レイヤーのテスト33件がすべて成功した。これらの結果は独立して再実行されておらず、PRは引き続きレビュー待ちとなっている。修正提案とテスト
エンジニアリングチームにとって、既存のデータ契約で使われているフィールド名が、エージェントの初期化に影響する可能性がある。報告では、同じ処理経路で非ローカル参照の検証も漏れると指摘されているが、外部アクセスを引き起こし得ると結論づけるには、現時点で証拠が不十分だ。ネストされた構造化出力を使うチームは、実際のSchemaでエージェント作成フローを検証し、修正のマージと正式リリースへの反映状況を追跡するとよい。