目录
一、前言
Dify 作为一款开源的 LLM 应用开发平台,融合了后端即服务(Backend as a Service, BaaS)和 LLMOps 的理念,为开发者提供了一种高效、便捷的方式来构建生产级的生成式 AI 应用。
Dify支持多种主流大语言模型,如GPT、Mistral、Llama3等,并通过低代码/无代码开发方式,降低了开发门槛。其核心特性包括多模型支持、丰富的功能组件和灵活的应用编排,适用于智能客服、内容生成、数据分析等多个应用场景。Dify通过可视化的界面和强大的RAG引擎,帮助开发者快速构建和优化AI应用,显著提高了开发效率和应用质量。与同类产品相比,Dify在API优先、灵活应用编排和插件生态方面具有显著优势,适合不同技术背景的开发者使用。未来,Dify有望在AI应用开发领域发挥更大的作用,推动AI技术的普及和创新。
二、Dify 介绍
2.1 Dify 是什么
Dify 是一个开源大模型应用开发平台,旨在帮助开发者快速构建、部署和管理基于大型语言模型(LLM)AI 应用。它提供了一套完整工具链,支持从提示词工程(Prompt Engineering)到应用发布的全流程,适用于企业级 AI 解决方案和个人开发者项目。
官网入口:Dify: Production-Ready AI Agent Builder
中文站入口:Dify:企业级 AI Agent 开发平台
2.2 Dify 核心特性
Dify 具备如下核心特点:
-
可视化编排工作流
-
通过低代码界面设计 AI 应用流程,无需深入编程即可构建复杂的 LLM 应用。
-
支持 对话型(Chat App) 和 文本生成型(Completion App) 应用。
-
-
多模型支持
-
兼容主流大模型 API,如 OpenAI GPT、Anthropic Claude、Cohere、Hugging Face 等。
-
支持私有化部署的 Llama 2、ChatGLM、通义千问 等开源模型。
-
-
灵活的提示词工程
-
提供 Prompt 模板、变量插值、上下文管理等功能,优化 AI 输出效果。
-
支持 RAG(检索增强生成),可结合外部知识库提升回答准确性。
-
-
数据管理与持续优化
-
记录用户与 AI 的交互日志,用于分析和迭代改进模型效果。
-
支持 A/B 测试,对比不同提示词或模型版本的表现。
-
-
企业级功能
-
支持 多租户、权限管理,适合团队协作开发。
-
可私有化部署,保障数据安全。
-
2.2.1 多模型支持
在dify控制台,内置了非常多大模型可供用户选择使用,比如GPT系列,DeepSeek模型等
2.2.2 可视化编排工作流
Dify 提供了可视化的编排工作流,工作流的配置非常灵活,可以帮助用户根据自身的需要在一个流程中增加各类节点,从而完成一些非常复杂的场景下的流程编排业务。
2.2.3 低代码/无代码开发
Dify 提供了直观的可视化界面,和在使用Coze的时候一样,用户只需要通过拖拉拽,并结合界面参数配置的方式,即可快速搭建出一个AI智能体的应用,而无需编写大量代码 。
这一特性大大降低了AI应用开发门槛,即使没有编码功底的人也能参与到AI应用开发中。这样不仅提高了开发效率,还能让更多的人参与到 AI 创新中来,推动 AI 技术在各个领域的广泛应用。
2.3 Dify 适用场景
Dify 适用于多种生成式 AI 应用开发场景:
-
内容创作与生成
-
自动化生成文章、报告、营销文案等
-
结合知识库实现专业领域内容生成(如法律、医疗文档)
-
-
智能对话系统
-
构建多轮对话客服机器人、虚拟助手
-
通过 Agent 框架实现任务分解与工具调用(如搜索、图像生成)
-
-
数据分析与自动化
-
解读复杂数据并生成可视化报告
-
自动化业务流程(如工单处理、邮件回复)
-
-
个性化推荐与营销
-
基于用户画像生成个性化推荐内容。
-
结合RAG实现精准信息检索与推送。
-
三、Dify 核心组件使用
在上一篇Dify的部署与搭建中,我们完成了本地私有化部署Dify的过程,接下来让我们对Dify的核心组件进行详细的说明,便于后续更深度的使用Dify完成各类智能体的编排。
3.1 配置大模型
3.1.1 安装大模型插件
dify在后续配置和使用各类大模型的时候,需要提前进行大模型插件的安装,点击账户名下的设置
选择左侧的模型供应商,在右侧展示出来很多市面上主流的大模型,在这里叫做大模型插件,如果你需要在后续的dify使用中用到那些大模型,点击安装,等待其安装完成即可
安装完成后,在模型列表里就能看到你安装过的大模型插件了
3.1.2 配置大模型apikey
大模型插件安装完成之后,还需要对其进行配置才能生效,在使用openai的时候,还记得调用其接口最重要的一个参数就是apikey,在这里也是一样,需要对某个大模型进行设置,如下以deepseek为例,在官网deepseek注册账号并获取到apikey,粘贴到下面的 API Key的输入框中,最后点击保存,这个过程根据个人的网络情况可能有点慢
保存成功后,跳回主页,需要确认API-KEY后面的小点变成绿色的,说明配置成功
其他的大模型也是类似的配置方式,这里就不再一一列举了。
3.2 创建应用与发布应用
应用是dify中非常重要的也是作为智能体承载的基本单位,在dify中,智能体最终要面向用户使用,需要以应用的形式发布出去,在coze中也是如此,在dify中提供了多种创建应用的方式,在之前的文章中有详细介绍,这里以比较常用的创建空白应用为例进行说明。
点击创建空白应用,跳转到下面的页面之后,选择适合自己的应用类型,默认提供了聊天助手,Agent,工作流等多种类型的应用,然后填写应用名称和应用描述即可完成创建,图标也可自行上传或者选择系统内置的
3.2.1 配置提示词
在下面的提示词输入框中根据你的需求输入提示词,这里我简单的输入下面一段话,让当前的助手充当一个中英文翻译
在右侧的选择那里选择在上一步你配置的大模型,这里我选择deepseek的一个聊天模型
模型选择之后,点击发布按钮那里,记得要进行发布更新才能生效
然后,可以在当前的模拟会话窗口中进行测试,随机输入几句中午,可以看到能够正常的输出对应的英文翻译
3.2.2 发布应用
效果测试满足要求之后,就可以将应用进行发布,点击发布下拉选项中的运行
将会跳到下面的一个新页面,这个页面是不是就有点类似于之前我们使用过的一些第三方AI对话模型页面,在实际开发应用中,也是类似,将最终配置完成的dify应用发布出去,然后通过网关做一下代理之后,就可以让用户用起来,测试一下,也能达到预期的效果
3.3 知识库使用
3.3.1 创建知识库
顶部菜单切换到知识库
点击创建知识库,可以看到,在这里提供了多种创建一个知识库的方式,比如导入文本,或者同步其他web网页的内容
这里以最简单的导入文本的方式进行创建,在本地有一个如下的文档,里面有几张用于创建数据表的sql脚本
将上述文本文件拖拽进去,点击下一步,来到下面的文本处理页面,即对文本的分段处理策略相关的配置,在下面的配置中,分段设置这里如果不是很清楚可以选择默认的即可
选择Emvedding模型,并非所有的大模型都可以进行文本的向量化处理,在下拉框中选择可以用于进行文本向量化的模型
其他的配置暂时保持默认的即可
点击保存,等待其对文本处理完成,看到下面的效果,说明知识库创建完成
点击前往文档,在这里展示出创建的知识库列表
也可以点进去查看详情
3.3.2 使用知识库
上一步创建了知识库之后,接下来就可以在具体的应用中进行引用了,如下,在上面的应用中,在编排页面下方知识库那里,点击添加,选择你要引用的知识库
添加完成即可
配置了知识库之后,再次提问时,问与知识库文档里面的问题时,就能给出精准的回答了
3.4 变量使用
变量在AI智能体的配置中具有非常重要的作用,变量的存在,让智能体应用的动态性和灵活性得到了很大的扩展,比如说,如果我们配置的智能体应用最终要发布出去使用,为了让智能体提供更为个性化、专业化的服务,往往需要减少用户的输入提示词,比如提供特定领域下的服务时,只需要用户输入关键字,或者给定用户选择项,然后这些输入项就可以当参数传入智能体中,从而给出专业的回复了。下面看具体的操作案例。
3.4.1 定义变量
如下在智能体编排框下面,有一个变量的选项,点击添加变量
在下拉框中提供了多种变量的类型可供选择
这里选择第一个文本,参照下面的输入进行填写,填写完成后,点击保存
然后依次创建几个应用中可能会用到的变量,并在提示词中进行引用
3.4.2 效果测试
在上面的提示词中,我们的角色设定的是一个旅游助手,引用3个变量,实际使用的时候,用户只需要填写3个变量即可,看下面的效果,3个输入框输入完成之后,就可以得到对应的旅游规划了
3.5 工作流使用
工作流在智能体应用中占据非常重要的地位。有了工作流的存在,使得很多复杂的编排业务得以实现,在coze平台中,很多复杂的智能体可以说离不开工作流的使用。在dify中也提供了工作流的功能,如下,在创建空白应用的时候,dify提供了2种可用于创建工作的方式,在这里dify使用的是工作流应用的方式,而coze中则是将工作流作为应用的一个组件嵌入到应用中使用。下面简单聊聊两者的差异,方便后续使用中进行合理的选择。
3.5.1 Chatflow 简介
ChatFlow是Dify平台中专为对话类应用设计的工作流类型。它主要面向需要持续交互的场景,如客户服务、语义搜索以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
Chatflow 是 dify 中用于构建多轮对话系统的关键工具。它允许开发者设计出可持续进行交互的对话流程,特别适合构建具备上下文记忆能力的聊天机器人或智能客服系统。
Chatflow 核心特性包括:
-
对话历史管理:
-
内置对话记忆(Memory)功能,可以存储和传递多轮对话历史消息;
-
-
问题理解节点:
-
提供专门的节点来识别自然语言输入中的用户意图;
-
-
流式输出:
-
支持通过Answer节点在流程中间步骤进行文本内容的流式输出;
-
-
交互式体验:
-
支持用户与生成内容进行多轮讨论并调整结果;
-
下面给出了 在dify中使用 Chatflow 的典型交互路径
用户输入指令 → 生成内容 → 就内容进行多次讨论 → 重新生成结果 → 结束
Chatflow 在开始节点内置了常用的一些系统变量可供使用,如下:
-
sys.query:用户输入的查询内容
-
sys.files:用户上传的文件
-
sys.conversation_id:会话ID
-
sys.user_id:用户ID
3.5.2 WorkFlow 介绍
WorkFlow,也翻译为工作流,是Dify平台中为自动化和批处理场景设计的工作流类型,它适合需要一次性处理并生成结果的场景,如内容翻译、数据分析、内容生成、电子邮件自动化等应用。
WorkFlow具备如下核心特征:
-
批处理能力:
-
适合一次性执行并完成的任务
-
-
丰富的逻辑节点:
-
提供多种逻辑处理节点,如代码节点、IF/ELSE节点、模板转换、迭代节点等
-
-
定时和事件触发:
-
支持定时执行和基于事件的触发机制
-
-
终结性执行:
-
使用End节点标记流程结束
-
下面给出了 在Dify中使用 WorkFlow 的典型交互路径
用户输入指令 → 生成内容 → 结束
WorkFlow 在开始节点内置了常用的一些系统变量可供使用,如下:
-
sys.files:用户上传的文件
-
sys.user_id:用户ID
与ChatFlow不同,WorkFlow没有对话历史相关的变量,因为它不支持多轮对话交互。
下面列举出了两者的关键区别
特性 | Chatflow | WorkFlow |
应用场景 | 对话类应用,支持多轮交互 | 自动化和批处理,一次性执行 |
对话记忆 | 支持(Memory功能) | 不支持 |
输出方式 | 支持流式输出和中间步骤输出 | 仅在流程结束时输出 |
结束节点 | 使用Answer节点 | 使用End节点 |
内置变量 | 包含对话相关变量(sys.query, sys.conversation_id等) | 不包含对话相关变量 |
用户交互 | 支持多轮交互和讨论 | 不支持多轮交互 |
3.5.3 工作流创建与使用
以WorkFlow 为例,点击创建一个工作流类型的应用,如下
创建完成后,默认跳转到下面的页面,在这个页面展示了只有开始节点的工作流,当点击开始节点时,右侧展示出了与开始节点相关的配置,比如可以看到开始节点提供的一些默认的系统内置变量
点击下面的+号可以为当前的这个工作流新增节点,点击+号之后,可以看到dify内置了很多种类型的节点可供选择,这个在使用coze工作流的时候是否时曾相识呢,其实是差不多的,其中LLM节点排在第一个,即大语言模型节点,可见其在工作流编排中的重要作用。
3.5.4 工作流配置
基于上面的流程,选择一个LLM大模型节点添加进去之后,接下来开始对各个节点进行参数配置。
1)配置开始节点
开始节点一般用于设置用户的输入参数,如下设置一个名为input的参数,接收用户的输入
配置并保存之后,从开始节点配置可以看到,新增的变量已经展示,由于开始节点连接线指到LLM节点,在底部开始节点的下一个连线自动指到LLM节点
2)配置LLM节点
如下,在LLM节点的参数配置界面,这里简单配置一段提示词,提示词中使用开始节点的input输入参数
3)配置结束节点
结束节点,主要是设置输出变量,该变量来自上一个LLM节点输出的结果
3.5.5 测试效果
上面的结束节点配置完成后,首先点击右上角的发布更新,然后点击运行,在下面弹出一个用户输入参数框,输入一个与提示词描述相关的问题,点击开始运行
如果运行成功,在结果一栏中可以看到最终的输出结果,本例运行的效果如下
也可以发布当前的工作流,在探索中打开,然后新开一个浏览器窗口
在这个页面,输入问题仍然可以得到结果,在实际工作流开发完成之后,就可以将工作流这样发布出来供用户使用。
四、写在文末
本文通过较大的篇幅详解介绍了Dify核心组件的使用,这些组件是后续使用Dify进行更多复杂应用编排的基础,需要熟练掌握,希望对看到的同学有用,本篇到此结束,感谢观看。