文章目錄
- 前言
- 一、Dify入門
- 為什么使用 Dify?
- Dify 能做什么?
- 二、Dify私有化部署
- Docker Compose 部署
- 前提條件
- 克隆 Dify 代碼
- 啟動 Dify
- 更新 Dify
- 訪問 Dify
- 自定義配置
- 三、Dify構建企業級Agent應用
- 定義
- 如何使用智能助手
- 添加助手需要的工具
- 配置 Agent
- 配置對話開場白
- 調試與預覽
- 應用發布
前言
Dify
??Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和 LLMOps 的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能參與到 AI 應用的定義和數據運營過程中。
一、Dify入門
官網:https://cloud.dify.ai/apps
Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和 LLMOps 的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能參與到 AI 應用的定義和數據運營過程中。
由于 Dify 內置了構建 LLM 應用所需的關鍵技術棧,包括對數百個模型的支持、直觀的 Prompt 編排界面、高質量的 RAG 引擎、穩健的 Agent 框架、靈活的流程編排,并同時提供了一套易用的界面和 API。這為開發者節省了許多重復造輪子的時間,使其可以專注在創新和業務需求上。
為什么使用 Dify?
你或許可以把 LangChain 這類的開發庫(Library)想象為有著錘子、釘子的工具箱。與之相比,Dify 提供了更接近生產需要的完整方案,Dify 好比是一套腳手架,并且經過了精良的工程設計和軟件測試。
重要的是,Dify是開源的,它由一個專業的全職團隊和社區共同打造。你可以基于任何模型自部署類似 Assistants API 和 GPTs 的能力,在靈活和安全的基礎上,同時保持對數據的完全控制。
Dify 能做什么?
Dify 一詞源自 Define + Modify,意指定義并且持續的改進你的 AI 應用,它是為你而做的(Do it for you)。
-
創業,快速的將你的 AI 應用創意變成現實,無論成功和失敗都需要加速。在真實世界,已經有幾十個團隊通過 Dify 構建 MVP(最小可用產品)獲得投資,或通過 POC(概念驗證)贏得了客戶的訂單。
-
將 LLM 集成至已有業務,通過引入 LLM 增強現有應用的能力,接入 Dify 的 RESTful API 從而實現 Prompt 與業務代碼的解耦,在 Dify 的管理界面是跟蹤數據、成本和用量,持續改進應用效果。
-
作為企業級 LLM 基礎設施,一些銀行和大型互聯網公司正在將 Dify 部署為企業內的 LLM 網關,加速 GenAI 技術在企業內的推廣,并實現中心化的監管。
-
探索 LLM 的能力邊界,即使你是一個技術愛好者,通過 Dify 也可以輕松的實踐 Prompt 工程和 Agent 技術,在 GPTs 推出以前就已經有超過 60,000 開發者在 Dify 上創建了自己的第一個應用。
二、Dify私有化部署
參考文檔:https://github.com/langgenius/dify/blob/main/README_CN.md
Docker Compose 部署
前提條件
安裝 Dify 之前, 請確保你的機器已滿足最低安裝要求:
CPU >= 2 Core CPU >= 2 核;
RAM >= 4 GiB 內存 >= 4 GiB
操作系統 | 軟件 | 描述 |
macOS 10.14 or later macOS 10.14 或更高版本 | Docker Desktop Docker 桌面 | 為 Docker 虛擬機(VM)至少分配 2 個虛擬 CPU(vCPU) 和 8GB 初始內存,否則安裝可能會失敗。有關更多信息,請參考 《在 Mac 內安裝 Docker 桌面端》 |
Linux platforms Linux 平臺 | Docker 19.03 or later Docker Compose 1.28 or later Docker 19.03 或更高版本 Docker Compose 1.28 或更高版本 | 請參閱安裝 Docker 和安裝 Docker Compose 以獲取更多信息。 |
Windows with WSL 2 enabled 啟用了 WSL 2 的 Windows | Docker Desktop Docker 桌面 | 我們建議將源代碼和其他數據綁定到 Linux 容器中時,將其存儲在 Linux 文件系統中,而不是 Windows 文件系統中。有關更多信息,請參閱使用 WSL 2 后端在 Windows 上安裝 Docker Desktop。 |
克隆 Dify 代碼
倉庫克隆 Dify 源代碼至本地環境。git clone https://github.com/langgenius/dify.git
啟動 Dify
進入 Dify 源代碼的 Docker 目錄
- cd dify/docker
復制環境配置文件
- cp .env.example .env
啟動 Docker 容器根據你系統上的 Docker Compose 版本,選擇合適的命令來啟動容器。
你可以通過 $ docker compose version 命令檢查版本,詳細說明請參考 Docker 官方文檔:
如果版本是 Docker Compose V2,使用以下命令:
- docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
- docker-compose up -d
運行命令后,你應該會看到類似以下的輸出,顯示所有容器的狀態和端口映射:
[+] Running 11/11? Network docker_ssrf_proxy_network Created 0.1s ? Network docker_default Created 0.0s ? Container docker-redis-1 Started 2.4s ? Container docker-ssrf_proxy-1 Started 2.8s ? Container docker-sandbox-1 Started 2.7s ? Container docker-web-1 Started 2.7s ? Container docker-weaviate-1 Started 2.4s ? Container docker-db-1 Started 2.7s ? Container docker-api-1 Started 6.5s ? Container docker-worker-1 Started 6.4s ? Container docker-nginx-1 Started 7.1s
最后檢查是否所有容器都正常運行:
docker compose ps
在這個輸出中,你應該可以看到包括 3 個業務服務 ?api / worker / web
?,以及 6 個基礎組件 ?weaviate / db / redis / nginx / ssrf_proxy / sandbox
? 。
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" api About a minute ago Up About a minute 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db About a minute ago Up About a minute (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp
docker-sandbox-1 langgenius/dify-sandbox:0.2.1 "/main" sandbox About a minute ago Up About a minute
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy About a minute ago Up About a minute 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate About a minute ago Up About a minute
docker-web-1 langgenius/dify-web:0.6.13 "/bin/sh ./entrypoin…" web About a minute ago Up About a minute 3000/tcp
docker-worker-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" worker About a minute ago Up About a minute 5001/tcp
通過這些步驟,你應該可以成功在本地安裝 Dify。
更新 Dify
進入 dify 源代碼的 docker 目錄,按順序執行以下命令:
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
同步環境變量配置 (重要!)
- 如果 .env.example 文件有更新,請務必同步修改你本地的 .env 文件。
- 檢查 .env 文件中的所有配置項,確保它們與你的實際運行環境相匹配。你可能需要將 .env.example 中的新變量添加到 .env 文件中,并更新已更改的任何值。
訪問 Dify
你可以先前往管理員初始化頁面設置設置管理員賬戶:
# 本地環境
http://localhost/install# 服務器環境http://your_server_ip/install
Dify 主頁面:
# 本地環境
http://localhost# 服務器環境
http://your_server_ip
自定義配置
編輯 .env 文件中的環境變量值。然后重新啟動 Dify:
docker compose down
docker compose up -d
完整的環境變量集合可以在 docker/.env.example 中找到。
三、Dify構建企業級Agent應用
定義
智能助手(Agent Assistant),利用大語言模型的推理能力,能夠自主對復雜的人類任務進行目標規劃、任務拆解、工具調用、過程迭代,并在沒有人類干預的情況下完成任務。
如何使用智能助手
為了方便快速上手使用,你可以在“探索”中找到智能助手的應用模板,添加到自己的工作區,或者在此基礎上進行自定義。在全新的 Dify 工作室中,你也可以從零編排一個專屬于你自己的智能助手,幫助你完成財務報表分析、撰寫報告、Logo 設計、旅程規劃等任務。
選擇智能助手的推理模型,智能助手的任務完成能力取決于模型推理能力,我們建議在使用智能助手時選擇推理能力更強的模型系列如 gpt-4 以獲得更穩定的任務完成效果。
選擇智能助手的推理模型你可以在“提示詞”中編寫智能助手的指令,為了能夠達到更優的預期效果,你可以在指令中明確它的任務目標、工作流程、資源和限制等。
添加助手需要的工具
在“上下文”中,你可以添加智能助手可以用于查詢的知識庫工具,這將幫助它獲取外部背景知識。
在“工具”中,你可以添加需要使用的工具。工具可以擴展 LLM 的能力,比如聯網搜索、科學計算或繪制圖片,賦予并增強了 LLM 連接外部世界的能力。Dify 提供了兩種工具類型:第一方工具和自定義工具。
你可以直接使用 Dify 生態提供的第一方內置工具,或者輕松導入自定義的 API 工具(目前支持 OpenAPI / Swagger 和 OpenAI Plugin 規范)。
“工具”功能允許用戶借助外部能力,在 Dify 上創建出更加強大的 AI 應用。例如你可以為智能助理型應用(Agent)編排合適的工具,它可以通過任務推理、步驟拆解、調用工具完成復雜任務。
另外工具也可以方便將你的應用與其他系統或服務連接,與外部環境交互。例如代碼執行、對專屬信息源的訪問等。你只需要在對話框中談及需要調用的某個工具的名字,即可自動調用該工具。
配置 Agent
在 Dify 上為智能助手提供了 Function calling(函數調用)和 ReAct 兩種推理模式。已支持 Function Call 的模型系列如 gpt-3.5/gpt-4 擁有效果更佳、更穩定的表現,尚未支持 Function calling 的模型系列,我們支持了 ReAct 推理框架實現類似的效果。
在 Agent 配置中,你可以修改助手的迭代次數限制。
配置對話開場白
你可以為智能助手配置一套會話開場白和開場問題,配置的對話開場白將在每次用戶初次對話中展示助手可以完成什么樣的任務,以及可以提出的問題示例。
調試與預覽
編排完智能助手之后,你可以在發布成應用之前進行調試與預覽,查看助手的任務完成效果。
應用發布
本文的引用僅限自我學習如有侵權,請聯系作者刪除。
參考知識
如何基于Dify快速構建AI原生應用