返回首頁

GitHub Repo

Dify 社群提出工作流程修補,Snippet 節點 ID 可能讓文件變數原樣送入模型

10 月 10 日的 Dify 社群回報指出,透過 Snippet 插入的節點可能產生無法解析的變數參照,讓模型收到佔位符而非文件內容。修補提案已附回歸測試,但尚未合併,也不會遷移既有工作流程。

The original uploader was Ggia at Greek Wikipedia. · CC BY-SA 2.5 · Image source
zh-Hant

Dify 社群於 10 月 10 日回報一項工作流程變數解析缺陷:在自架 Docker 版 1.17.0 中,透過 Snippet 插入文件擷取與 LLM 節點,再用變數選擇器將擷取結果加入提示,模型可能收到原始佔位符,並回答無法讀取內容。回報附有操作步驟與後端正規表示式最小案例。問題回報

回報將原因指向前後端的格式不一致。Snippet 插入程式以原節點 ID、時間戳與索引組合新 ID,中間帶有連字號;後端提示解析器的節點 ID 字元集合卻只接受英文字母、數字與底線。因此,畫面上已選取的文件變數,執行時仍可能無法匹配,直接成為提示文字。這也說明為何相似流程可能因建立節點的方式不同而出現差異。重現與解析路徑

Dify 官方文件說明,提示中的工作流程變數應在送入模型前替換為實際值。從工程角度推論,這類缺陷可能被誤判為文件擷取失敗或模型能力不足;排查文件問答流程時,除了查看上游節點輸出,也應核對實際送出的提示是否仍含變數標記。LLM 節點文件

同日提出的 PR #43838 改以數字時間戳產生節點 ID,發生碰撞時遞增,並保留圖形參照重新映射。作者表示,新增回歸案例在修補前失敗,修補後相關測試共 27 項通過,涵蓋同一時間戳重複插入、提示參照與連線端點;但未執行部署環境端到端測試或真實模型驗證。修補提案

截至查核時,提案仍開放且等待審查。其範圍只防止新插入節點產生不相容 ID,既有儲存流程不會自動修復。工程團隊接下來應追蹤合併與發版狀態,以及舊流程是否需要遷移;目前也不能將此個案擴大為所有 Dify 部署皆受影響。修補範圍與狀態

來源

  1. Snippet 節點 ID 導致變數未替換:Dify Issue #43830
  2. 產生相容提示模板的 Snippet 節點 ID:PR #43838
  3. LLM 節點與提示變數替換