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