当前位置: 首页 > news >正文

Dify简介:从架构到部署与应用解析

Dify 是一个开源的生成式 AI 应用开发平台,融合了后端即服务(Backend as a Service, BaaS)和 LLMOps 的理念,旨在帮助开发者快速搭建生产级的生成式 AI 应用。本文将详细解析 Dify 的技术架构、部署流程以及实际应用场景,为开发者提供技术干货。

一、Dify 技术架构

Dify 就是一个集成了很多大模型 API 能力的工具。 可以自己配置工作流,整合很多第三方工具。

1.1 整体架构设计

Dify 的架构采用分层设计,自上而下分为四层:

  1. 数据层:包含数据集(Dataset)和提示词(Prompts),通过 ETL 进行数据处理,并由 RAG Pipeline 实现知识检索增强。
  2. 开发层:提供 Prompt IDE 和 Agent DSL,用于提示词的编写和智能代理的构建。
  3. 编排层:以 Orchestration Studio 为核心,协调组件运行,并通过审核系统和缓存系统保障应用质量。
  4. 基础层:包括存储系统和语言模型(LLMs),为上层提供支撑。

1.2 核心组件功能

  • 低代码/无代码开发:Dify提供了可视化的界面,允许开发者通过拖拽、配置等方式定义Prompt(提示词)、上下文和插件,无需深入底层技术细节,降低了开发门槛。
  • 模块化设计:采用模块化架构,每个模块都有清晰的功能和接口,开发者可以根据需求选择性地使用这些模块来构建自己的AI应用。
  • 丰富的功能组件
    • AI工作流:通过可视化画布构建和测试强大的AI工作流。
    • RAG管道:支持从文档摄入到检索的完整流程,可从PDF、PPT等常见格式中提取文本。
    • Agent智能体:基于LLM的推理能力,可以自主规划任务、调用工具,完成复杂任务。
    • 模型管理:支持数百种专有和开源的LLM,如GPT、Llama2等,并提供模型性能比较功能。
    • 工具集成:提供了50多种内置工具(如谷歌搜索、DALL·E、Stable Diffusion)。
  • 灵活的部署方式:支持云服务、私有部署以及Serverless部署。
  • 企业级特性:提供私有化部署解决方案,确保数据和隐私安全。

二、Dify 部署流程

安装 Dify 之前, 请确保你的机器已满足最低安装要求:

  • CPU >= 2 Core
  • RAM >= 4 GiB

克隆 Dify 代码仓库

克隆 Dify 源代码至本地环境。

Copy

# 假设当前最新版本为 0.15.3
git clone https://github.com/langgenius/dify.git --branch 0.15.3

启动 Dify

进入 Dify 源代码的 Docker 目录

  1. Copy
cd dify/docker

复制环境配置文件

  1. Copy
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

三、Dify 应用场景

3.1 微调模型优化工作流

通过可视化提示词编排和数据集嵌入,零代码构建对话机器人或 AI 助理,通过微调模型,优化对话策略。

1.前期准备

明确微调目标:确定希望模型在哪些方面进行优化,例如特定领域的知识掌握、特定语言风格的生成等。

准备数据:收集和整理与微调目标相关的高质量数据。数据通常需要以特定的格式呈现,如常见的JSONL格式,每条数据包含“messages”字段,其中有“role”为“system”“user”“assistant”的记录,分别对应系统提示、用户输入和模型的回答。

2.微调操作流程

1)创建工作流:在项目中创建一个新的工作流,工作流是一系列操作的流程化表示,用于构建微调的过程。

2)设置开始节点参数:在开始节点中新建输入参数,通常需要一个用于上传文件的参数,如“attachments”,用于接收用户上传的训练数据文件;还需要一个“触发词”参数,作为训练中的系统提示词。

3)添加文档提取器节点:在开始节点右边添加文档提取器节点,并将开始节点的“attachments”数组参数作为文档提取器的输入变量。文档提取器会对上传的文件进行处理,提取其中的文本内容。

4)添加代码执行节点:在文档提取器右边添加代码执行节点,并与文档提取器节点连接。在代码执行节点中,编写代码来进一步处理文档提取器输出的文本内容,如合并多个文档内容、截取一定长度的字符等。代码执行节点的输出变量通常为处理后的文本内容,参数名为“result”,类型为“string”。

5)连接LLM大语言模型节点:将代码执行节点连接一个LLM大语言模型节点。在LLM节点的配置中,选择合适的预训练模型,如SiliconCloud的Qwen/Qwen2.572binstruct128k模型等。同时,设置系统提示词和用户提示词,告诉大语言模型如何根据输入的文本内容转换为符合微调数据集格式要求的输出。系统提示词内容例如“【角色】你是一位LLM大语言模型科学家,参考用户提供的内容,帮助用户构造符合规范的finetune(微调)数据”等。

6)添加结束节点:从LLM大语言模型节点右边添加一个结束节点,将LLM的输出文本作为结束节点的输入参数,至此完成微调语料构造工作流的制作。

7)测试工作流:点击工作流上面的运行按钮,输入训练的预料文件和触发词,检查工作流是否能够正常运行并生成符合预期的微调数据集。

