一、Dify 简介
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。
中文官网地址:https://dify.ai/zh
英文官网地址:https://dify.ai
官方云服务地址(国内一般正常打不开,懂的都懂):https://cloud.dify.ai/
开发文档:https://docs.dify.ai/zh-hans
开源地址:https://github.com/langgenius/dify
二、为什么使用 Dify?
你或许可以把 LangChain 这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify 提供了更接近生产需要的完整方案,Dify 好比是一套脚手架,并且经过了精良的工程设计和软件测试。
重要的是,Dify 是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似 Assistants API (Assistants API 是 OpenAI 提供的一种接口,允许开发者在自己的应用程序中构建 AI 助手;助手能够遵循指令,并利用模型、工具和知识来响应用户的查询)和 GPTs (GPTs 是 ChatGPT 的定制版本,用户可以通过结合指令、知识和能力,针对特定任务或主题进行调整)的能力,在灵活和安全的基础上,同时保持对数据的完全控制。
三、什么是 LLMOps?
LLMOps(Large Language Model Operations)是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。LLMOps 的目标是确保高效、可扩展和安全地使用这些强大的 AI 模型来构建和运行实际应用程序。它涉及到模型训练、部署、监控、更新、安全性和合规性等方面。
下表说明了使用 Dify 前后开发 AI 应用的各环节差异:
在使用 LLMOps 平台如 Dify 之前,基于 LLM 开发应用的过程可能会非常繁琐和耗时。开发者需要自行处理各个阶段的任务,这可能导致效率低下、难以扩展和安全性问题。以下是使用 LLMOps 平台前的开发过程:
1.数据准备:手动收集和预处理数据,可能涉及到复杂的数据清洗和标注工作,需要编写较多代码。
2.Prompt Engineering:开发者只能通过调用 API 或 Playground 进行 Prompt 编写和调试,缺乏实时反馈和可视化调试。
3.嵌入和上下文管理:手动处理长上下文的嵌入和存储,难以优化和扩展,需要不少编程工作,熟悉模型嵌入和向量数据库等技术。
4.应用监控与维护:手动收集和分析性能数据,可能无法实时发现和处理问题,甚至可能没有日志记录。
5.模型微调:自行处理微调数据准备和训练过程,可能导致效率低下,需要编写更多代码。
6.系统和运营:需要技术人员参与或花费成本开发管理后台,增加开发和维护成本,缺乏多人协同和对非技术人员的友好支持。
引入 Dify 这样的 LLMOps 平台后,基于 LLM 开发应用的过程将变得更加高效、可扩展和安全。以下是使用像 Dify 这样的 LLMOps 进行 LLM 应用开发的优势:
1.数据准备:平台提供数据收集和预处理工具,简化了数据清洗和标注的工作,最小化甚至消除了编码工作。
2.Prompt Engineering:所见即所得的 Prompt 编辑和调试,可根据用户输入的数据进行实时优化和调整。
3.嵌入和上下文管理:自动处理长上下文的嵌入、存储和管理,提高效率和扩展性,无需编写大量代码。
4.应用监控与维护:实时监控性能数据,快速发现和处理问题,确保应用程序的稳定运行,提供完整的日志记录。
5.微调数据准备:提供人工标注知识库的批量导出,在应用运营过程中收集线上反馈数据持续改善模型效果。
6.系统和运营:易用的界面,非技术人员也可参与,支持多人协同,降低开发和维护成本。与传统开发方式相比,Dify 提供了更加透明和易于监控的应用管理,让团队成员更好地了解应用的运行情况。
另外,Dify 将提供 AI 插件开发和集成的功能,使得开发者可以轻松地为各种应用创建和部署基于 LLM 的插件,进一步提升了开发效率和应用的价值。
四、Dify 社区版 1.0.1 版本部署
Dify 社区版即开源版本,常见的有两种方式部署 Dify 社区版;一种是 Docker Compose 部署 ,另一种是本地源码启动。本次以 Docker Compose 部署 示例,在 GitHub 上查看 Dify 社区版:
Dify 的 releases 发行版本下载页面:
4.1 安装环境信息说明
硬件资源(GB 和 GiB 的主要区别在于它们的换算基数不同,GB 使用十进制,GiB 使用二进制,导致相同数值下 GiB 表示的容量略大于 GB;换算关系:1 GiB ≈ 1.07374 GB ;1 GB ≈ 0.931323 GiB):CPU8核、内存16GiB、磁盘100GB
Linux 系统:Ubuntu24.04 LTS
Git 版本:2.43.0
Docker 版本:28.0.1
Docker Compose 版本:2.33.1
4.2 克隆 Dify 代码仓库
在Ubuntu上选择需要存放代码的目录,然后在当前目录下,克隆 Dify 源代码至本地环境(虽然我们选择的是1.0.1版本,但是有bug修复是官方会拉出修复分支;所以,我们选择当下最新的修复分支,当前是:release/1.0.1-fix1)。操作如下命令:
# 假设当前最新版本为 release/1.0.1-fix1
git clone https://github.com/langgenius/dify.git --branch release/1.0.1-fix1
# Git 参数设置,规避https协议拉取代码失败
git config --global http.sslVerify false
git config --global http.postBuffer 1048576000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
备注:http.sslVerify false 会禁用 HTTPS 的 SSL 证书验证,虽然能绕过某些证书错误,但会降低安全性。建议仅在测试环境或受信任的仓库使用,生产环境请修复证书问题。
4.3 克隆完毕后,启动服务 Dify1.0.1 社区版服务
(1)为了确保完整,克隆完毕进入仓库根目录,在执行下拉取更新操作
git pull origin release/1.0.1-fix1
(2)进入 Dify 源代码仓库根目录下的 Docker 目录
cd /home/redhat/MyDify/dify1.0.1/dify/
cd docker
(3)复制环境配置文件
cp .env.example .env
(4)启动 Docker 容器
根据系统上的 Docker Compose 版本,选择合适的命令来启动容器。可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档【https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command】:
如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:
在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 7 个(1.0.1版本比0.15.3多一个服务,把插件拆分出来了)基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox / plugin-daemon 。
最后检查是否所有容器都正常运行:
docker compose ps
通过这些步骤,就成功在本地安装 Dify。
五、更新 Dify 操作注意点
进入 dify 源代码所在 Ubuntu24.04 LTS 的 docker 目录,按顺序执行以下命令:
cd /home/redhat/MyDify/dify1.0.1/dify
cd docker
docker compose down
# 这个 release/1.0.1-fix1 分支并不是绝对不变的,需要从那个分支更新合并到本地就用那个分支的名字
git pull origin release/1.0.1-fix1
docker compose pull
docker compose up -d
检查 .env 文件中的所有配置项,确保它们与实际运行环境相匹配。如果 .env.example 文件有更新,必须同步修改本地的 .env 文件(可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值,同步环境变量配置)。如果涉及更新,那编辑 .env 文件中的环境变量值后,需要重新构建,重新启动 Dify:
docker compose down
docker compose up -d
六、访问 Dify
6.1 先前往管理员初始化页面设置设置管理员账户
# Ubuntu24.04 LTS 本地环境
http://localhost/install
# 服务器环境
http://your_server_ip/install
6.2 设置号管理员账号后(也可以登录后设置其他权限的账号),登录访问 Dify 系统登录页面
# 本地环境
http://localhost
# 服务器环境
http://your_server_ip
--------------------------------------
没有自由的秩序和没有秩序的自由,同样具有破坏性。