Dify: 打造AI原生應用的全方位平台
Dify 是一個開源的大型語言模型(LLM)應用開發平台,結合了 Backend-as-a-Service 和 LLMOps 的概念,旨在幫助開發者快速構建生產級的生成式 AI 應用程式。即使是非技術人員,也可以參與 AI 應用程式的定義和資料操作。
Dify 的定位與核心特點
Dify 內建了構建 LLM 應用所需的關鍵技術堆疊,包括:
- 多樣模型支援:數百種專有和開源模型,包括 GPT、Mistral、Llama3、Claude 等,涵蓋文本生成、語音轉文字等多領域應用。
- 視覺化工作流構建:使用者可輕鬆拖放操作,快速設計 AI 應用的執行流程。
- Prompt 編輯器(IDE):專業的 Prompt 編輯環境,支持快速測試與優化。
- 檢索增強生成(RAG)功能:內建支持多種文檔格式的數據提取和檢索。
- 靈活代理架構(Agent):支持內建工具和外部功能集成,用於處理更複雜的多步驟任務。
- LLMOps 支持:實時監控和分析應用運行,支持數據標註與持續改進。
- 開放與可控:用戶可完全掌控數據,並支持自託管部署。
平台命名的象徵意義
「Dify」的名稱來自於 “Define”(定義)與 “Modify”(修改),代表著開發者可以自由地定義並不斷改進自己的 AI 應用。
使用 Dify 的理由
將 Dify 與其他 LLM 平台如 LangChain 相比較,Dify 更像是一個完整的解決方案,提供精細的工程設計和生產環境支持。以下是其主要優勢:
- 開源與自控:
- 支持完全的數據控制。
- 基於開放的架構進行自定義和擴展。
- 生產環境友好:
- 提供 Backend-as-a-Service 功能,簡化後端開發流程。
- 自帶 API 接口,可直接集成現有的業務系統。
- 快速開發與部署:
- 視覺化界面讓開發者和非技術人員皆可快速上手。
- 從工作流設計到應用部署僅需數分鐘。
Dify 的功能解析
1. 全面模型支持
Dify 平台整合了多種 LLM 模型,滿足多樣化的應用需求:
- 系統推理模型:用於對話生成、命名建議等智能應用。
- 嵌入模型:支援檔案嵌入,實現自然語言查詢的高效檢索。
- 重新排序模型(Rerank Models):改善檢索結果的語意相關性排序。
- 語音轉文字模型:支持語音輸入的轉文字處理。
2. 視覺化工作流設計
Dify 提供直觀的畫布界面,用戶可輕鬆設計與測試穩健的 AI 工作流,支持多種應用場景,包括文本處理、對話分析和數據生成。
3. Prompt 編輯器
專業的 Prompt IDE 幫助用戶設計和測試高效提示,支持以下功能:
- 提示模板化設計。
- 模型性能比較與分析。
- 增強功能(如文本轉語音)。
4. RAG(檢索增強生成)功能
支持檔案匯入與檢索流程設計:
- 文件格式支持:PDF、PPT 等。
- 高效查詢:自動化文本提取和處理。
5. Agent 功能
Agent 架構允許用戶自定義複雜的 AI 任務流程,包括:
- 工具調用:內建50多種 AI 代理工具。
- 支援函數調用與多步驟推理。
6. Backend-as-a-Service 功能
- 提供對應的 API 接口,方便內建到現有業務系統。
- 包含所有應用功能的可用性支持。
7. 部署模式靈活
- 雲端服務:提供零配置的雲端體驗。
- 自託管部署:支持企業自定義品牌與功能擴展。
如何開始使用 Dify?
雲端部署
- 註冊:
- 訪問 Dify 官網。
- 使用 GitHub 或 Google 帳戶註冊。
- 配置 OpenAI API 金鑰,目前免費用戶有提供200次OpenAI低階模型調用。
- 設置模型:
- 選擇所需模型並設置 API 金鑰。
- 支持嵌入、推理等多類型模型的綜合應用。
- 創建應用:
- 選擇範本或從零開始設計。
- 設計提示與工作流,快速部署應用。
自託管部署
- 安裝與配置:
- 下載 Dify 開源版本。
- 按需設置企業級功能(如 SSO、安全控管)。
- 深入開發:
- 使用自定義 API 接口,進行進階應用擴展。
本次以雲端版本介紹
登入Dify後第一個畫面
有四個選項可以創建分別是
- 聊天助手(Chatbot)
- Agent
- 工作流(Workflow)
- 文字生成應用
透過應用模板建立
若你不了解如何創建,建議先使用模板建立,可以快速建立你的信心。
聊天助手(Chatbot)
定義
對話型應用採用一問一答的互動模式,與用戶持續對話,旨在即時解決問題並提升用戶體驗。
適用場景
- 客戶服務:回答常見問題,提供即時幫助。
- 在線教育:個性化學習建議,輔助教學。
- 醫療保健:健康諮詢,提供非緊急醫療建議。
- 金融服務:處理用戶查詢,如賬戶資訊、投資建議等。
功能優勢
- 效率提升:自動處理基本需求,減少人工干預。
- 用戶滿意度:即時回應,增加互動性。
- 操作靈活:適應多種語境,支持多語言。
步驟一
創建空白應用
步驟二
編寫應用程式
我們簡單的介紹上述圖片的編號
- 提示詞:你可以點選右上角產生自動產稱提示詞
- 變數:能使使用者輸入表單引入提示詞或開場白,你可以試試在提示詞中輸入
- 上下文:點擊可以添加知識庫(免費版5MB為上限),支援文字、Notion以及網頁爬取(可以使用Jina Reader或Firecrawl API)
- 視覺:啟動後允許圖片辨識
- 除錯與預覽:可以在這邊測試
步驟三
發布
發布完畢後你可以通過公共 URL 體驗應用程式外,或是使用API
API使用,以下為網頁範例,需要注意的是response_mode可以選擇streaming以及blocking,若你要及時回應則選擇streaming,若你支援背景處理,可以使用blocking
curl -X POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "What are the specs of the iPhone 13 Pro Max?",
"response_mode": "streaming",
"conversation_id": "",
"user": "abc-123",
"files": [
{
"type": "image",
"transfer_method": "remote_url",
"url": "https://cloud.dify.ai/logo/logo-site.png"
}
]
}'
回應為
{
"event": "message",
"message_id": "9da23599-e713-473b-982c-4328d4f5c78a",
"conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2",
"mode": "chat",
"answer": "iPhone 13 Pro Max specs are listed here:...",
"metadata": {
"usage": {
"prompt_tokens": 1033,
"prompt_unit_price": "0.001",
"prompt_price_unit": "0.001",
"prompt_price": "0.0010330",
"completion_tokens": 128,
"completion_unit_price": "0.002",
"completion_price_unit": "0.001",
"completion_price": "0.0002560",
"total_tokens": 1161,
"total_price": "0.0012890",
"currency": "USD",
"latency": 0.7682376249867957
},
"retriever_resources": [
{
"position": 1,
"dataset_id": "101b4c97-fc2e-463c-90b1-5261a4cdcafb",
"dataset_name": "iPhone",
"document_id": "8dd1ad74-0b5f-4175-b735-7d98bbbb4e00",
"document_name": "iPhone List",
"segment_id": "ed599c7f-2766-4294-9d1d-e5235a61270a",
"score": 0.98457545,
"content": "\"Model\",\"Release Date\",\"Display Size\",\"Resolution\",\"Processor\",\"RAM\",\"Storage\",\"Camera\",\"Battery\",\"Operating System\"\n\"iPhone 13 Pro Max\",\"September 24, 2021\",\"6.7 inch\",\"1284 x 2778\",\"Hexa-core (2x3.23 GHz Avalanche + 4x1.82 GHz Blizzard)\",\"6 GB\",\"128, 256, 512 GB, 1TB\",\"12 MP\",\"4352 mAh\",\"iOS 15\""
}
]
},
"created_at": 1705407629
}
文字生成應用
文字生成應用與聊天助手差別
文字生成類別應用程式是一種根據使用者提供的提示,自動產生高品質文字的應用程式。它可以產生各種類型的文本,例如文章摘要、翻譯等。
Agent
定義
智能助手(Agent Assistant)利用生成式 AI 的推理能力,實現自主完成複雜任務。它能夠:
- 目標規劃:根據用戶需求確定解決方案。
- 任務拆解:將任務分解成可操作步驟。
- 工具調用:整合外部資源完成具體任務。
- 過程迭代:根據情況調整流程,優化結果。
使用方法
- 應用模板:在「探索」中選擇現有模板並添加到工作區。
- 自定義編排:在 Dify 工作室中創建專屬智能助手,設計針對性工作流。
- 功能示例:
- 財務報表分析:快速整理和解讀數據。
- 報告撰寫:根據輸入生成結構化內容。
- 旅程規劃:設計多步驟行程計劃。
- Logo 設計:提供創意草圖和建議。
差別在多了工具使用
工作流 (Workflow)
基本介紹
Dify 工作流專注於處理複雜任務,通過將其分解為多個步驟,降低系統複雜度並提升性能。其特點包括:
- 減少對提示詞技術的依賴。
- 提高 LLM 應用的穩定性、可解釋性和容錯性。
工作流類型
- Chatflow:針對對話場景設計,如客戶服務和語義搜索。
- Workflow:適用於自動化和批處理需求,如內容生成和數據分析。
應用案例
客戶服務
- 自動回答常見問題,減少支持團隊的工作量。
- 理解用戶查詢上下文,提供精確且即時的解決方案。
內容生成
- 為博客文章、產品描述和營銷材料提供高質量文本。
- 基於大綱或主題,自動生成內容。
任務自動化
- 集成 Trello、Slack、Lark 等系統,自動化項目管理。
- 自然語言處理用戶輸入,生成、更新和分配任務。
數據分析與報告
- 分析大型數據集,生成可操作的摘要和洞察報告。
- 為企業提供數據驅動決策支持。
郵件自動化
- 起草專業的電子郵件和社交媒體更新。
- 根據大綱生成清晰、結構化的內容,節省時間。
API使用,以下為網頁範例,需要注意的是 response_mode可以選擇streaming以及blocking,若你要及時回應則選擇streaming,若你支援背景處理,可以使用blocking 以及inputs為start節點參數,而response中的outputs為end節點的參數
curl -X POST 'https://api.dify.ai/v1/workflows/run' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"response_mode": "streaming",
"user": "abc-123"
}'
回應為
{
"workflow_run_id": "djflajgkldjgd",
"task_id": "9da23599-e713-473b-982c-4328d4f5c78a",
"data": {
"id": "fdlsjfjejkghjda",
"workflow_id": "fldjaslkfjlsda",
"status": "succeeded",
"outputs": {
"text": "Nice to meet you."
},
"error": null,
"elapsed_time": 0.875,
"total_tokens": 3562,
"total_steps": 8,
"created_at": 1705407629,
"finished_at": 1727807631
}
}
Dify 功能總結與優勢
功能範疇 | 聊天助手 | 智能助手 | 工作流 |
---|---|---|---|
核心定位 | 與用戶互動,提供即時解決方案。 | 自主完成複雜任務,提升生產力。 | 自動化處理多步驟任務,提高性能。 |
應用場景 | 客服、教育、金融等。 | 報表分析、設計、規劃等。 | 客服、內容生成、數據分析等。 |
技術特點 | 依賴對話模型,強調互動性。 | 整合多工具,支持自主學習與調整。 | 模型輔助決策,提升穩定性與效率。 |
目標用戶 | 需要快速回應的服務應用。 | 需要執行複雜任務的企業和個人。 | 需要高效自動化的工作場景。 |
Dify 的典型應用場景
- 智能客服:24/7 全天候 AI 客服,提升用戶體驗。
- 代碼助手:跨語言代碼轉換與錯誤修復建議。
- SQL 生成器:將自然語言轉化為 SQL 查詢。
- 內容創作:自動生成新聞稿和腳本。
- 文本摘要:提取長文檔的核心資訊。
- 個人助理:提供個性化交互和智能建議。
如何選擇 Dify?
選擇 Dify 的情境包括:
- 技術需求:
- 希望快速構建應用,避免繁瑣配置。
- 偏好使用視覺化界面進行低代碼開發。
- 數據控制:
- 需要完全掌控數據存儲與隱私。
- 擴展需求:
- 計畫進一步自定義應用或功能。
總結
Dify 作為一個功能全面且靈活的開源 LLM 應用平台,適合所有級別的用戶。無論是希望快速原型設計的初學者,還是追求高性能生產環境的專業開發者,Dify 都能提供高效且穩健的支持。
立即加入 Dify 社區,探索無限可能!