8)评估微调效果:使用测试集对微调后的模型进行评估,观察模型在特定任务上的性能表现,如准确率、召回率、F1值等指标是否有所提升,或者根据实际应用场景的需求进行主观评估,如生成的文本是否更符合要求、回答的准确性和合理性是否提高等。

3.2 应用方向

1. RAG(检索增强生成)

技术实现
文档解析(PDF/表格/扫描件)→ 向量化存储 → 多路召回(关键词+语义检索)→ 重排序优化 → LLM生成答案。

核心功能

  • 可视化编排:通过拖拽节点(如LLM调用、条件分支、API请求)设计自动化流程,支持多轮交互与批处理。
  • 优化策略:多路召回(向量+关键词检索)、融合重排序(基于相关性评分)。

应用场景

  • 企业知识库问答:上传产品手册后,AI自动回答客户技术问题,准确率提升40%。
  • 法律文档分析:解析合同条款,生成风险摘要,减少人工审核时间。
2. Workflow(工作流)

核心功能
通过拖拽节点(LLM调用、条件分支、API请求)设计自动化流程,支持单轮生成与多轮交互。

应用示例

  • 工单处理自动化:用户提交工单→自动分类→调用知识库生成回复→邮件通知用户,耗时从20分钟缩短至3分钟。
  • 电商促销生成:输入产品信息→生成多语言营销文案→同步至CMS系统,效率提升5倍。
3. Agent(智能体)

技术特性
基于ReAct框架的任务分解能力,支持调用外部工具(如WolframAlpha计算、Stable Diffusion绘图)。

应用示例

  • 数据分析助手:用户提问“上月销售额趋势”→Agent自动查询数据库→生成可视化图表并解释关键指标。
  • 多语言客服:识别用户语言→调用翻译工具→结合知识库生成本地化回复,支持全球客户服务。

四、Dify 技术优势

全平台兼容

  • Dify支持本地(如NAS/服务器)和云端(如Docker/Kubernetes)部署,确保数据完全自主可控,满足金融、医疗等行业的严格合规需求。

大模型优先设计

  • Dify内置了OpenAI、DeepSeek、LLama等主流模型接口,兼容多种大语言模型,实现业务层和模型层解耦。支持RAG(检索增强生成)框架,一键接入企业文档生成智能知识库,实现灵活扩展和定制。

低代码工作流

  • 可视化编排支持条件分支、循环、子流程,搭配API节点实现“模型调用+外部工具”联动,如“用户提问→模型生成回答→触发工单系统”。
  • 通过“模型调用节点+工具节点”拖拽组合,快速实现“用户输入→模型处理→数据库操作→消息通知”闭环,无需编写复杂胶水代码。
  • 业务人员可以通过拖拽节点快速搭建基础流程,而开发者可以通过代码节点实现深度定制,兼顾易用性与扩展性,适合不同技术背景的开发者。

生产级能力

  • 提供Backend-as-a-Service(BAAS),集成流量监控、日志分析、权限管理,适合高并发场景下的企业级部署。
  • 支持多模型热切换,提供API网关、操作审计、数据加密,满足GDPR、等保三级等合规要求,适合政府、金融机构部署智能客服、风险控制等系统。

总结

Dify凭借其多模型支持企业级LLMOps能力灵活部署选项,成为开发者构建生产级AI应用的首选平台。与Coze、Langflow等工具相比,Dify在复杂任务处理与生态整合上更具优势,但在易用性和垂直领域检索精度上仍有优化空间。对于需要快速落地的企业场景,Dify+RAG/Workflow/Agent的组合能显著提升自动化水平与决策效率。

相关文章:

  • go的json unmarshal和 k8s的deepcopy对比
  • 数据结构:最小生成树的普里姆算法和克鲁斯卡尔算法
  • 记录学习的第二十六天
  • 【ISP】AWB的基本原理介绍(基于灰度像素检测)
  • 【数据结构 · 初阶】- 带头双向循环链表
  • java Stream流
  • 【高阶数据结构】第三弹---图的存储与遍历详解:邻接表构建与邻接矩阵的BFS/DFS实现
  • PasteForm框架开发之Entity多级嵌套的表单的实现
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第八讲)
  • jupyter中切换Anaconda虚拟环境
  • 自定义类型之结构体
  • Charles 安装与使用详解:实现 App 与小程序 HTTPS 抓包
  • Linux进程
  • 网络协议TCP/IP、UDP、HTTP/HTTPS 完全指南
  • 数据库学习通期末复习一
  • C# + Python混合开发实战:优势互补构建高效应用
  • Day09【基于Tripletloss实现的简单意图识别对话系统】
  • Android学习总结之git篇
  • 根据pdf文档生成问答并进行评估
  • 集成电路流片随笔10:UART模块tinyriscv 通信协议和RIB接口总线区别
  • 公元1057年:千年龙虎榜到底有多厉害?
  • 明天起,沪苏湖高铁、杭温高铁推出13款新型票制产品
  • 中俄领导人将讨论从俄罗斯经蒙古至中国天然气管道项目?外交部回应
  • 公积金利率降至历史低位,百万房贷30年省5万
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围
  • 杨国荣︱《老子智慧八十一讲》及其他