数据STUDIO

Dify 入门与工作流节点介绍

Image

Image

什么是Dify

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

Image

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

为什么使用 Dify?

https://docs.dify.ai/zh-hans

你或许可以把 LangChain 这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify 提供了更接近生产需要的完整方案,Dify 好比是一套脚手架,并且经过了精良的工程设计和软件测试。

重要的是,Dify 是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似 Assistants API 和 GPTs 的能力,在灵活和安全的基础上,同时保持对数据的完全控制。

Dify 应用创建过程

https://docs.dify.ai/zh-hans/guides/application-orchestrate

创建空白应用

Image
  • 聊天助手:这是最基础的应用类型,适合新手开发者快速上手。通过简单配置,你可以构建一个基于 LLM(Large Language Model,大型语言模型)的对话机器人。
Image
  • Agent:这种应用类型具备推理与自主工具调用的能力,是一个更智能的助手。它不仅可以进行简单的对话,还可以根据用户的输入进行逻辑推理,并调用相关的工具或服务来完成复杂的任务。
Image
  • Chatflow:这是一种支持记忆的复杂多轮对话工作流,适合进阶用户。它允许开发者构建更加复杂和智能的对话系统,可以处理多轮对话,并且能够记住用户的上下文信息。
Image
  • 工作流:面向单轮自动化任务的编排工作流,主要用于处理单轮的自动化任务。开发者可以通过编排工作流,将多个任务或服务组合在一起,实现自动化的操作。
Image

从应用模板中创建

初次使用 Dify 时,你可能对于应用创建比较陌生。为了帮助新手用户快速了解在 Dify 上能够构建哪些类型的应用,Dify 团队内的提示词工程师已经创建好了多场景、高质量的应用模板。

Image

导入DSL文件

Dify DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。

Image

如果你从社区或其它人那里获得了一个应用模版(DSL 文件),可以从工作室选择 「 导入DSL 文件 」。DSL 文件导入后将直接加载原应用的所有配置信息。

工作流节点说明

节点是工作流的关键构成,通过连接不同功能的节点,执行工作流的一系列操作。

面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。该类型应用无法对生成的结果进行多轮对话交互。

开始节点

"开始" 节点是每个工作流应用(Chatflow / Workflow)必备的预设节点,为后续工作流节点以及应用的正常流转提供必要的初始信息,例如应用使用者所输入的内容、以及上传的文件等。

Image

LLM节点

调用大语言模型的能力,处理用户在 “开始” 节点中输入的信息(自然语言、上传的文件或图片),给出有效的回应信息。

Image

知识检索节点

从知识库中检索与用户问题相关的文本内容,可作为下游 LLM 节点的上下文来使用。

Image

问题分类节点

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

Image

条件分支节点

根据 If/else/elif 条件将 Chatflow / Workflow 流程拆分成多个分支。

Image

代码执行节点

代码节点支持运行 Python / NodeJS 代码以在工作流程中执行数据转换。它可以简化你的工作流程,适用于Arithmetic、JSON transform、文本处理等情景。

Image

模板转换节点

模板节点允许你借助 Jinja2 这一强大的 Python 模板语言,在工作流内实现轻量、灵活的数据转换,适用于文本处理、JSON 转换等情景。例如灵活地格式化并合并来自前面步骤的变量,创建出单一的文本输出。这非常适合于将多个数据源的信息汇总成一个特定格式,满足后续步骤的需求。

Image

文档提取器

LLM 自身无法直接读取或解释文档的内容。因此需要将用户上传的文档,通过文档提取器节点解析并读取文档文件中的信息,转化文本之后再将内容传给 LLM 以实现对于文件内容的处理。

Image

列表操作节点

列表操作节点可以对文件的格式类型、文件名、大小等属性进行过滤与提取,将不同格式的文件传递给对应的处理节点,以实现对不同文件处理流的精确控制。

Image

变量聚合节点

通过变量聚合,可以将诸如问题分类或条件分支等多路输出聚合为单路,供流程下游的节点使用和操作,简化了数据流的管理。

Image

变量赋值节点

你可以将对话过程中的上下文、上传至对话框的文件、用户所输入的偏好信息等变量,通过变量赋值节点写入至会话变量内,用作后续对话的参考信息。

Image

迭代节点

对数组中的元素依次执行相同的操作步骤,直至输出所有结果,可以理解为任务批处理器。迭代节点通常配合数组变量使用。

Image

参数提取节点

利用 LLM 从自然语言推理并提取结构化参数,用于后置的工具调用或 HTTP 请求。

Image

HTTP 请求节点

允许通过 HTTP 协议发送服务器请求,适用于获取外部数据、webhook、生成图片、下载文件等情景。它让你能够向指定的网络地址发送定制化的 HTTP 请求,实现与各种外部服务的互联互通。

Image

Agent节点

Agent 节点是 Dify Chatflow/Workflow 中用于实现自主工具调用的组件。它通过集成不同的 Agent 推理策略,使大语言模型能够在运行时动态选择并执行工具,从而实现多步推理。

工具节点

“工具”节点可以为工作流提供强大的第三方能力支持,分为以下三种类型:

  • 内置工具,Dify 第一方提供的工具,使用该工具前可能需要先给工具进行 授权。
  • 自定义工具,通过 OpenAPI/Swagger 标准格式导入或配置的工具。如果内置工具无法满足使用需求,你可以在 Dify 菜单导航 --工具 内创建自定义工具。
  • 工作流,你可以编排一个更复杂的工作流,并将其发布为工具。详细说明请参考工具配置说明。

结束节点

定义一个工作流程结束的最终输出内容。每一个工作流在完整执行后都需要至少一个结束节点,用于输出完整执行的最终结果。

直接回复节点

你可以在文本编辑器中自由定义回复格式,包括自定义一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合后回复。

循环节点

循环(Loop)节点用于执行依赖前一轮结果的重复任务,直到满足退出条件或达到最大循环次数。

🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递ImageImage