Dify 入门与工作流节点介绍
什么是Dify
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 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
创建空白应用
聊天助手:这是最基础的应用类型,适合新手开发者快速上手。通过简单配置,你可以构建一个基于 LLM(Large Language Model,大型语言模型)的对话机器人。
Agent:这种应用类型具备推理与自主工具调用的能力,是一个更智能的助手。它不仅可以进行简单的对话,还可以根据用户的输入进行逻辑推理,并调用相关的工具或服务来完成复杂的任务。
Chatflow:这是一种支持记忆的复杂多轮对话工作流,适合进阶用户。它允许开发者构建更加复杂和智能的对话系统,可以处理多轮对话,并且能够记住用户的上下文信息。
工作流:面向单轮自动化任务的编排工作流,主要用于处理单轮的自动化任务。开发者可以通过编排工作流,将多个任务或服务组合在一起,实现自动化的操作。
从应用模板中创建
初次使用 Dify 时,你可能对于应用创建比较陌生。为了帮助新手用户快速了解在 Dify 上能够构建哪些类型的应用,Dify 团队内的提示词工程师已经创建好了多场景、高质量的应用模板。
导入DSL文件
Dify DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。
如果你从社区或其它人那里获得了一个应用模版(DSL 文件),可以从工作室选择 「 导入DSL 文件 」。DSL 文件导入后将直接加载原应用的所有配置信息。
工作流节点说明
节点是工作流的关键构成,通过连接不同功能的节点,执行工作流的一系列操作。
面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。该类型应用无法对生成的结果进行多轮对话交互。
开始节点
"开始" 节点是每个工作流应用(Chatflow / Workflow)必备的预设节点,为后续工作流节点以及应用的正常流转提供必要的初始信息,例如应用使用者所输入的内容、以及上传的文件等。
LLM节点
调用大语言模型的能力,处理用户在 “开始” 节点中输入的信息(自然语言、上传的文件或图片),给出有效的回应信息。
知识检索节点
从知识库中检索与用户问题相关的文本内容,可作为下游 LLM 节点的上下文来使用。
问题分类节点
通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。
条件分支节点
根据 If/else/elif 条件将 Chatflow / Workflow 流程拆分成多个分支。
代码执行节点
代码节点支持运行 Python / NodeJS 代码以在工作流程中执行数据转换。它可以简化你的工作流程,适用于Arithmetic、JSON transform、文本处理等情景。
模板转换节点
模板节点允许你借助 Jinja2 这一强大的 Python 模板语言,在工作流内实现轻量、灵活的数据转换,适用于文本处理、JSON 转换等情景。例如灵活地格式化并合并来自前面步骤的变量,创建出单一的文本输出。这非常适合于将多个数据源的信息汇总成一个特定格式,满足后续步骤的需求。
文档提取器
LLM 自身无法直接读取或解释文档的内容。因此需要将用户上传的文档,通过文档提取器节点解析并读取文档文件中的信息,转化文本之后再将内容传给 LLM 以实现对于文件内容的处理。
列表操作节点
列表操作节点可以对文件的格式类型、文件名、大小等属性进行过滤与提取,将不同格式的文件传递给对应的处理节点,以实现对不同文件处理流的精确控制。
变量聚合节点
通过变量聚合,可以将诸如问题分类或条件分支等多路输出聚合为单路,供流程下游的节点使用和操作,简化了数据流的管理。
变量赋值节点
你可以将对话过程中的上下文、上传至对话框的文件、用户所输入的偏好信息等变量,通过变量赋值节点写入至会话变量内,用作后续对话的参考信息。
迭代节点
对数组中的元素依次执行相同的操作步骤,直至输出所有结果,可以理解为任务批处理器。迭代节点通常配合数组变量使用。
参数提取节点
利用 LLM 从自然语言推理并提取结构化参数,用于后置的工具调用或 HTTP 请求。
HTTP 请求节点
允许通过 HTTP 协议发送服务器请求,适用于获取外部数据、webhook、生成图片、下载文件等情景。它让你能够向指定的网络地址发送定制化的 HTTP 请求,实现与各种外部服务的互联互通。
Agent节点
Agent 节点是 Dify Chatflow/Workflow 中用于实现自主工具调用的组件。它通过集成不同的 Agent 推理策略,使大语言模型能够在运行时动态选择并执行工具,从而实现多步推理。
工具节点
“工具”节点可以为工作流提供强大的第三方能力支持,分为以下三种类型:
内置工具,Dify 第一方提供的工具,使用该工具前可能需要先给工具进行 授权。 自定义工具,通过 OpenAPI/Swagger 标准格式导入或配置的工具。如果内置工具无法满足使用需求,你可以在 Dify 菜单导航 --工具 内创建自定义工具。 工作流,你可以编排一个更复杂的工作流,并将其发布为工具。详细说明请参考工具配置说明。
结束节点
定义一个工作流程结束的最终输出内容。每一个工作流在完整执行后都需要至少一个结束节点,用于输出完整执行的最终结果。
直接回复节点
你可以在文本编辑器中自由定义回复格式,包括自定义一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合后回复。
循环节点
循环(Loop)节点用于执行依赖前一轮结果的重复任务,直到满足退出条件或达到最大循环次数。
🏴☠️宝藏级🏴☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫等,从入门到进阶!
长按👇关注- 数据STUDIO -设为星标,干货速递