Coze工作流里的数据到底怎么传?一个案例讲清楚

0 阅读5分钟

学习工作流的时候,经常会遇到以下的情况:

这一步拿到的数据,下一步到底怎么用?

还有你会看到很多典型的情况:

  • 节点搭了不少
  • 线也连上了
  • 一跑就发现结果不对

问题通常不在工作流的节点,而是数据没有真正传递起来。

今天我们只讲一件事:

工作流里的“变量传递”是什么,以及怎么最快看懂它。

先建立一个重要的理解

工作流可以理解为一条流水线作业。

  • 节点,就像流水线上的技术工人的工位
  • 变量,就是工位之间传递的材料

如果只有工位,没有材料,这条线就转不起来。

所以,上一个节点生成的东西,有没有流动到下一个节点被接住。

为什么很多人一学变量就乱

因为大多数我们会先想:“我要用哪些节点?”

但正确的顺序其实应该是:“在这工作流中,数据要经过哪些变化?”

先想数据如何流动,再想节点,思路会清楚很多。

我们拿以下这个例子:做一个“读书总结助手”工作流。

f4593298-6ed1-4968-a150-3c18f7cc6619.png

用户输入一句:帮我总结《小狗钱钱》这边书

我们思考会经历哪些变化:

  1. 接收用户输入的内容
  2. 大模型·提取书名
  3. 判断走哪个分支,有标题,继续;没有标题,输出结果
  4. 把标题 交给 LLM 生成总结
  5. 输出结果

你会发现,流动的不是“节点”,是变量。

变量是什么

变量就是:

就是给一段数据取一个名字,方便后面的节点继续使用。

比如:

  • 用户刚输入的话,可以叫 user_input
  • 从输入里提取出的书名,可以叫 book_name
  • LLM 最后生成的总结,可以叫 final_summary

用一个完整例子,把数据传递看明白

还是用“读书总结助手”举例。

第一步:先列变量

列出工作流要经过哪些数据:

步骤输入输出
开始节点用户问题user_input
提取节点user_inputbook_name + has_book_name + clarify_message
选择器节点book_name + has_book_name + clarify_message选择分支节点
LLM 节点book_namefinal_summary
变量聚合 节点final_summary + clarify_messageinput
输出节点input用户最终看到的内容

这张表很重要,现在已经把“变量怎么流动”都讲得差不多了

你会发现变量流动的本质:

前面节点的输出的变量,是后面节点的输入。

第二步:节点为什么这么接

如果你已经知道:

  • 开始节点会产出 user_input
  • 提取节点会产出 book_name
  • 总结节点会产出 final_summary

那么后面的节点怎么连,其实很简单了,顺理成章了。

比如 提取节点 之所以要同时拿 book_namehas_book_nameclarify_message,是因为这个节点需要提取用户的标题

  • 如果用户没有明确书名时,book_name 为空字符串,has_book_name为false,clarify_message为请输入书名

  • 如果用户有书名时,book_name 为书名,has_book_name为true,clarify_message为空字符串

43cd7994-88e5-4a11-80af-2d75c9907ceb.png

这里我们为了让新手知道工作流是可以进行分支的, 所以加了选择器节点,正常情况下,可以在提示词直接判断。

第三步:在 LLM 节点里,变量需要被引用到

很多人已经把变量传到 总结LLM 节点了,但 Prompt(提示词中) 里根本没引用它。

54ad0a06-6d32-4843-9da9-744bf67a1b12.png

系统提示词的写法:

你是一名读书总结助手。
你的任务是根据用户提供的书名或内容,输出:
1. 核心观点总结
2. 3 条关键金句
3. 3 条可执行建议

要求:
1. 表达清晰
2. 不要空话
3. 输出分点展示
4. 如果用户信息不足,先提醒用户补充书名或内容

用户提示词的写法:

{{book_name}}

这里很重要,需要将获取到的变量,传递给大模型, 这样子大模型才知道,需要总结那边书!!

不然就会出现一个误区:

变量明明存在,但流程结果看起来好像关联上。

新手最容易遇到的问题

1. 变量名取名差不多,实际上这样子不是同一个变量

比如:

  • user_input
  • userInput
  • input_text

上面的例子确实“差不多”,但是系统理解不了“差不多”

需要保持一致,严谨,要培养好这个习惯,可以规避掉很多问题。

规定好命名方式是:

  • 统一小写字幕
  • 分词中间用下划线
  • 名字尽量简单明了

book_namekb_resultfinal_summary 这种就很好。

2. 节点连上了,但数据没真正传递过来

很多人会觉得“节点连线”理解成“数据已经传好了”。

其实不是的,这里只是做了节点与节点之间的顺序。

d0061303-0461-4537-9419-8e2f8d687afe.png

我们需要在后面的节点,将前面的输出的变量进行关联,这样子才算传递给下一个节点

518e136b-ae0c-40b5-8b4e-0594646b07d5.png

总结

工作流里的“数据如何进行传递”,本质上是一个流程拆解的问题。

你只要想明白三件事:

  1. 这一步输入什么
  2. 这一步输出什么
  3. 下一步到底需要什么,怎么关联变量

如果你也在学 Coze 工作流,后面我还会继续更新这种变量和调试的拆解。

如果你想系统学,我也把从节点认识到变量调试的完整方法整理成了一套课程,前 2 节可以试听,感兴趣可以自取:

Coze 编程入门到实战