Dify节点变量设置核心技巧

发布时间:2026/8/2 2:30:14

Dify节点变量设置核心技巧 在 Dify 工作流中节点变量的设置核心在于理解**“上游输出即下游输入”的数据流向。你不需要凭空“创造”变量而是需要从前序节点如开始节点、LLM 节点、代码节点等的输出中提取数据**并将其传递给当前节点。以下是针对不同场景的变量设置指南与核心逻辑1. 核心原则变量从哪里来Dify 中的变量通常来源于以下三类设置时需从下拉菜单中选择而非手动输入字符串系统预置变量如sys.query(用户提问),sys.files(上传文件),sys.conversation_id(会话 ID)。上游节点输出前一个节点运行结束后产生的结果例如 LLM 节点的text输出代码节点的result输出。中间处理变量通过“变量赋值”或“模板转换”节点加工后的新变量。2. 常见节点变量设置方案A. 模板转换节点 (Template Transform)这是最常用于拼接和格式化变量的节点基于 Jinja2 语法。你需要在此处引用上游变量来构建新的文本结构。功能场景变量设置逻辑 (Jinja2 示例)说明基础引用{{ #start.query# }}引用开始节点的用户输入 。多变量拼接用户问{{ #start.query# }}背景信息{{ #context.result# }}将多个上游节点的输出合并为一个字符串 。默认值处理{{ #llm.answer# or 暂无回答 }}当上游变量为空时使用默认值防止流程报错 。条件判断{% if #score.value# 80 %}优秀{% else %}需改进{% endif %}根据数值变量动态输出不同文本 。循环遍历{% for item in #list.data# %} - {{ item }} {% endfor %}遍历数组变量并格式化输出 。操作示例假设你需要将用户的提问和之前的搜索结果合并发送给 LLM在模板节点中应这样配置# 输入变量配置区域 # 选择上游节点搜索节点 (Search_Node) - 输出变量results # 选择上游节点开始节点 (Start) - 输出变量query # 模板内容编写 请根据以下搜索结果回答用户问题搜索结果 {{ #Search_Node.results# }} 用户原始问题 {{ #start.query# }} 请确保回答准确且引用了上述信息。B. 迭代节点 (Iteration)当需要处理列表数组数据时如批量处理多篇文章、多个搜索链接必须使用迭代节点。其核心是设置**“输入数组变量”**。输入变量设置必须选择一个数组类型的变量例如代码节点输出的 list或工具节点返回的 array。内部变量映射在迭代子流程中系统会自动生成一个名为item(或自定义名称) 的临时变量代表数组中的当前元素。配置逻辑表配置项设置方法注意事项输入变量选择上游输出的 Array 类型变量 (如#code_node.url_list#)若变量不是数组需先用代码节点转换 。并行/串行根据任务依赖性选择 (SEO 抓取通常选并行顺序依赖选串行)并行模式可加快速度但需注意 API 限流 。子流程变量在子流程中引用#item#代表当前处理的单个元素不要在子流程中直接引用整个数组 。代码示例将逗号分隔字符串转为数组供迭代使用如果上游给出的是字符串url1,url2,url3需先用代码节点转为数组def main(arg1: str) - dict: # 将逗号分隔的字符串转换为列表 url_list [x.strip() for x in arg1.split(,) if x.strip()] return { result: url_list }C. 循环节点 (Loop) 与 变量赋值在 Dify 1.5 版本中循环节点存在作用域隔离问题循环内部产生的变量默认无法直接传递到循环外部。痛点在循环内计算的累加值或收集的结果循环结束后消失。解决方案必须在循环内部使用**“变量赋值”节点**将结果写入会话变量 (Conversation Variable)或通过特定模式输出。变量赋值节点配置策略模式适用场景配置要点覆盖写 (Overwrite)只需要最后一次循环的结果每次循环都更新同一个变量最终保留末态 。追加写 (Append)需要收集所有循环的结果 (如生成列表)选择“数组追加”模式将每次结果加入数组 。位置要求必须位于循环体内部且在产生数据的节点之后确保在循环结束前执行赋值操作 。错误示范 vs 正确示范❌错误在循环外直接引用循环内的temp_result变量会报错或为空。✅正确在循环内添加“变量赋值”节点 $\rightarrow$ 选择目标会话变量 $\rightarrow$ 操作选“追加” $\rightarrow$ 值选#loop_item.output#。3. 调试与排查技巧如果你不知道设置什么变量请按以下步骤自查检查上游节点状态点击工作流画布中当前节点的前一个节点查看其**“运行结果”或“输出结构”**。只有在上游成功运行并输出了字段当前节点的下拉列表中才会出现该变量。利用“变量聚合”节点如果你的工作流有分支If-Else不同分支输出的变量名可能不同。使用变量聚合节点可以将不同分支的输出统一映射为一个标准变量名供后续节点使用 。打印测试在不确定变量内容时先连接一个“模板转换”节点仅输出{{ #target_var# }}然后运行测试观察实际传入的内容格式是字符串、JSON 还是数组再决定后续如何处理。4. 总结变量设置速查表你的需求推荐节点关键变量设置动作把用户问题和上下文拼在一起模板转换插入{{ #start.query# }}和{{ #knowledge.result# }}批量处理 10 个 URL迭代节点输入变量选#code_node.url_array#内部用#item#循环累加分数或收集列表循环 变量赋值循环内设赋值节点模式选“追加”写入会话变量不同分支输出统一化变量聚合将分支 A 的out_A和分支 B 的out_B映射为统一的final_output修改变量名或做简单复制变量赋值源变量选#old_var#目标变量名设为new_var通过上述逻辑你只需关注**“前一个节点产出了什么”**然后在当前节点的配置面板中通过下拉菜单选取对应的字段即可无需手动编写变量名。参考来源【全网最全dify模版转换节点的妙用】Dify工作流节点-迭代【Dify精讲】第15章自定义节点开发实战Dify 1.5.1 版本 循环节点使用教程含变量输出方案【实战】Dify从0到100进阶--文档解读9变量迭代节点

相关新闻