Dify從入門到高階系列一:詳解各種工作流節點,如何降低LLM開發門檻? 原創
去年在Dify還是0.x版本時,我曾用過一段時間。但就像很多技術愛好者一樣,因為工作變動不得不暫時擱置。最近收到不少讀者咨詢:"Dify現在發展到什么程度了?還值得投入學習嗎?"
帶著這些疑問,我重新審視了Dify,發現其已經發展到 1.x版本,從一個"有趣玩具"開始轉變成"生產級工具"。我準備深入研究一下它,并計劃寫一個系列文章,從基礎使用到核心原理,再到個性化定制開發。今天先為大家帶來Dify的全面介紹,后續會持續更新深度內容,歡迎關注追更!
dify 簡介
Dify 是一個面向生成式AI應用開發的開源平臺,致力于降低大語言模型技術的使用門檻。該平臺創新性地結合了云原生架構與AI工程化實踐,為開發者提供從模型接入到應用部署的一站式解決方案。
作為新一代LLM開發工具,Dify 的獨特價值在于:
- 技術整合:平臺預置了多模態模型支持體系、可視化Prompt設計器、智能檢索增強生成系統等核心組件
- 全棧能力:同時提供面向開發者的SDK和管理控制臺,支持從原型設計到規?;\營的全生命周期管理
- 協作特性:通過直觀的交互界面,讓業務專家也能參與AI能力調優和數據治理
為什么用dify
你可以把 LangChain 這類開發庫比作散裝的五金工具——雖然靈活,但需要開發者自行組裝。而 Dify 更像一個預制的智能建造系統,不僅提供標準化構件,還包含經過驗證的施工方案。
作為開源領域的工程化實踐者,Dify 展現出三大差異化優勢:
- 生產就緒性:預置企業級功能如多租戶隔離、審計日志、性能監控等開箱即用
- 架構完整性:從模型網關、業務邏輯層到用戶界面形成閉環系統
- 可控性保障:支持私有化部署的同時,保持與最新AI技術的同步演進
從創建應用開始
Dify 平臺提供四種不同層級的 AI 應用構建模式,滿足從入門到高階的開發需求:
- 對話助手(Chatbot)入門級解決方案,讓開發者快速搭建智能對話系統。通過可視化界面配置對話邏輯和知識庫,無需編碼即可創建具備基礎問答能力的 AI 助手,是探索大語言模型應用的理想起點。
- 智能代理(Agent)進階型應用框架,賦予 AI 自主決策與執行能力。系統可基于用戶意圖進行動態推理,智能調用 API 工具鏈完成復雜操作,如實時數據查詢、事務處理等,實現從"回答問題"到"解決問題"的跨越。
- 對話流程(Chatflow)支持上下文記憶的多輪交互系統。通過狀態機機制管理對話進程,可處理包含分支邏輯的深度會話場景,適用于客戶服務、教育輔導等需要持續跟蹤對話上下文的專業場景。
- 自動化工作流(Workflow)面向單次任務的高效處理引擎。采用節點式編排設計,支持將大語言模型能力與傳統系統服務無縫銜接,可快速構建數據提取、內容生成等批處理任務,顯著提升業務自動化水平。
每種模式都提供從開發調試到生產部署的全套工具鏈,開發者可根據業務復雜度自由選擇,并支持在項目演進過程中平滑升級應用架構。平臺特有的"漸進式復雜度"設計,既降低了入門門檻,又為專業開發保留了充分的擴展空間。
DSL文件
DSL 是由 Dify.AI 所定義的 AI 應用工程文件標準,文件格式為 YML。該標準涵蓋應用在 Dify 內的基本描述、模型參數、編排配置等信息。
如果你從社區或其它人那里獲得了一個應用模版(DSL 文件),可以從工作室選擇 「 導入DSL 文件 」。DSL 文件導入后將直接加載原應用的所有配置信息。
工作流節點
節點是工作流的重要元素,通過串聯不同功能的節點,可以實現工作流的各項操作。這種設計特別適合自動化和批量處理場景,如高品質翻譯、數據分析、內容創作、電子郵件自動化等應用。然而,這類應用無法進行生成結果的多輪對話交互。
起始節點
"起始"節點是所有工作流程應用(Chatflow / Workflow)的基礎,提供了之后各個節點以及應用運行所需的初始信息,如用戶輸入的文本、上傳的文件等。
大語言模型節點(LLM節點)
這個節點調用大語言模型(LLM),處理和分析用戶在 "起始" 節點中輸入的數據(包括自然語言、上傳的文件或圖片),并產生有意義的響應。
知識檢索節點
此節點能從知識庫中尋找與用戶問題相關的內容,這些內容可以被下一步的 LLM 節點用作參考上下文。
問題分類節點
問題分類節點通過預設的分類規則,能夠根據用戶輸入,利用 LLM 進行推理并匹配相應的類別,生成分類結果,為后續節點提供更精準的信息。
條件分支節點
該節點可以根據設定的 If/else/elif 條件將 Chatflow / Workflow 的流程切分為多個分支。
代碼執行節點
代碼節點支持 Python / NodeJS 代碼的運行,用于在工作流程中進行數據轉換。它可以簡化你的工作流程,適合進行算術運算、JSON 變換、文本處理等操作。
模板轉換節點
借助 Jinja2 這種強大的 Python 模板語言,模板節點可以在工作流中實現靈活且輕量的數據轉換,適用于處理文本、轉換JSON 等。例如,將前面步驟的變量進行格式化和合并,創造出單一的文本輸出,非常適合將多個數據源的信息匯總成一個特定格式,以滿足后續步驟的需求。
文檔提取器節點
LLM 無法直接讀取或理解文檔內容,因此需要借助文檔提取器節點來解析用戶上傳的文檔,將文件中的信息轉換為文本,再傳給 LLM 進行處理。
列表操作節點
列表操作節點能夠對文件的各種屬性(如格式類型、文件名、大小等)進行篩選和提取,將不同格式的文件送到相應的處理節點,實現精準的文件流程控制。
變量聚合節點
通過變量聚合,可以將問題分類或條件分支等的多路輸出整合為單一輸出,供下游節點使用和操作,極大地簡化了數據流的管理。
變量賦值節點
你可以利用變量賦值節點將對話上下文、上傳的文件、用戶輸入的偏好信息等變量寫入會話變量,供后續對話參考。
迭代節點
迭代節點可以對數組中的每個元素執行相同的操作,并產生所有結果,可以視為批量任務處理器。通常,迭代節點會配合數組變量使用。
參數提取節點
這個節點利用 LLM 從自然語言中推理和提取結構化參數,以供后續工具調用或 HTTP 請求使用。
HTTP 請求節點
該節點允許通過 HTTP 協議向服務器發送請求,適用于獲取外部數據、webhook、生成圖片、下載文件等操作。你可以向指定的網絡地址發送定制化的 HTTP 請求,實現與各種外部服務的互動。
Agent 節點
Agent 節點在Dify Chatflow/Workflow 中負責自主調用工具的功能。它通過集成各種 Agent 推理策略,使LLM能夠在運行時動態選擇并執行工具,實現多步推理。
工具節點
"工具"節點對工作流提供了強勁的外部功能支持,可分為三個類別:
- 預裝工具,這些是由Dify直接提供的工具,在使用前可能要先進行授權。
- 自定義工具,這些工具可以通過 OpenAPI/Swagger 標準格式導入或設定。如預裝工具無法滿足你的需求,可在Dify界面導向 -- 工具中構建自己的工具。
- 工作流程,你可以設計一個更加復雜的工作流,并發布為工具。
本文轉載自公眾號AI 博物院 作者:longyunfeigu
原文鏈接:??https://mp.weixin.qq.com/s/RDxKHDqdhnTDk7_2mlIaqw???
