学习工作流的时候,经常会遇到以下的情况:
这一步拿到的数据,下一步到底怎么用?
还有你会看到很多典型的情况:
- 节点搭了不少
- 线也连上了
- 一跑就发现结果不对
问题通常不在工作流的节点,而是数据没有真正传递起来。
今天我们只讲一件事:
工作流里的“变量传递”是什么,以及怎么最快看懂它。
先建立一个重要的理解
工作流可以理解为一条流水线作业。
- 节点,就像流水线上的技术工人的工位
- 变量,就是工位之间传递的材料
如果只有工位,没有材料,这条线就转不起来。
所以,上一个节点生成的东西,有没有流动到下一个节点被接住。
为什么很多人一学变量就乱
因为大多数我们会先想:“我要用哪些节点?”
但正确的顺序其实应该是:“在这工作流中,数据要经过哪些变化?”
先想数据如何流动,再想节点,思路会清楚很多。
我们拿以下这个例子:做一个“读书总结助手”工作流。
用户输入一句:帮我总结《小狗钱钱》这边书
我们思考会经历哪些变化:
- 接收用户输入的内容
- 大模型·提取书名
- 判断走哪个分支,有标题,继续;没有标题,输出结果
- 把标题 交给 LLM 生成总结
- 输出结果
你会发现,流动的不是“节点”,是变量。
变量是什么
变量就是:
就是给一段数据取一个名字,方便后面的节点继续使用。
比如:
- 用户刚输入的话,可以叫
user_input - 从输入里提取出的书名,可以叫
book_name - LLM 最后生成的总结,可以叫
final_summary
用一个完整例子,把数据传递看明白
还是用“读书总结助手”举例。
第一步:先列变量
列出工作流要经过哪些数据:
| 步骤 | 输入 | 输出 |
|---|---|---|
| 开始节点 | 用户问题 | user_input |
| 提取节点 | user_input | book_name + has_book_name + clarify_message |
| 选择器节点 | book_name + has_book_name + clarify_message | 选择分支节点 |
| LLM 节点 | book_name | final_summary |
| 变量聚合 节点 | final_summary + clarify_message | input |
| 输出节点 | input | 用户最终看到的内容 |
这张表很重要,现在已经把“变量怎么流动”都讲得差不多了
你会发现变量流动的本质:
前面节点的输出的变量,是后面节点的输入。
第二步:节点为什么这么接
如果你已经知道:
- 开始节点会产出
user_input - 提取节点会产出
book_name - 总结节点会产出
final_summary
那么后面的节点怎么连,其实很简单了,顺理成章了。
比如 提取节点 之所以要同时拿 book_name 、 has_book_name 和 clarify_message,是因为这个节点需要提取用户的标题
-
如果用户没有明确书名时,
book_name为空字符串,has_book_name为false,clarify_message为请输入书名 -
如果用户有书名时,
book_name为书名,has_book_name为true,clarify_message为空字符串
这里我们为了让新手知道工作流是可以进行分支的, 所以加了选择器节点,正常情况下,可以在提示词直接判断。
第三步:在 LLM 节点里,变量需要被引用到
很多人已经把变量传到 总结LLM 节点了,但 Prompt(提示词中) 里根本没引用它。
系统提示词的写法:
你是一名读书总结助手。
你的任务是根据用户提供的书名或内容,输出:
1. 核心观点总结
2. 3 条关键金句
3. 3 条可执行建议
要求:
1. 表达清晰
2. 不要空话
3. 输出分点展示
4. 如果用户信息不足,先提醒用户补充书名或内容
用户提示词的写法:
{{book_name}}
这里很重要,需要将获取到的变量,传递给大模型, 这样子大模型才知道,需要总结那边书!!
不然就会出现一个误区:
变量明明存在,但流程结果看起来好像关联上。
新手最容易遇到的问题
1. 变量名取名差不多,实际上这样子不是同一个变量
比如:
user_inputuserInputinput_text
上面的例子确实“差不多”,但是系统理解不了“差不多”
需要保持一致,严谨,要培养好这个习惯,可以规避掉很多问题。
规定好命名方式是:
- 统一小写字幕
- 分词中间用下划线
- 名字尽量简单明了
像 book_name、kb_result、final_summary 这种就很好。
2. 节点连上了,但数据没真正传递过来
很多人会觉得“节点连线”理解成“数据已经传好了”。
其实不是的,这里只是做了节点与节点之间的顺序。
我们需要在后面的节点,将前面的输出的变量进行关联,这样子才算传递给下一个节点
总结
工作流里的“数据如何进行传递”,本质上是一个流程拆解的问题。
你只要想明白三件事:
- 这一步输入什么
- 这一步输出什么
- 下一步到底需要什么,怎么关联变量
如果你也在学 Coze 工作流,后面我还会继续更新这种变量和调试的拆解。
如果你想系统学,我也把从节点认识到变量调试的完整方法整理成了一套课程,前 2 节可以试听,感兴趣可以自取: