工作流编排

《扣子编程:从零开始搭建智能体 卢欣欣 清华大学出版社》【摘要 书评 试读】- 京东图书

《扣子编程:从零开始搭建智能体》全书案例持续更新-CSDN博客

本节将以"生成文章摘要"工作流为例,介绍扣子工作流的构建过程,带领读者从认识可视化编排空间、通过节点操作搭建逻辑"骨架",到深入变量配置、打通数据"血脉",再到测试与发布,完整体验工作流从无到有的全生命周期。

3.3.1 工作空间

新建工作流或在资源库中单击某个工作流名称后,扣子平台将进入工作流可视化编排页面,如图3-4所示。该页面的布局主要由画布(主体区域)和工具栏(下方区域)两个核心区域构成。其中,画布是页面的核心工作区,用户主要在此区域中通过拖拽节点、连接节点来构建和编排工作流的业务逻辑;工具栏位于画布下方,集成了辅助编排的各项快捷功能,包括切换交互模式、添加注释、优化布局、导出为图片、查看缩略图、添加节点、调试工作流、工作流试运行等。

图3-4 工作流编排页面

3.3.2 节点基本操作

新建工作流后,系统会默认初始化一个"开始"节点和一个"结束"节点,分别作为整个流程的数据输入与输出端口。节点的基本操作主要包含添加节点、建立连接和设置参数,下面将分别介绍这些操作方法。

1.添加节点

在编排页面的下方工具栏中,单击"添加节点"按钮,系统会弹出节点类型菜单,选中目标节点即可将其添加到画布中。

例如,在"生成文章摘要信息"的工作流中,生成文章摘要的工作由大模型来完成,因此此处需要添加一个大模型节点,如图3-5所示,在"添加节点"菜单中选择"大模型"节点。

图3-5 添加节点

单击"大模型"后,画布中即可添加一个大模型节点,如图3-6所示。节点添加成功后,用户可手动拖拽调整其位置;也可直接单击工具栏中的"优化布局"按钮,由系统自动对齐和排列画布中的所有节点。

图3-6 添加大模型节点
直接在源节点的连接点上按住鼠标左键,将连线拖拽至画布的空白区域后松开,系统同样会弹出"选择节点"菜单。通过此方法新建的节点,系统会自动为其与源节点建立连接线,省去了后续手动连线的步骤,操作更为高效。读者可自行操作一下。

2.建立连接

通过工具栏添加到画布的节点,在初始状态下是相互独立的。只有通过"连线"将各个节点按业务逻辑串联起来,数据才能流转,工作流也才能按照既定的先后顺序执行。

将鼠标指针移至源节点(前置节点)右侧的连接点,按住左键拖拽至目标节点(后置节点)左侧的连接点后松开,即可完成连线的建立。单击连接线,按"delete"键可删除不需要的连接。

在"生成文章摘要"的工作流中。大模型的前置节点为"开始",后置节点为"结束"。按照上述方法,先将"开始"节点连接至"大模型"节点,再将"大模型"节点连接至"结束"节点。完成连接后的工作流如图3-7所示。

图3-7 建立连接

3.设置参数

添加节点并完成连接后,仅搭建了工作流的"骨架"。要使工作流真正运转,还需要进行参数设置,即赋予各节点具体的执行指令与数据处理。尽管不同类型节点的参数各异,但其设置方法基本一致。在画布中单击目标节点,页面右侧即可弹出该节点的配置对话框,所有的参数配置均在此处完成。

以"生成文章摘要"工作流为例,单击画布中的"大模型"节点,右侧配置对话框中展示了该节点的可配置项,主要包括模型选择(如豆包、DeepSeek、GLM等)、系统提示词、用户提示词等,如图3-8所示。

图3-8 设置参数

系统提示词用于为大模型提供全局性的系统级指导,主要用于设定人设、任务边界与回复逻辑。例如,可输入:"你是一个专业的文本摘要提取专家,请根据用户提供的文章内容,生成一段100字左右的精炼摘要。"

3.3.3 数据流转

工作流节点之间的连线不仅定义了任务的执行顺序,更是数据流动的"管道"。这种在节点之间传递的数据,在扣子平台中被称为"变量"。理解并正确配置变量,是让工作流真正运转起来的关键。按照数据流向的不同,变量可以分为输入变量和输出变量两类。

  1. 输入变量:节点执行任务所需要的"原材料"。它的值可以是上游节点通过连线传递过来的动态数据,也可以是开发者在配置对话框中手动填写的固定文本。
  2. 输出变量:节点完成任务后产出的"成品"。节点处理完输入的数据后,会将结果封装在输出变量中,以便传递给下一个节点继续处理。

外部数据首先进入"开始"节点的输入变量,随后依次流经各个中间处理节点的输入与输出变量,最终汇聚到"结束"节点的输入变量并输出给用户,从而形成一条完整的数据链路。

接下来,基于前文搭建的"生成文章摘要"工作流骨架,介绍如何通过配置变量打通节点间的数据链路。

(1)配置开始节点

