概述
Dify 是一個開源的大語言模型(LLM)應用開發平臺,結合了后端即服務(Backend-as-a-Service)和 LLMOps 的理念,旨在幫助開發者快速構建生產級的生成式 AI 應用。它通過直觀的界面、強大的功能和靈活的部署方式,降低了 AI 應用開發的門檻,即使是非技術人員也能參與應用的定義和數據運營。本文檔將指導您了解 Dify 的核心功能、安裝部署、應用創建及常見使用場景。
Dify 簡介
Dify(Define + Modify)是一個易用的 LLMOps 平臺,旨在讓開發者能夠快速從原型設計到生產部署,構建可持續運營的 AI 應用。它提供以下核心功能:
- 工作流編排:通過可視化畫布構建和測試復雜的 AI 工作流。
- 全面模型支持:支持數百種專有和開源 LLM,如 GPT、Mistral、Llama3,以及任何與 OpenAI API 兼容的模型。
- 提示詞 IDE:直觀的界面用于設計提示詞、比較模型性能,并支持文本轉語音等功能。
- RAG 管道:內置檢索增強生成(RAG)功能,支持從 PDF、PPT 等文檔格式提取文本,構建私有知識庫。
- AI 智能體:支持基于 LLM 函數調用或 ReAct 策略定義智能代理,集成 50 多種內置工具(如 Google 搜索、DALL·E、Stable Diffusion)。
- LLMOps:提供日志監控、性能分析和持續優化功能。
- 后端即服務:提供易于集成的 RESTful API,支持與現有業務邏輯無縫對接。
Dify 相較于 LangChain 等開發庫,提供了更接近生產環境的完整解決方案,類似一個經過精心設計的腳手架系統。
安裝與部署
Dify 支持云服務和自托管兩種部署方式。本節以自托管方式為例,介紹如何在本地部署 Dify。
前提條件
- 系統要求:
- Docker 和 Docker Compose 已安裝。
- 最低硬件配置:4 核 CPU、8GB 內存、50GB 存儲空間。
- Git 已安裝(用于克隆代碼)。
- 網絡要求:確保可以訪問 Docker Hub 或鏡像源。
部署步驟
- 克隆 Dify 代碼:
git clone https://github.com/langgenius/dify.git cd dify/docker
- 配置環境變量:
cp .env.example .env
.env
文件,配置必要的參數(如數據庫連接、API 密鑰等)。確保FILES_URL
設置為 Dify 的訪問地址(例如http://192.168.10.14
),以避免文件上傳問題。 - 啟動 Dify:
docker compose up -d
- 訪問控制臺:
- 啟動完成后,在瀏覽器訪問
http://localhost/install
。 - 按照提示設置管理員賬號并完成初始化。
- 啟動完成后,在瀏覽器訪問
- 配置模型提供商:
- 登錄后,進入「設置 > 模型供應商」,添加 API 密鑰(如 OpenAI、DeepSeek、Claude 等)。
- 配置默認推理模型和 Embedding 模型。
常見問題
- 鏡像拉取失敗:檢查網絡連接或更換鏡像源。運行
docker pull
手動拉取鏡像。 - 權限問題:以管理員身份運行 Docker(Windows 用戶右鍵 Docker Desktop 選擇“以管理員身份運行”)。
- 文件上傳失敗:確保
.env
文件中的FILES_URL
已正確配置為 Dify 的訪問地址。
創建 AI 應用
Dify 支持創建四種類型的應用:聊天助手、文本生成應用、智能代理(Agent)和工作流。以下是創建應用的步驟:
步驟
- 登錄 Dify 控制臺:
- 使用管理員賬號登錄,進入「工作室」頁面。
- 選擇創建方式:
- 從模板創建:選擇 Dify 提供的預置模板(如智能客服、文檔分析助手)。
- 從空白創建:手動配置應用。
- 導入 DSL 文件:使用社區分享的 YAML 格式應用配置文件。
- 配置應用:
- 命名與描述:為應用設置名稱、圖標和描述。
- 選擇模型:從已配置的模型供應商中選擇合適的推理模型(如 GPT-4、DeepSeek)。
- 提示詞設計:在提示詞 IDE 中編寫 Prompt,定義 AI 的行為。
- 知識庫(可選):上傳文檔(PDF、Word 等)或連接 Notion、Web 站點,構建 RAG 知識庫。
- 發布應用:
- 點擊「發布」按鈕,生成唯一的 URL 或 API 密鑰。
- 可選擇將應用嵌入網頁(通過 iframe、script 或瀏覽器插件)。
應用類型
- 聊天助手:適合多輪對話場景,如智能客服、語義搜索。支持上下文記憶。
- 文本生成應用:用于生成文章、摘要、翻譯等,適合新聞、營銷等場景。
- 智能代理:支持自主決策和工具調用,適用于復雜任務如數據查詢、事務處理。
- 工作流:通過節點分解復雜任務,適合自動化場景如批量翻譯、數據分析。
構建智能客服機器人(示例)
以下以構建智能客服機器人為例,展示 Dify 的 RAG 和 Chatflow 功能。
準備工作
- 上傳幫助文檔:
- 進入「知識庫」頁面,點擊「創建知識庫」。
- 上傳 Dify 的幫助文檔(PDF 或 Markdown 格式)。
- 選擇分段模式(推薦「高質量」模式,需消耗 token)并確認分段連貫性。
- 配置 Embedding 模型:
- 在「設置 > 模型供應商」中選擇支持 TEXT EMBEDDING 的模型(如 OpenAI、Cohere)。
- 確保 API 密鑰有效且余額充足。
構建步驟
- 創建聊天助手:
- 在「工作室」中選擇「從空白創建」,選擇「聊天助手」類型。
- 設置應用名稱(如「Dify 智能客服」)。
- 配置知識庫:
- 在應用設置中關聯創建的知識庫。
- 選擇混合檢索模式,設置語義檢索權重(如 70% 語義,30% 關鍵詞)。
- 設計提示詞:
- 在提示詞 IDE 中編寫 Prompt,例如:
你是一個智能客服助手,基于 Dify 幫助文檔回答用戶問題。提供準確、簡潔的回答,并保持友好語氣。如果問題超出知識庫范圍,禮貌地表示無法回答。
- 在提示詞 IDE 中編寫 Prompt,例如:
- 添加問題分類節點:
- 使用「問題分類器」節點將用戶問題分為技術支持、功能咨詢、無關話題等類別。
- 為無關話題設置默認回復,如「抱歉,我無法回答這個問題,請聯系人工客服」。
- 發布與測試:
- 發布應用,獲取 URL 或 API 密鑰。
- 在「召回測試」中輸入關鍵詞(如「如何部署 Dify」),驗證檢索準確性。
- 測試多輪對話,確保上下文記憶正常。
注意事項
- 文件限制:單個知識庫支持最多 50 個頁面,超限需創建新知識庫。
- 分段調整:檢查分段預覽,確保內容連貫性。
- API 安全:妥善保管知識庫 API 密鑰,避免泄露。
高級功能:工作流與智能代理
工作流
Dify 工作流通過節點分解復雜任務,提高系統的可解釋性和穩定性。常見節點包括:
- 起始節點:接收用戶輸入(如文本、文件)。
- LLM 節點:調用大語言模型生成或處理內容。
- 條件分支節點:根據條件(如內容是否為空)決定工作流方向。
- 代碼執行節點:執行數據庫查詢或文本處理。
- 參數提取器:將自然語言轉換為結構化參數,供工具調用。
示例:構建 Arxiv 論文檢索應用
- 需求:用戶輸入論文編號(如「2405.10739」),檢索論文內容。
- 流程:
- 「起始節點」接收用戶輸入。
- 「參數提取器」提取論文編號。
- 「工具調用節點」調用 Arxiv API 檢索論文。
- 「LLM 節點」生成摘要。
- 「直接回復節點」輸出結果。
智能代理
智能代理支持自主推理和工具調用,適合復雜任務。Dify 提供兩種策略:
- Function Calling:直接調用預定義函數,適合明確任務。
- ReAct:交替進行推理和行動,適合需要外部信息的場景。
示例:股票查詢助手
- 配置 ReAct 策略,集成 Yahoo Finance API。
- 用戶提問「蘋果股票最新價格」,代理先推理問題意圖,調用 API 獲取數據,再生成回答。
最佳實踐與技巧
- 優化提示詞:
- 使用清晰、具體的 Prompt,避免歧義。
- 測試不同模型(如 GPT-4 vs. DeepSeek),比較性能。
- 知識庫管理:
- 定期檢查分段連貫性,禁用無關內容。
- 使用混合檢索提升準確性。
- 錯誤排查:
- 變量引用問題:確保變量分組正確,避免 NoneType 錯誤。關閉并重新打開聚合分組開關,或升級到 Dify 1.1.3+。
- 文件上傳失敗:檢查
.env
中的FILES_URL
配置。
- 性能優化:
- 調整模型參數(如溫度、Top P)以平衡生成內容的隨機性和確定性。
- 使用低成本模型(如 DeepSeek)進行原型測試。
- 社區資源:
- 參考 GitHub 上的 DSL 工作流腳本(如
dify-for-dsl
),快速導入社區模板。 - 加入 Dify 社區(如 VIP 群)獲取技術支持。
- 參考 GitHub 上的 DSL 工作流腳本(如
常見問題解答
- 如何選擇合適的模型?
- 根據任務需求選擇模型。推理能力強的模型(如 GPT-4)適合復雜任務,成本較低的模型(如 DeepSeek)適合原型開發。
- 知識庫上傳 PDF 亂碼怎么辦?
- 將 PDF 轉換為 Markdown 格式后再上傳,或使用工具預處理文檔。
- 如何處理大文件上傳失敗?
- 修改
.env
文件中的CODE_MAX_STRING_LENGTH
和TEMPLATE_TRANSFORM_MAX_LENGTH
為更大值(如 1000000),然后重啟容器。
- 修改
- 如何集成第三方工具?
- 在「工具」頁面添加自定義工具,配置 API 端點和參數。參考 Dify 插件市場中的開源插件(如 Google 翻譯)。
總結
Dify 是一個功能強大、易于使用的 LLM 應用開發平臺,適合從初學者到企業開發者的各種需求。通過可視化工作流、RAG 技術、智能代理和全面的模型支持,Dify 極大降低了 AI 應用開發的門檻。無論是構建智能客服、文檔處理助手還是復雜的工作流,Dify 都能提供高效、安全的解決方案。