
Dify从入门到高阶系列一:详解各种工作流节点,如何降低LLM开发门槛? 原创
去年在Dify还是0.x版本时,我曾用过一段时间。但就像很多技术爱好者一样,因为工作变动不得不暂时搁置。最近收到不少读者咨询:"Dify现在发展到什么程度了?还值得投入学习吗?"
带着这些疑问,我重新审视了Dify,发现其已经发展到 1.x版本,从一个"有趣玩具"开始转变成"生产级工具"。我准备深入研究一下它,并计划写一个系列文章,从基础使用到核心原理,再到个性化定制开发。今天先为大家带来Dify的全面介绍,后续会持续更新深度内容,欢迎关注追更!
dify 简介
Dify 是一个面向生成式AI应用开发的开源平台,致力于降低大语言模型技术的使用门槛。该平台创新性地结合了云原生架构与AI工程化实践,为开发者提供从模型接入到应用部署的一站式解决方案。
作为新一代LLM开发工具,Dify 的独特价值在于:
- 技术整合:平台预置了多模态模型支持体系、可视化Prompt设计器、智能检索增强生成系统等核心组件
- 全栈能力:同时提供面向开发者的SDK和管理控制台,支持从原型设计到规模化运营的全生命周期管理
- 协作特性:通过直观的交互界面,让业务专家也能参与AI能力调优和数据治理
为什么用dify
你可以把 LangChain 这类开发库比作散装的五金工具——虽然灵活,但需要开发者自行组装。而 Dify 更像一个预制的智能建造系统,不仅提供标准化构件,还包含经过验证的施工方案。
作为开源领域的工程化实践者,Dify 展现出三大差异化优势:
- 生产就绪性:预置企业级功能如多租户隔离、审计日志、性能监控等开箱即用
- 架构完整性:从模型网关、业务逻辑层到用户界面形成闭环系统
- 可控性保障:支持私有化部署的同时,保持与最新AI技术的同步演进
从创建应用开始
Dify 平台提供四种不同层级的 AI 应用构建模式,满足从入门到高阶的开发需求:
- 对话助手(Chatbot)入门级解决方案,让开发者快速搭建智能对话系统。通过可视化界面配置对话逻辑和知识库,无需编码即可创建具备基础问答能力的 AI 助手,是探索大语言模型应用的理想起点。
- 智能代理(Agent)进阶型应用框架,赋予 AI 自主决策与执行能力。系统可基于用户意图进行动态推理,智能调用 API 工具链完成复杂操作,如实时数据查询、事务处理等,实现从"回答问题"到"解决问题"的跨越。
- 对话流程(Chatflow)支持上下文记忆的多轮交互系统。通过状态机机制管理对话进程,可处理包含分支逻辑的深度会话场景,适用于客户服务、教育辅导等需要持续跟踪对话上下文的专业场景。
- 自动化工作流(Workflow)面向单次任务的高效处理引擎。采用节点式编排设计,支持将大语言模型能力与传统系统服务无缝衔接,可快速构建数据提取、内容生成等批处理任务,显著提升业务自动化水平。
每种模式都提供从开发调试到生产部署的全套工具链,开发者可根据业务复杂度自由选择,并支持在项目演进过程中平滑升级应用架构。平台特有的"渐进式复杂度"设计,既降低了入门门槛,又为专业开发保留了充分的扩展空间。
DSL文件
DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。
如果你从社区或其它人那里获得了一个应用模版(DSL 文件),可以从工作室选择 「 导入DSL 文件 」。DSL 文件导入后将直接加载原应用的所有配置信息。
工作流节点
节点是工作流的重要元素,通过串联不同功能的节点,可以实现工作流的各项操作。这种设计特别适合自动化和批量处理场景,如高品质翻译、数据分析、内容创作、电子邮件自动化等应用。然而,这类应用无法进行生成结果的多轮对话交互。
起始节点
"起始"节点是所有工作流程应用(Chatflow / Workflow)的基础,提供了之后各个节点以及应用运行所需的初始信息,如用户输入的文本、上传的文件等。
大语言模型节点(LLM节点)
这个节点调用大语言模型(LLM),处理和分析用户在 "起始" 节点中输入的数据(包括自然语言、上传的文件或图片),并产生有意义的响应。
知识检索节点
此节点能从知识库中寻找与用户问题相关的内容,这些内容可以被下一步的 LLM 节点用作参考上下文。
问题分类节点
问题分类节点通过预设的分类规则,能够根据用户输入,利用 LLM 进行推理并匹配相应的类别,生成分类结果,为后续节点提供更精准的信息。
条件分支节点
该节点可以根据设定的 If/else/elif 条件将 Chatflow / Workflow 的流程切分为多个分支。
代码执行节点
代码节点支持 Python / NodeJS 代码的运行,用于在工作流程中进行数据转换。它可以简化你的工作流程,适合进行算术运算、JSON 变换、文本处理等操作。
模板转换节点
借助 Jinja2 这种强大的 Python 模板语言,模板节点可以在工作流中实现灵活且轻量的数据转换,适用于处理文本、转换JSON 等。例如,将前面步骤的变量进行格式化和合并,创造出单一的文本输出,非常适合将多个数据源的信息汇总成一个特定格式,以满足后续步骤的需求。
文档提取器节点
LLM 无法直接读取或理解文档内容,因此需要借助文档提取器节点来解析用户上传的文档,将文件中的信息转换为文本,再传给 LLM 进行处理。
列表操作节点
列表操作节点能够对文件的各种属性(如格式类型、文件名、大小等)进行筛选和提取,将不同格式的文件送到相应的处理节点,实现精准的文件流程控制。
变量聚合节点
通过变量聚合,可以将问题分类或条件分支等的多路输出整合为单一输出,供下游节点使用和操作,极大地简化了数据流的管理。
变量赋值节点
你可以利用变量赋值节点将对话上下文、上传的文件、用户输入的偏好信息等变量写入会话变量,供后续对话参考。
迭代节点
迭代节点可以对数组中的每个元素执行相同的操作,并产生所有结果,可以视为批量任务处理器。通常,迭代节点会配合数组变量使用。
参数提取节点
这个节点利用 LLM 从自然语言中推理和提取结构化参数,以供后续工具调用或 HTTP 请求使用。
HTTP 请求节点
该节点允许通过 HTTP 协议向服务器发送请求,适用于获取外部数据、webhook、生成图片、下载文件等操作。你可以向指定的网络地址发送定制化的 HTTP 请求,实现与各种外部服务的互动。
Agent 节点
Agent 节点在Dify Chatflow/Workflow 中负责自主调用工具的功能。它通过集成各种 Agent 推理策略,使LLM能够在运行时动态选择并执行工具,实现多步推理。
工具节点
"工具"节点对工作流提供了强劲的外部功能支持,可分为三个类别:
- 预装工具,这些是由Dify直接提供的工具,在使用前可能要先进行授权。
- 自定义工具,这些工具可以通过 OpenAPI/Swagger 标准格式导入或设定。如预装工具无法满足你的需求,可在Dify界面导向 -- 工具中构建自己的工具。
- 工作流程,你可以设计一个更加复杂的工作流,并发布为工具。
本文转载自公众号AI 博物院 作者:longyunfeigu
原文链接:https://mp.weixin.qq.com/s/RDxKHDqdhnTDk7_2mlIaqw
