本文档的变量引擎属于 FlowGram 设计态,和运行态的变量引擎不同。
想象一下,你在搭建一个复杂的乐高模型,每个模块都需要精确地连接在一起。在工作流(Workflow)的世界里,变量就扮演着类似“连接件”的角色。它们是用来在不同节点之间传递信息的“信使”。
简单来说,变量就是一个带名字的容器,你可以往里面装各种东西,比如用户的输入、计算结果,或者从某个地方获取的数据。
一个变量通常由三部分组成:
userName、orderId。123,文字 "Hello FlowGram!",或者一个开关状态 true / false。举个例子,在一个“智能问答”流程中:

1. WebSearch 节点:负责上网搜索,然后把搜到的知识(比如“今天天气怎么样?”的答案)放进一个名为 natural_language_desc 的变量里。
2. LLM 节点:它会接过 natural_language_desc 这个“信使”,读取里面的内容,然后用更自然、更友好的方式回答用户。
3. 在这个过程中,natural_language_desc 的类型就是“字符串”,因为它装的是文字内容。
在设计态(绘制流程时),我们只需要确定变量的定义:名字、类型以及可选的元信息。变量引擎会把这些定义管理成结构化的数据。
到了运行态,FlowGram 会依据这些定义为每次执行赋值。因此在设计时,先关注结构与约束;在运行时,所有节点就能依赖这些定义稳定地读写实际数据。
随着工作流复杂度的提升,变量的数量和管理难度也随之增加。
为了应对这一挑战,FlowGram 提供了强大的变量引擎。
它如同一位专业 的“数据管家”,能够系统化地管理所有变量,确保数据流的清晰与稳定。
启用变量引擎将为您带来以下核心优势:
变量引擎能够精确控制每个变量的有效范围(即作用域)。如同为不同房间配置专属钥匙,它确保了变量只在预期的节点中被访问,从而有效避免了数据污染和意外的逻辑错误。

Start 节点定义的 query 变量,在它后面的 LLM 和 End 节点都能轻松访问。

LLM 节点处于 Condition 分支,等同于位于独立空间;外部的 End 节点无法访问其 result 变量。
当变量结构较复杂(例如包含多层嵌套的对象)时,变量引擎支持逐层展开,便于定位每一项数据。

下图展示了所有节点的输出变量与层级关系,便于整体审视变量结构。
无需为每个变量逐一指定类型,变量引擎可依据上下文自动完成推导。

例如,当 Start 节点中 arr 变量的类型发生变更时 ,Batch 节点输出的 item 类型也会自动同步更新,确保了类型的一致性。
建议先把变量读写跑通;当你需要深入理解作用域链、AST、声明、表达式等底层模型时,再阅读变量概念。
您可以通过简单的配置来启用变量引擎,以体验其强大的功能。