概述:Dify
Dify
是一款开源的大语言模型(LLM) 应用开发平台。
- 它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。
- 即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
- 由于
Dify
内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。- 这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。
简介:为什么会有Dify?LLMOps
-
近年来大规模语言模型的崛起,带来了一个新兴的概念
LLMOps
(Large Language Model Operations),LLMOps是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。 -
LLMOps 的目标是确保高效、可扩展和安全地使用这些强大的 AI 模型来构建和运行实际应用程序。它涉及到模型训练、部署、监控、更新、安全性和合规性等方面。
用一句话描述,
LLMOps
有助于提升大语言模型在实际应用中的效率和表现。
在众多的LLMOps应用中,有一款在Github上拥有54.9K Star的开源项目备受欢迎,这就是Dify
。
- 官方给出的表述如下:
Dify 是一款开源的大语言模型(LLM) 应用开发平台。
它融合了后端即服务(Backend as Service)和LLMOps
的理念,使开发者可以快速搭建生产级的生成式 AI 应用。
即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
-
Dify
一词源自Define
+Modify
,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you
)。 -
宗旨
Dify
是一个开源的LLM应用程序开发平台。
Dify的直观界面结合了AI工作流程、RAG管道、代理功能、模型管理、可观察性功能等,让您快速从原型到生产。
-
主要编程语言: Python / TypeSript
-
开源协议: Apache 2.0
-
url
- https://docs.dify.ai
- https://github.com/langgenius/dify
- https://github.com/langgenius/dify-docs
20250211 : 9.6k fork / 65.2k star
使用Dify LLMOps 平台后会有什么效果
步骤 | 未使用LLMOps平台 | 使用Dify LLMOps平台 | 时间差异 |
---|---|---|---|
开发应用前&后端 | 集成和封装 LLM 能力,花费较多时间开发前端应用 | 直接使用 Dify 的后端服务,可基于 WebApp 脚手架开发 | -80% |
Prompt Engineering | 仅能通过调用 API 或 Playground 进行 | 结合用户输入数据所见即所得完成调试 | -25% |
数据准备与嵌入 | 编写代码实现长文本数据处理、嵌入 | 在平台上传文本或绑定数据源即可 | -25% |
应用日志与分析 | 编写代码记录日志,访问数据库查看 | 平台提供实时日志与分析 | -70% |
数据分析与微调 | 技术人员进行数据管理和创建微调队列 | 非技术人员可协同,可视化模型调整 | -60% |
AI 插件开发与集成 | 编写代码创建、集成 AI 插件 | 平台提供可视化工具创建、集成插件能力 | -50% |
在使用 LLMOps 平台如 Dify 之前,基于 LLM 开发应用的过程可能会非常繁琐和耗时。
开发者需要自行处理各个阶段的任务,这可能导致效率低下、难以扩展和安全性问题。
引入 Dify 这样的 LLMOps 平台后,基于 LLM 开发应用的过程将变得更加高效、可扩展和安全。
Dify的核心竞争力在哪里
- 在LLMOps领域,Dify是业界内备受关注的一款产品,作为一款开源项目在Github中拥有56.5K的Star, 那Dify的竞争力究竟在哪里?
• 工作流 : Dify 支持在可视化的画布上快速构建出一个可以执行自动化任务的 AI 应用;
• 支持大多数市面上流行的 AI 模型 :包括 ChatGPT、Mistral、Llama3 以及通义千问等;
- 直观简洁的Prompt IDE:可以用于制作提示、比较模型性能以及向基于聊天的应用程序添加文本转语音等附加功能;
- RAG 功能:广泛的RAG功能,涵盖从文档摄取到检索的所有内容,并支持从PDF、PPT和其他常见文档格式中提取文本。
- 代理功能:Dify 内置了 50 多个工具 ,例如 Google Search、DELL·E、Stable Diffusion 和 WolframAlpha,也可以自定义工具。可以基于LLM函数调用或ReAct定义代理,并为代理添加预构建或自定义工具
- LLMOps :支持监控和分析应用程序日志和性能。可以根据生产数据和注释不断改进提示、数据集和模型监控和分析应用程序日志和性能;
- 后端即服务:Dify 的所有产品 都附带相应的 API ,因此我们也可以很轻松地将 Dify 集成到自己的业务中去。
系统集成与扩展性
除此之外 Dify 还额外提供了三个功能给我们,分别是:
- 运行 :会打开一个新的页面,页面 url 地址是 dify 为这个应用生成的一个唯一的 url 链接;
- 嵌入网站 :就是提供三种嵌入方式: 以 iframe 的形式将 AI 应用集成到自己的网站中去 、通过 script 脚本的方式将一段代码 copy 到网站代码中以及通过浏览器插件的形式来集成
- 访问 API :提供接口的形式,将 AI 应用接入到其他的产品中
核心功能
-
工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。
-
全面的模型支持: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。
完整的支持模型提供商列表可在此处找到:
-
Prompt IDE: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。
-
RAG Pipeline: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。
-
Agent 智能体: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DELL·E、Stable Diffusion 和 WolframAlpha 等。
-
LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。
-
后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。
核心内置组件
- ollama
- ollama是一个非常方便的LLM加速/服务化应用,现在大部分人构建私有化大模型应用,模型服务部分几乎用的都是它。
- 推荐文献
- [Python/GPT/AI] Ollama: LLM私有化部署工具 - 博客园/千千寰宇
Dify 背后的公司: 苏州语灵人工智能科技(LangGenius)
Dify
是苏州语灵人工智能科技(LangGenius)有限公司旗下的产品。
+ 成立时间与注册资本:苏州语灵人工智能科技有限公司成立于2023年3月,注册资本为143.63万人民币(经过增资后的数额)。
+ 经营范围:该公司主要经营范围包括第二类增值电信业务、人工智能基础软件开发、人工智能应用软件开发、人工智能行业应用系统集成服务以及软件开发等。
+ 股东结构:该公司的股东包括张路宇、苏州语芯创业投资合伙企业(有限合伙)、宁波梅山保税港区民恒启智投资管理中心(有限合伙),以及新增的浙江阿里巴巴云计算有限公司和苏州元之芯贰期创业投资合伙企业(有限合伙)。
+ 产品与服务:
Dify
: 该公司推出的一款开源LLMOps
(大语言模型运维)平台,旨在帮助开发者更简单、快捷地创建AI应用。Dify平台具有简洁易用的界面和强大的功能,在实际应用中获得了用户的一致好评。
此外,Dify还推出了新的主力产品Dify workflow
,一个兼顾易用和灵活的开发框架,进一步丰富了其产品线和服务。
Ollama
综上所述,
Dify
作为苏州语灵人工智能科技有限公司的旗舰产品,在人工智能领域具有广泛的影响力和应用前景。
原理与架构
-
Dify的架构采用分层设计,自上而下可分为四层:数据层、开发层、编排层和基础层
-
数据层
- 数据层包含Dataset(数据集)和Prompts(提示词)两个输入源,通过ETL进行数据处理,并由RAG Pipeline实现知识检索增强。这一层确保了数据的质量和模型的回答准确性和可靠性。
- 开发层
- 开发层提供Prompts IDE和Agent DSL两大开发工具。
Prompts IDE用于提示词的编写、测试和版本管理;
而Agent DSL则用于构建智能代理,支持感知、规划和行动等能力。
- 编排层
编排层以Orchestration Studio为核心,负责协调各个组件的运行,并通过Moderation System(审核系统)和Cache System(缓存系统)保障应用质量。这一层提供了可视化的编排工具,极大地加速了AI应用程序的开发进程。
- 基础层
- 基础层包括Storage(存储系统)和LLMs(语言模型)两大基础设施,为上层提供支撑。
存储系统负责数据的存储和管理,而语言模型则是应用的核心组件。
- 核心组件功能
- Dataset ETL:负责数据的提取、转换和加载,确保数据质量。
- Dify RAG Pipeline:实现检索增强生成,提高模型回答的准确性和可靠性。
- Dify Prompts IDE:提供提示词的编写、测试和版本管理功能。
- Dify Agent DSL:支持智能代理的开发,实现感知、规划和行动等能力。
- Plugins Toolbox:提供丰富的插件工具箱,支持工作流程、社区集成等功能。
- Dify LLMOps:提供模型运维能力,包括监控、注释和生命周期管理
安装部署篇
依赖组件
知悉即可,也可通过
dify/docker/docker-compose.yaml
搜索image
了解。
以 1.0.0-beta.1 为例:
langgenius/dify-api:1.0.0-beta.1
langgenius/dify-web:1.0.0-beta.1
postgres:15-alpine
redis:6-alpine
langgenius/dify-sandbox:0.2.10
langgenius/dify-plugin-daemon:0.0.1-local
ubuntu/squid:latest
certbot/certbot
nginx:latest
pingcap/tidb:v8.4.0
semitechnologies/weaviate:1.19.0
langgenius/qdrant:v1.7.3
pgvector/pgvector:pg16
tensorchord/pgvecto-rs:pg16-v0.3.0
ghcr.io/chroma-core/chroma:0.5.20
quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215
container-registry.oracle.com/database/free:latest
quay.io/coreos/etcd:v3.5.5
minio/minio:RELEASE.2023-03-20T20-16-18Z
milvusdb/milvus:v2.5.0-beta
opensearchproject/opensearch:latest
opensearchproject/opensearch-dashboards:latest
myscale/myscaledb:1.6.4
docker.elastic.co/elasticsearch/elasticsearch:8.14.3
docker.elastic.co/kibana/kibana:8.14.3
downloads.unstructured.io/unstructured-io/unstructured-api:latest
安装部署 on Windows by Docker Compose 【未亲测】
Step0 安装 前置依赖
Docker Desktop
- 安装 Docker Desktop : Windows端的 Docker 环境支持软件
- 推荐文献: [虚拟化/Docker] Docker Desktop 安装与使用 - 博客园/千千寰宇
- 前置技术知识:Docker
- [Docker] Docker 基础教程(概念/原理/基础操作) - 博客园/千千寰宇
- 前置技术知识: Docker Compose
- [Docker] Docker Compose 基础教程(概念/基础操作) - 博客园/千千寰宇
Git-Bash (推荐/可选)
- url
- https://git-scm.com
- https://git-scm.com/downloads
Step1 下载Dify源代码
CMD
orGit-Bash
: 下载Dify源代码
git clone https://github.com/langgenius/dify.git或 wget https://github.com/langgenius/dify.git或 前往 Github(https://github.com/langgenius/dify) / 官网 人工下载 zip 压缩包
- 【补充】解压dify.zip包
cd dify
7z x dify-main.zip
mv dify-main dify
Step2 启动 Dify
- 进入 dify 源代码的 docker 目录,执行一键启动命令:
# cd dify/docker//打印下 docker compose的版本
# docker compose version
Docker Compose version v2.27.1# docker compose up -d
安装部署 on CENTOS 【亲测】
Step0 安装 前置依赖
Docker Desktop
- 安装 Docker Desktop : Windows端的 Docker 环境支持软件
- 推荐文献: [虚拟化/Docker] Docker Desktop 安装与使用 - 博客园/千千寰宇
- 前置技术知识:Docker
- [Docker] Docker 基础教程(概念/原理/基础操作) - 博客园/千千寰宇
- 前置技术知识: Docker Compose
- [Docker] Docker Compose 基础教程(概念/基础操作) - 博客园/千千寰宇
[root@node-d opt]# docker compose version
Docker Compose version v2.27.1[root@node-d opt]# docker --version
Docker version 26.1.4, build 5650f9b
Git-Bash (推荐/可选)
- url
- https://git-scm.com
- https://git-scm.com/downloads
- [Git/SVN] Gitee使用教程 - 博客园/千千寰宇 【推荐/强烈推荐】
- [Git/GitLab] 使用SSH远程登录GitLab/GitHub - 博客园/千千寰宇
[root@node-d opt]# git --version
git version 1.8.3.1# cd /opt
# git config --global user.name "xxxxxxxx"
# git config --global user.email xxxxxxxx@qq.com# ssh-keygen -t rsa -C "xxxxxxxx@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_github.
Your public key has been saved in id_rsa_github.pub.
The key fingerprint is:
SHA256:YDWdM+UDxxxxxrZL3uQ7xxxxxxxxDLZo xxxxxxxx@qq.com
The key's randomart image is:# ls -la
-rw------- 1 root root 1675 Mar 4 01:49 id_rsa_github
-rw-r--r-- 1 root root 399 Mar 4 01:49 id_rsa_github.pub# cp ./id_rsa_github* ~/.ssh/即: /root/.ssh# ls -la ~/.ssh/# vim ~/.ssh/configHost github.com HostName github.comPort 22User yyPreferredAuthentications publickeyIdentityFile ~/.ssh/id_rsa_github# clip < ~/.ssh/id_rsa.pub【clip: 拷贝/剪切板命令】# 配置公钥(.pub)到 github 的 SSHurl : https://github.com/settings/keys# 验证:
ssh -T git@github.com
ssh -v gitee.com -p 443
Step1 下载Dify源代码
CMD
orGit-Bash
: 下载Dify源代码
[root@node-d opt]# cd /opt[root@node-d opt]# git clone https://github.com/langgenius/dify.git [√]
或 wget https://github.com/langgenius/dify.git
或 前往 Github(https://github.com/langgenius/dify) / 官网 人工下载 zip 压缩包 [root@node-d opt]# cd dify
[root@node-d dify]# ls -la
total 312
drwxr-xr-x 11 root root 4096 Mar 4 02:11 .
drwxr-xr-x. 9 root root 108 Mar 4 02:11 ..
drwxr-xr-x 22 root root 4096 Mar 4 02:11 api
-rw-r--r-- 1 root root 56 Mar 4 02:11 AUTHORS
-rw-r--r-- 1 root root 9250 Mar 4 02:11 CONTRIBUTING_CN.md
-rw-r--r-- 1 root root 10827 Mar 4 02:11 CONTRIBUTING_DE.md
-rw-r--r-- 1 root root 12605 Mar 4 02:11 CONTRIBUTING_JA.md
-rw-r--r-- 1 root root 9897 Mar 4 02:11 CONTRIBUTING.md
-rw-r--r-- 1 root root 12281 Mar 4 02:11 CONTRIBUTING_VI.md
drwxr-xr-x 3 root root 76 Mar 4 02:11 dev
drwxr-xr-x 2 root root 168 Mar 4 02:11 .devcontainer
drwxr-xr-x 10 root root 4096 Mar 4 02:11 docker
drwxr-xr-x 8 root root 163 Mar 4 02:11 .git
-rw-r--r-- 1 root root 338 Mar 4 02:11 .gitattributes
drwxr-xr-x 7 root root 160 Mar 4 02:11 .github
-rw-r--r-- 1 root root 3279 Mar 4 02:11 .gitignore
drwxr-xr-x 2 root root 89 Mar 4 02:11 images
-rw-r--r-- 1 root root 1879 Mar 4 02:11 LICENSE
-rw-r--r-- 1 root root 1304 Mar 4 02:11 Makefile
-rw-r--r-- 1 root root 16631 Mar 4 02:11 README_AR.md
-rw-r--r-- 1 root root 13488 Mar 4 02:11 README_CN.md
-rw-r--r-- 1 root root 15069 Mar 4 02:11 README_DE.md
-rw-r--r-- 1 root root 15162 Mar 4 02:11 README_ES.md
-rw-r--r-- 1 root root 15345 Mar 4 02:11 README_FR.md
-rw-r--r-- 1 root root 14846 Mar 4 02:11 README_JA.md
-rw-r--r-- 1 root root 13519 Mar 4 02:11 README_KL.md
-rw-r--r-- 1 root root 14279 Mar 4 02:11 README_KR.md
-rw-r--r-- 1 root root 13846 Mar 4 02:11 README.md
-rw-r--r-- 1 root root 14433 Mar 4 02:11 README_PT.md
-rw-r--r-- 1 root root 13615 Mar 4 02:11 README_SI.md
-rw-r--r-- 1 root root 14392 Mar 4 02:11 README_TR.md
-rw-r--r-- 1 root root 15423 Mar 4 02:11 README_VI.md
drwxr-xr-x 5 root root 83 Mar 4 02:11 sdks
drwxr-xr-x 20 root root 4096 Mar 4 02:11 web
- 切换到
1.0.0
版本分支
[root@node-d dify]# git checkout 1.0.0
Note: checking out '1.0.0'.[root@node-d dify]# git status
# HEAD detached at 1.0.0
nothing to commit, working directory clean
Step2 下载镜像并运行
- 下载镜像并运行
[root@node-d dify]# cd docker
[root@node-d docker]# docker compose up -d
WARN[0000] The "DB_DATABASE" variable is not set. Defaulting to a blank string.
WARN[0000] The "DB_PASSWORD" variable is not set. Defaulting to a blank string.
WARN[0000] The "DB_USERNAME" variable is not set. Defaulting to a blank string.
...
第1次启动dify,因为要下载Images,需要等一段时间。
如果需要修改配置,可以参考: https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/environments 修改docker-compose.yaml
文件。
- 启动后查看 Docker 的运行进程
docker ps
Step3 访问
- 启动成功后访问 http://127.0.0.1:80
使用指南篇
探索
- 探索
- http://192.168.31.104/explore/apps
推荐
Agent
助手
工作流
工作室 : 聊天助手(CHATFLOW) / Agent / 工作流
创建空白应用 : 聊天助手 / Agent / 文本生成应用 / ChatFlow / 工作流
聊天助手
通过简单的配置快速搭建一个基于 LLM 的对话机器人。支持切换为 Chatflow 编排。了解更多
Agent
能够迭代式的规划推理、自主工具调用,直至完成任务目标的智能助手。了解更多
文本生成应用
通过简单的配置快速搭建一个面向文本生成类任务的 AI 助手。
Chatflow
基于工作流编排,适用于定义等复杂流程的多轮对话场景,具有记忆功能。了解更多
工作流
基于工作流编排,适用于自动化、批处理等单轮生成类任务的场景。了解更多
从应用模板创建
导入 DSL 文件
应用的管理: 编辑 / 复制 / 导出DSL / 打开 / 删除
工作流 / Agent / 聊天助手 : 同理
知识库
知识库主页
外部知识库 API 用于连接到 Dify 之外的知识库并从中检索知识。了解如何创建外部知识库 API
添加外部知识库
创建知识库
- 导入已有文本
- 同步自 Notion 内容
- 同步自 Web 网站
知识库实例管理
文档管理
文档列表 / 添加文档 / 文档禁用|停用 /
文档分段管理
召回测试
设置
API
/datasets?category=api
curl --location --request POST 'http://192.168.xxx.xxx/v1/datasets/{dataset_id}/document/create-by-text' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "text","text": "text","indexing_technique": "high_quality","process_rule": {"mode": "automatic"}}'
插件
插件管理主页
探索 Marketplace
工具
工具
自定义工具
工作流工具
账户
设置
模型供应商
系统模型设置
可选的模型列表
/apps?category=chat
以
ollama
为例:点击后,以安装插件的形式加载到平台
- 安装完成后,在【插件】列表中即可见到:
插件类型 = 模型 [√] / 工具 [x] / ...
已安装的模型列表
添加模型
以 Ollama 为例:
注: Ollama是由Meta AI(原Facebook AI Research)开发、开源。
- LLM
- Text Embedding
以 硅基流动 为例:
- 添加模型
此时,即可为【系统模型设置】一一设置所需的模型
成员 : 成员列表 / 添加成员
数据来源 : Notion / 网站(使用 Jina Reader / 使用 Firecrawl)
https://jina.ai
https://firecrawl.dev
API 扩展
-
API 扩展列表
-
新增API扩展
语言 / 时区
帮助文档
- https://docs.dify.ai/zh-hans
路线图
- https://roadmap.dify.ai/roadmap
Y 推荐资源
-
[AI/Agent/Framework] 开源 AI Agent 框架与应用终端、应用框架 - 博客园/千千寰宇
-
Dify
- https://dify.ai
- https://github.com/langgenius/dify
- https://github.com/langgenius/dify/releases/tag/1.0.0 | 2025.02.28
- 架构图
- 阿里云/计算巢
- Dify 社区版
- Docker 社区版
- https://computenest.console.aliyun.com/service/detail/cn-hangzhou/service-687ce1b56cae49cd9dee/4
Y 推荐文献
- Dify
- 官网 : https://dify.ai/zh
- 文档 : https://docs.dify.ai
- github : https://github.com/langgenius/dify
- Dify 延申的第三方生态项目
- https://github.com/svcvit/Awesome-Dify-Workflow
- https://github.com/BannyLon/DifyAIA
X 参考文献
- dify+ollama构建本地大模型平台 - Zhihu
https://docs.dify.ai
- 知识库搭建——Dify+ollama - Zhihu