单击"开始"节点,在右侧参数配置对话框中进行如下设置,如图3-9所示。

步骤1:修改变量标识:将默认变量名"input"修改为"article_content",做到见名知意,并勾选"必填"选项。

步骤2:展开详细配置:单击变量所在行右侧的 图标,显示详细配置项。

步骤3:添加描述信息:填写该变量的用途说明(如"用户输入的待提取摘要的原始文章"),这有助于大模型更好地理解参数上下文。

  1. 大模型节点默认有一个名为input的输入参数,还可以单击"输入"右侧的"+"添加输入新的变量。

图3-9 设置开始节点的输入参数

(2)配置大模型节点

大模型节点的参数较多,本例中仅配置和数据流转相关的几个参数,如:输入参数、用户提示词及输出。

用户提示词是用户在对话界面主动输入、发送给智能体的指令与问题,是触发智能体响应与功能调用的直接入口。在普通单轮对话中,用户提示词是用户直接输入的文字;但在工作流场景下,它通常是一个"固定指令文本+动态输入变量"的组合体。它充当了将上游数据具体化为大模型指令的"组装模板"。

单击"大模型"节点,在右侧参数配置对话框中设置相关参数,如图3-10所示。

图3-10 设置大模型节点的输入参数

配置大模型节点的具体操作步骤如下。

步骤1:绑定输入变量:单击输入变量input右侧的 引用按钮,在弹出的下拉列表中选择"开始"节点下的"article_content",即将开始节点接收的数据传递给大模型节点,作为其输入变量。

步骤2:设置用户提示词:在"用户提示词"输入框中输入指令,例如:"请提取以下文章内容的摘要:{{input}}"。此处通过将"任务指令(提取摘要)"与"动态数据({{input}})"在自然语言层面进行强行绑定,让大模型既明白数据是什么,又明白要对数据执行什么操作。

需要注意的是,此处的"{{input}}"引用的是大模型的输入变量"input",因此必须与大模型节点的输入变量名保持一致。在实际输入时,只需要在英文输入法状态下键入左半边大括号 "{",系统便会自动弹出变量补全提示,单击选择相应变量即可完成快速拼接,如图3-11所示。

图3-11 拼接输入变量

完成上述配置后,当工作流被触发运行时,系统会自动将"开始"节点接收到的真实文章文本替换掉{{input}}占位符,从而将动态数据真正交予大模型处理。
大模型节点的"输入变量"主要用于在底层建立节点间的数据传输通道;而在"用户提示词"中拼接变量,则是为了将动态数据嵌入到自然语言指令中,为其赋予具体的语义上下文。只有将数据放入提示词模板中,大模型才能准确地理解它拿到的是什么数据、需要执行什么操作,而不仅是一个冷冰冰的参数值。

大模型节点默认有一个名为"output"的输出变量,可以在输出区域中配置输出的格式,支持文本、Markdown、JSON三种格式的输出,默认为JSON格式,如图3-12所示。

图3-12 大模型节点的输出配置

(3)配置结束节点

作为工作流的最终出口,"结束"节点的配置相对简单。其核心在于设定工作流向用户交付结果,平台提供了"返回变量"和"返回文本"两种模式。

  • 返回变量:直接将上游节点传递过来的变量本身作为最终结果输出,适用于无需额外加工、直接输出数据的场景。
  • 返回文本:允许开发者自定义一段文本模板,并在其中通过{{变量名}}的语法灵活引用上游变量。这种方式常用于对最终结果进行格式化包装,比如在摘要前加上"以下是为您生成的摘要:"等引导语,使工作流按照预设的样式和结构输出,提升用户的阅读体验。

单击结束节点,然后在右侧参数配置对话框中单击输出变量output右侧的 引用按钮,在弹出的下拉列表中选择"大模型"节点下的"output"作为输出变量,如图3-13所示。

图3-13 输出节点的配置

相关推荐
todoitbo1 分钟前
本地图库语义搜索实战:接上蓝耘元生代,让“傍晚的海边“能搜到图
人工智能·ai·api·工具实战
羊羊小栈6 分钟前
基于「YOLO目标检测 + 多模态AI分析」的水稻病害智能检测分析预警系统(LangChain框架)
人工智能·yolo·目标检测·毕业设计·创业创新·大作业
IT_陈寒8 分钟前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
lisw0512 分钟前
提升社会科学领域的计算可重复性
人工智能·数字时代
HyperAI超神经16 分钟前
HyperAI 入选 36氪「East Forward 2026 出海全球化拓新企业」
人工智能·深度学习·全球化企业
9呀18 分钟前
VS Code Codex 多窗口使用与补丁记录
人工智能
七仔啊21 分钟前
安防通行人脸抓拍识别
人工智能
SoonITer25 分钟前
怎样构建一个 Agent-friendly 的网站
前端·agent
梦在远山后27 分钟前
从手写 Loop 到可恢复 Runtime:用 LangGraph、PostgreSQL Checkpoint 与 AG-UI 跑通中断恢复
python·langchain·agent
guoran_shini1 小时前
SVD矩阵分解
人工智能