扣子工作流详解

《扣子开发AI Agent智能体应用(人工智能技术丛书)》(宋立桓,王东健,陈铭毅,程东升)【摘要 书评 试读】- 京东图书

《扣子开发AI Agent智能体应用》案例重现 开发agent智能体的书籍-CSDN博客

工作流是指一系列相互关联的步骤或任务,用于完成特定的业务过程或项目。它定义了任务的顺序、执行者以及相关的条件和规则,以确保流程的顺利进行和最终目标的达成。本章将介绍扣子工作流的分类、解决的问题、逻辑结构。

工作流及其分类

工作流在日常工作中很常见。例如,财务报销要经过填写报销单、提交发票、财务审核、分管领导审核等步骤,就是典型的工作流;软件开发领域的CI/CD流水线也是一种工作流。扣子的工作流与传统工作流类似,但也有不同之处。传统工作流既可以手动执行,也可以自动执行,或者二者结合。扣子的工作流是一种自动执行多个相关步骤的可复用流程,一个Bot可以使用多个工作流,即Bot可以根据用户的行为选择并执行不同的工作流。

1. 扣子工作流

扣子工作流是一种通过可视化方式,组合插件、大语言模型、代码块等功能节点,用于实现复杂业务逻辑的流程编排。它允许用户通过拖放的方式,将不同的功能节点连接起来,形成一个完成特定任务的工作流程,使得解决问题的逻辑更加清晰,输出更加稳定和可靠。讲到这里,自然会产生一个疑问:为什么大模型不直接执行完成相关的任务,告诉我们结果就行?为什么还要引入一个工作流?

原因很简单,虽然现在的大模型比较智能,但是还没有达到绝顶智能的程度。大模型(或者说生成式AI)是基于概率来生成内容的,这就意味着它并不是每次都能给出符合要求的结果,特别是对返回结果要求比较精确的场景。

工作流的核心在于将大模型的能力与特定的业务逻辑相结合,通过系统化、流程化的方法来实现高效、可扩展的AI应用开发。工作流也是对当前大模型能力不足的一种补偿机制,在大模型智能化程度还不够高的时候,通过人为编排的工作流(注入人的智能),让智能体具有更高的可用性和可靠性,从而提升用户体验。

2. 扣子工作流的分类

扣子提供以下两种类型的工作流:

(1)工作流(Workflow):用于处理功能类的请求,可通过顺序执行一系列节点实现某个功能。适合数据的自动化处理场景,例如生成行业调研报告、生成一张海报、制作绘本等。

(2)对话流(Chatflow):是基于对话场景的特殊工作流,更适合处理对话类请求。对话流通过对话的方式与用户交互,并完成业务逻辑。

相较于工作流而言,对话流更适合处理对话场景下的交互逻辑。每个对话流都绑定了一个会话,运行时可以从此会话中读取历史消息,同时将本次运行对话流产生的消息记录在这个会话中,相当于一个拥有了记忆的工作流。

你如果需要搭建一个智能体,智能体本身支持上下文和会话能力,那么可以随意选择工作流或对话流。

如果你需要搭建一个对话式的AI应用,例如AI助手、智能体客服等基于对话方式交互的AI应用,推荐你使用对话流。对话流中的大模型可以读取会话上下文、管理会话,还可以搭建对话式的用户界面,并发布到各种社交通信软件中。

如果你需要搭建一个工具类的AI应用,用来批量处理数据、实现任务流程的自动化,可以选择工作流实现。

工作流能解决什么问题

既然我们已经对扣子的工作流有所了解,那么工作流能解决什么问题?或者说在什么情况下要使用工作流?根据作者自己的理解给出一些适用场景,供读者参考。

1. 使用提示词无法达到预期效果的场景

在Coze平台搭建Bot智能体时,一般先从编写提示词开始。有时我们按照提示词工程技巧编写了清晰明确的结构化指令,经过反复迭代优化,仍然达不到预期效果,那么可以考虑采用工作流。例如,在长文本写作(如调研报告)中,先要收集相关资料,生成写作大纲,划分各个章节,再对各个章节进一步收集资料、逐步生成内容,最后进行总结。仅仅通过提示词,大模型可能难以产生一篇结构合理、内容翔实的文章,这时可以通过工作流来实现。

2. 需要多次调用插件或外部工具的场景

有些大模型具有Function Call能力,可以调用外部工具。但如果需要调用多个外部工具,且它们具有严格依赖关系时,大模型可能不是每次都能很好地完成目标。例如,我们需要根据一个URL获取网页内容、总结要点、生成思维导图。其中,“网页内容抓取”和“生成思维导图”两个步骤都需要调用外部工具(插件),中间还需要大模型来总结要点。在这种情况下,通过工作流可以实现高效的流程管理。

3. 需要使用代码加工数据或生成响应的场景

我们利用大模型虽然能够产出还不错的内容,但是很难对数据进行精确处理。在这种情况下,可以使用工作流中的代码节点来解决精确处理的问题。在Coze官方文档中介绍了一个使用工作流和代码节点生成随机数的例子,读者可以查阅一下。

4. 需要根据某个条件执行不同分支来处理的场景

例如,开发一个答题Bot,根据用户选择的不同选项来回复不同的内容。

5. 需要在一次用户请求中多次输出消息的场景

大模型的工作方式是一问一答,即根据输入产生输出。在一些比较复杂的应用中,可能需要对一次用户的问题回复多条消息;或者一次完整输出的耗时较长,为了提高用户体验,需要分为多次输出。在这种场景中,可以在工作流中使用消息节点来实现多次输出。

扣子工作流的逻辑结构

简单来说,扣子工作流是一个有唯一输入和唯一输出的有向无环图。一个工作流是由一系列首尾相连的功能节点构成的,如图4-1所示。工作流的核心在于节点,节点是一个具有特定功能的独立模块,代表一个独立的步骤或逻辑。这些节点负责处理数据、执行任务和运行算法,并且它们都具备输入和输出。每个工作流都默认包含一个开始节点和一个结束节点。

图4-1  扣子工作流的逻辑结构

除了开始节点和结束节点是每个工作流中固定且唯一的节点之外,其他节点都可以任意添加。最简单的工作流可以只有一个开始节点和一个结束节点。开始节点是工作流的起始节点,定义启动工作流所需的输入参数。开始节点默认有一个输入参数 input,表示用户在本轮对话中输入的原始内容。结束节点是工作流的最终节点,用于返回工作流运行后的结果。结束节点支持两种返回方式:返回变量和返回文本。

通过引用节点的输出,你可以将节点连接在一起,形成一个无缝的操作链。例如,你可以在代码节点的输入中引用大模型节点的输出,这样代码节点就可以使用大模型节点的输出。在工作流编辑页面中,你可以看到这两个节点是连接在一起的。创建工作流就像搭积木,不同的积木(节点)可以自由组合,搭建成不同的形状(功能)。将一个任务分解为多个子任务,每个子任务对应一个节点,通过数据流将这些节点链接起来,便形成了工作流。

比如下图就是一个简单的工作流,包括3个节点:开始节点、大模型节点和结束节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值