在dify中,节点是工作流的重要组成部分
节点
开始:所有工作流应用的基础,提供了之后各个节点以及应用运行所需的初始信息,如用户输入的文本、上传的文件等。
LLM(大语言模型):该节点可以调用大语言模型,处理和分析用户在 “起始” 节点中输入的数据(包括自然语言、上传的文件或图片),并产生有意义的响应。
知识检索:能从知识库中寻找与用户问题相关的内容,这些内容可以被下一步的 LLM 节点用作参考上下文。
Agent:该节点在 Chatflow/Workflow 中负责自主调用工具的功能。它通过集成各种 Agent 推理策略,使LLM能够在运行时动态选择并执行工具,实现多步推理。
直接回复:可以在文本编辑器中自由定义回复格式,包括自定义一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合后回复。
问题理解
- 问题分类器:通过预设的分类规则,能够根据用户输入,利用 LLM 进行推理并匹配相应的类别,生成分类结果,为后续节点提供更精准的信息。
逻辑
条件分支:该节点可以根据设定的 If/else/elif 条件将 Chatflow / Workflow 的流程切分为多个分支。
迭代:可以对数组中的每个元素执行相同的操作,并产生所有结果,可以视为批量任务处理器。通常,迭代节点会配合数组变量使用。
循环:用于执行依赖前一轮结果的重复任务,直到满足退出条件或达到最大循环次数。
转换
代码执行:支持 Python / NodeJS 代码的运行,用于在工作流程中进行数据转换。它可以简化你的工作流程,适合进行算术运算、JSON 变换、文本处理等操作。
模板转换:可以在工作流中实现灵活且轻量的数据转换,适用于处理文本、转换JSON 等。例如,将前面步骤的变量进行格式化和合并,创造出单一的文本输出,非常适合将多个数据源的信息汇总成一个特定格式,以满足后续步骤的需求。
变量聚合器:通过变量聚合,可以将问题分类或条件分支等的多路输出整合为单一输出,供下游节点使用和操作,极大地简化了数据流的管理。
文档提取器:LLM 无法直接读取或理解文档内容,因此需要借助文档提取器节点来解析用户上传的文档,将文件中的信息转换为文本,再传给 LLM 进行处理。
变量赋值:用户可以利用变量赋值节点将对话上下文、上传的文件、用户输入的偏好信息等变量写入会话变量,供后续对话参考。
参数提取器:这个节点利用 LLM 从自然语言中推理和提取结构化参数,以供后续工具调用或 HTTP 请求使用。
工具
HTTP请求:该节点允许通过 HTTP 协议向服务器发送请求,适用于获取外部数据、webhook、生成图片、下载文件等操作。你可以向指定的网络地址发送定制化的 HTTP 请求,实现与各种外部服务的互动。
列表操作:能够对文件的各种属性(如格式类型、文件名、大小等)进行筛选和提取,将不同格式的文件送到相应的处理节点,实现精准的文件流程控制。
工具
工具节点对工作流提供了强劲的外部功能支持,可分为三个类别:
插件:插件可以通过官方Marketplace、Github和本地插件三种方式进行安装。
自定义:自定义工具可以通过 OpenAPI/Swagger 标准格式导入或创建,也可以在dify市场中进行安装。
工作流:用户可以设计一个工作流,将其发布为工具。