【实战】Dify从0到100进阶--文档解读(11)其他节点
一、Agent 节点(Agent Node)
1. 定义与作用
Agent 节点通过加载不同的推理策略(Strategy),将 LLM 的思考与外部工具调用相结合,实现多步动态决策与执行。常用于自动化问答、自主检索与任务编排场景。
2. UI 配置面板说明
-
节点标题:自定义节点名称,方便流程中识别。
-
Agent 策略:下拉选择已安装的策略插件(Function Calling、ReAct 等)。
-
模型:选择底层大语言模型(如 GPT-4o-mini)。
-
工具列表:点击“+”导入工具:
- 搜索并勾选插件
- 填写授权信息(API Key、OAuth Token)
- 配置工具描述与参数说明
-
任务指令(Prompt):编写系统/用户/助手消息,指定目标与上下文,支持 Jinja2 变量引用。
-
用户输入(Query):映射对话或流程传入的查询变量。
-
最大迭代次数:设置 Agent 的思考+行动循环上限,防止无限循环。
-
记忆:开启后,Agent 将保留指定轮次的上下文历史,帮助理解代词和上下文依赖。
-
输出变量:定义最终返回给下游节点的结构,可为
Object
或自定义类型。
3. 执行原理
-
初始化:加载策略、工具与上下文。
-
循环逻辑(ReAct):
- 思考(Think):调用 LLM 输出当前动作意图与参数。
- 行动(Act):执行选定工具或函数调用。
- 观察(Observe):将工具输出返回给 LLM,进入下一轮思考。
-
终止条件:达到最大迭代次数或满足自定义结束标志。
-
结果汇总:将最终的思考或工具输出封装至定义的输出变量。
4. 进阶功能
- 并行工具调用:在策略插件中可配置并发调用多个工具(需策略支持)。
- 自定义策略插件:开发者可基于 Dify 插件规范,编写并上传自定义 Agent 策略。
- 日志与监控:点击“详情”可查看每轮思考、调用与输出,支持导出为 JSON 供离线审计。
5. 最佳实践
- 提供明确的系统指令,避免模型在思考阶段偏离目标。
- 工具参数类型须与参数提取节点输出保持一致。
- 合理设置迭代上限,防止无效循环。
- 对关键步骤配置异常处理,与“异常处理”节点联动。
二、工具节点(Tool Node)
1. 定义与作用
工具节点封装外部服务或自定义函数接口,使流程可以直接调用数据库、搜索 API、文件系统等功能,实现低代码扩展。
2. UI 配置面板说明
- 工具选择:下拉列表显示已安装的插件,支持搜索关键词快速定位。
- 参数映射:根据插件定义的参数结构,填写对应变量或常量值。
- 授权管理:集中管理 API Keys、OAuth 凭证,支持环境变量引用。
- 高级选项:超时设置、并发限制、重试策略(部分工具支持)。
- 输出映射:勾选或自定义返回字段,将工具响应映射为流程变量。
3. 执行原理
- 输入校验:检查必填参数与类型一致性。
- 发起调用:通过 SDK 或 HTTP 请求与外部服务交互。
- 响应处理:接收响应,按映射规则转换为流程变量。
- 错误捕获:触发异常时,可进入“异常处理”分支或执行默认错误重试。
4. 进阶功能
- 本地函数:支持用户自定义代码插件,直接执行 Python/JavaScript 函数。
- 数据转换:内置输入/输出转换脚本,支持 JSONPath、Jinja2 模板加工。
- 批量调用:与迭代节点结合,对列表参数执行批量调用。
5. 最佳实践
- 参数提取节点与工具节点配合,确保输入精准无歧义。
- 对敏感凭证使用环境变量或密文管理。
- 在测试阶段开启工具的“日志”模式,调试请求与响应。
三、结束节点(End Node)
1. 定义与作用
结束节点作为 Chatflow/Workflow 的收尾,将指定变量整理并输出给最终用户或外部系统,标志流程终点。
2. UI 配置面板说明
- 输出列表:展示可选的所有流程变量,勾选需要返回的变量。
- 输出格式:选择文本、Markdown、JSON、HTML 或自定义模板。
- HTTP 响应(API 模式):设置 HTTP 状态码、响应头和响应体结构。
- 触发条件:可配合条件分支,仅在满足指定条件时触发该结束节点。
3. 执行原理
- 收集变量:从工作流上下文读取配置的输出变量值。
- 格式化渲染:按照选择的格式或模板,渲染最终结果。
- 返回/展示:在 Chatflow 场景下推送给用户;在 API 场景下以 HTTP 响应返回。
4. 进阶功能
- 多格式同时输出:在不同渠道(聊天、邮件、API)使用不同格式。
- 条件输出:结合变量聚合,可在同一结束节点内细分多种输出场景。
5. 最佳实践
- 输出变量命名要简洁、具有语义化。
- 在 API 模式下,保持一致的响应结构与状态码规范。
- 对于长文本,考虑分页或拆分输出以提升用户体验。
四、直接回复节点(Direct Reply Node)
1. 定义与作用
直接回复节点用于在 Chatflow 对话中,将指定变量的内容实时发送给用户,适用于中间结果或流式更新场景。
2. UI 配置面板说明
- 回复变量:选择单个变量,如
${replyText}
、${items}
等。 - 流式输出:在迭代节点内部配置,可逐条返回处理结果。
- 格式选项:支持 Markdown、纯文本,两者可混用。
3. 执行原理
- 监听触发:当流程执行到该节点即刻触发回复。
- 内容渲染:将变量值格式化为字符串,根据 Markdown 渲染规则处理。
- 消息推送:通过 WebSocket 或 API 将消息推送至用户聊天界面。
4. 进阶功能
- 多段批量推送:配合迭代节点,实现 N 条结果分段显示。
- 条件触发:结合条件分支,仅在满足特定条件时进行回复。
5. 最佳实践
- 对长文本使用 Markdown 折叠或分页,避免一次性输出过多内容。
- 在高频回复场景中,适当加入延时或进度指示,提升用户体验。
五、迭代节点(Iteration Node)
1. 定义与作用
迭代节点(Batch Processor)将 Array 类型变量拆分为单个元素,依次或并行执行内部子流程,输出与输入等长的结果数组,用于批量任务场景。
2. UI 配置面板说明
- 输入数组:选择
Array[...]
类型变量,如${sections}
、${questions}
。 - 并行模式:开关控制顺序或并行执行(并发上限 10)。
- 错误响应:配置三种策略:终止 / 忽略并输出 null / 移除错误项。
- 子流程画布:内部拖拽任意节点(LLM、工具、直接回复等)。
- 输出数组:命名最终结果数组变量,如
${translatedSections}
。
3. 执行原理
-
拆分输入:将数组变量展为
items[0..n-1]
。 -
执行循环:对每个
item
触发内部子流程:- 引用内置变量
items
、index
- 执行 LLM、工具或其他节点
- 引用内置变量
-
结果收集:按执行顺序或完成顺序填充输出数组。
-
错误处理:根据配置跳过或中断。
4. 进阶功能
- 并行子流程:与异步工具结合,加速批量任务。
- 内置索引变量:可在模板或代码节点中引用
{{ index }}
生成带序号输出。 - 嵌套迭代:支持多层迭代,用于处理二维或多维数组。
5. 最佳实践
- 确保子流程的输入、输出变量与外层一致,避免命名冲突。
- 对高耗时或失败率高的任务,谨慎开启并行模式并调整错误策略。
- 在迭代内部避免过多模型调用,合并可批量处理的步骤。