Skip to content

变量赋值节点

定义

变量赋值节点用于向可写入变量进行赋值操作,已支持以下可写入变量:

  • 会话变量
  • 循环变量

通过变量赋值节点,你可以将对话型工作流内任意节点的输出值写入会话变量,实现跨轮次对话的状态持久化,或在任务循环中动态更新循环变量。

变量赋值1


配置说明

基础配置

配置项说明
赋值目标选择要写入的变量,支持会话变量和循环变量
赋值来源选择上游节点的输出变量,或直接输入固定值
赋值方式支持覆盖(直接替换原值)和追加(拼接到原值末尾,仅 String/Array 类型支持)

赋值方式说明

赋值方式适用类型说明
覆盖所有类型用新值完全替换变量当前值
追加String、Array将新值拼接到变量末尾,不清除历史内容

对 Array 类型变量使用追加时,新元素会被 push 到数组末尾;对 String 类型使用追加时,新字符串直接拼接在原字符串后。

配置说明


指定变量写入模式

目标变量的数据类型将影响变量的写入模式。以下是不同变量间的写入模式:

  1. 目标变量的数据类型为String
  • 覆盖,将源变量直接覆盖至目标变量
  • 清空,清空所选中变量中的内容
  • 设置,手动指定一个值,无需设置源变量
  1. 目标变量的数据类型为Number
  • 覆盖,将源变量直接覆盖至目标变量
  • 清空,清空所选中变量中的内容
  • 设置,手动指定一个值,无需设置源变量
  • 数字处理,对目标变量进行加减乘除操作
  1. 目标变量的数据类型为Object
  • 覆盖,将源变量直接覆盖至目标变量
  • 清空,清空所选中变量中的内容
  • 设置,手动指定一个值,无需设置源变量
  1. 目标变量的数据类型为Array
  • 覆盖,将源变量直接覆盖至目标变量
  • 清空,清空所选中变量中的内容
  • 追加,在目标的数组变量中添加一个新的元素
  • 扩展,在目标的数组变量中添加新的数组,即一次性添加多个元素

写入模式


典型使用场景

场景一:记录用户偏好,跨轮次持久引用

需求: 用户在第一轮对话中告知语言偏好(如「请用英文回复我」),后续所有轮次均需遵守该偏好。

配置思路:

  1. 在应用中预先创建会话变量 language_preference(String 类型,默认值为空)
  2. 使用参数提炼节点从用户输入中提取偏好值
  3. 通过变量赋值节点将提取结果写入 language_preference(赋值方式:覆盖)
  4. 在模型节点的系统提示词中引用 {conversation.language_preference}
开始节点 → 参数提炼节点(提取 language_preference)
         → 变量赋值节点(写入会话变量)
         → 模型节点(提示词中引用偏好变量)
         → 直接回复节点

场景二:在任务循环中动态更新循环变量

需求: 在任务循环中,每轮处理完成后需要将中间结果写回循环变量,供下一轮逻辑判断使用。

配置思路:

  1. 任务循环节点接收数组输入,循环变量为 item
  2. 子流程内通过代码节点或模型节点处理 item
  3. 使用变量赋值节点将处理结果写回循环变量(赋值方式:覆盖)
  4. 后续子流程节点引用更新后的循环变量继续处理

场景三:暂存文件引用,供后续节点复用

需求: 用户上传文件后,工作流多个分支均需访问该文件,避免重复传递。

配置思路:

  1. 创建会话变量 uploaded_file(File 类型)
  2. 在对话开始时,通过变量赋值节点将用户上传的文件写入 uploaded_file
  3. 后续任意节点均可通过 {conversation.uploaded_file} 引用该文件

常见问题

Q:变量赋值节点执行后,当前轮对话能立即读取到新值吗?

可以。赋值完成后,同一工作流执行链路中后续节点均可读取到最新值。

Q:会话变量的默认值在什么时候生效?

仅在变量从未被赋值时生效。一旦通过变量赋值节点写入过值,默认值不再起作用,除非显式将变量重置为默认值。

Q:能否在一个变量赋值节点中同时对多个变量赋值?

支持。一个变量赋值节点可配置多条赋值规则,按配置顺序依次执行。