Coze智能体开发指南3:智能体的工作流

技术解析扣子Agent

大家好,前两期文章中,我给大家科普了如何创建一个Coze智能体并进行基本设置,以及如何给智能体添加插件以拓展其能力。

Coze智能体开发指南1:智能体的创建与基本设置

Coze智能体开发指南2:智能体的插件添加与调用

本期我将继续给大家介绍,如何利用工作流来让你的智能体起飞~~

本期内容非常重要,因为“工作流编排”本身是一个非常重要的方法。只要你掌握了这个方法的精髓,不管你用的是Coze,还是Dify,甚至你用Langchain,都保证能指数级地提升你的生产力。

另一方面,从更抽象的意义上来讲,提升我们对工作流的认识,养成识别、固化、评估、改善工作流的习惯,也将对我们的生活、学习、工作带来无穷的益处。

在进入Coze之前,我们先来聊一些概念上的东西。


什么是工作流

各式各样的工作流

工作流的概念并不难理解,即为了实现一个业务逻辑或者完成特定的任务,而设置的一系列行动指令。如果你在做一件事情时遵循了一定的步骤,环节,那么你就是在执行一个工作流。

我们的生活中充满了工作流:

打开一道菜谱,从原料准备,到食材处理,再到烹饪调味,这就是完成这道菜的工作流。

翻开员工手册,上面记录的各种SOP(Standard Operating Procedure,标准操作流程),是对公司特定业务的标准操作步骤和要求的描述,这也是经典的工作流。

甚至你看看程序员屏幕上的一行行代码,包含着数不清的实例化、赋值、计算、函数调用、条件判断、循环等等,这也是一种工作流。*

事实上,只要你耐心思考一下你是如何完成某件事的,你就一定能写出做这件事的“工作流”。

为什么需要工作流

工作流的意义,我认为在于降低业务处理的复杂性,使我们有条件更精细地管理流程,提升工作质量

通过对一项事务的处理过程进行分拆,breakdown,我们才能更深入地理解所从事的活动,才有可能更精细地管控流程,提高工作质量。

同时,当我们的需求发生变化时,我们不需要将整个业务或智能体推倒重来,而只需要对所涉及的具体流程节点,按照需求的逻辑进行修改,或者对流程节点进行增删改即可。这样便大大提升了智能体的适应性和灵活性

Coze中的工作流

需要注意的是,在Coze中,工作流的概念其实有三个层次:

第一,Prompt层次的工作流。

即在单一智能体的系统Prompt中设定的,处理某种任务的顺序要求。它完全由用户使用自然语言描述而成,是最简单的工作流设定。

第二,是指作为单一智能体的技能的工作流(也是我们本篇文章的主题)。

它的本质是对大模型处理数据信息的过程进行编程,只不过Coze以低代码的形式,让用户能够在一块可视化的画布上,通过拖拽节点的方式来快速搭建工作流。当工作流技能被触发时,智能体将按照用户提前设置的流程、步骤来完成数据和信息的处理。

第三,其实就是我们在前面创建智能体时已经碰到过的,多Agent的编排模式

即由用户创建一个由多个Agent节点(即我们正在学习的单一智能体)组成的智能体,这些单一Agent节点可以拥有各自独立的提示词、配置不同的插件、知识库甚至工作流技能,然后按照用户设定的业务处理流程(即工作流)连接,从而实现通过多个Agent节点之间的分工协作来解决复杂任务的效果。

下面我们来具体看看如何在Coze中为单一智能体创建和添加工作流技能。

创建并工作流类型

首先,我们需要进入智能体的技能界面,找到添加工作流的加号按钮。

picture.image

点击加号后会弹出一个关于工作流的资源窗口。再点击左边的创建工作流蓝色按钮,会出现一个包括两个选项的下拉菜单。这时,你需要选择工作流的类型。

picture.image

Coze提供了两种类型的工作流模式供你选择,官方定义如下:

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

2.对话流(Chatflow):是基于对话场景的特殊工作流,更适合处理对话类请求。对话流通过对话的方式和用户交互,并完成复杂的业务逻辑。对话流适用于 Chatbot 等需要在响应请求时进行复杂逻辑处理的对话式应用程序,例如个人助手、智能客服、虚拟伴侣等。

看起来有点绕,其实你只需要思考一下,在你所希望创建的工作流中,你向智能体输入指示之后,你希望数据和信息是如何流动的。我给这两类工作流换了个称呼:

1.顺序式工作流:如果你只需要数据和信息“顺流而下”,按照预设好的步骤、程序,自动执行业务逻辑,其间不需要你再去补充要求、给出新指示等实施任何干预,那你就选择工作流(Workflow)(这个名字取得真的很混淆......)

2.交互式工作流:如果你想建立的这个工作流的执行场景,涉及到数据和信息需要在用户与智能体之间往返,比如需要智能体在不同的工作节点对用户进行补充询问,然后根据用户新的输入或选择,来改变后续的数据或信息流动方向,那么你就该选择对话流(Chatflow)

鉴于我们是新手扫盲教程,所以接下来就用顺序式工作流来为大家讲解如何编排。

于是,我们点击前述下拉菜单中的“创建工作流”,进行工作流的基本信息填写。

这里,我打算给我们的万事通添加一个名叫“know_your_boss"的工作流(注意名字不能用中文)。这个工作流的目标,就是对用户的输入内容进行初步的理解分析,以帮助智能体的LLM能更清晰地理解用户需求,从而提高输出内容的质量。

picture.image

编排工作流

画布界面介绍

点击确认后,我们就完成了工作流的创建,进入一片大大的可以自由编排工作流的可视化画布中。

大家可以看到,目前空旷的画布中已经有两个默认节点了,即开始结束。我们要做的,就是根据我们对工作流的规划,按照逻辑顺序在开始和结束之间添加内容(节点)。

picture.image

首先,我们来看一下界面最底部的一排,它们是现成的工作流模板。

你将鼠标移到其中任一模版上面,就会将你的工作流画布(可以看到左上方的工作流名称依然是我们的know_your_boss)中的内容就会变成对应工模板的内容。你可以通过这种方式,找一个与你想做的工作流逻辑类似的模版,迅速改一个你自己的版本。

需要注意的是,它们貌似只会在你没有主动给画布上添加任何东西时出现。

picture.image

如果你想按照自己的想法往工作流中增加内容,那就点击下方的“添加节点”按钮,这时候会弹出一个内容丰富的节点菜单,你可以根据需要,从中选择合适的节点,然后加入到你的工作流中。

picture.image

鉴于节点的种类繁多,没法一一给大家详细介绍,所以下面我会主要讲一下节点设置的共性原理。至于各类节点的具体使用方法,建议大家在实操中结合官方文档来学习感受。(后续我可能会结合自己的使用,跟大家分享一些心得体会)

picture.image

节点概述与设置原理

  • 节点是什么? 节点,其实就代表了你工作流中的一个独立的步骤或逻辑。

特定节点会以上一个节点输出的内容作为输入,然后进行独立的数据处理、任务操作或算法运行后,将信息再输出给下一个节点。这样形成一个一环扣一环的逻辑链条,从而实现工作流。

  • 节点设置的基本原理

首先,你要决定自己的工作流中需要什么样的节点。

这个其实是你的工作流设计的问题,你需要根据你对工作流功能的设想,一步一步地分析数据是如何在这个工作流中流动的,会经过哪些环节。Coze提供了包括业务逻辑、会话管理、数据库、知识库、图像处理、组件等多种大类的30多种节点供你选择。

当你思路不是很清晰的时候,不妨点开这些节点,看看他们的设置内容或者读一读文档中的介绍,说不定会有意外收获。

然后,你需要考虑特定节点在你的工作流中的位置。

除了开始、结束、输入、输出等特殊节点外,大部分节点都同时拥有输入和输出两个参数,因为只有这样,它才能在链条中与上下游的节点相连。

因此,你需要想清楚,现在设置的这个节点,需要什么信息作为输入(这决定了它该放在哪个节点后面),它处理的信息,应该输出给哪个节点进行下一步处理(这决定了它该放在哪个节点的前面)。

picture.image

然后,你再根据自己的需求来设定节点内部的数据处理方式。

你点击任一节点,画面右边就会弹出这个节点的设置面板,每个节点因其功能作用不同,需要具体设置的内容也不同。

picture.image

节点设置演示

现在,我就以一个“大模型”节点来演示如何设置节点。

大模型节点的功能,就是在你的工作流中的特定环节调用一个大模型,让它根据输入的内容和提示词来生成回复,通常用于执行文本生成任务。

因为我设想的工作流know_your_boss的功能是对用户输入的内容进行初步的理解分析,然后生成一个便于智能体理解的版本,其本质就是一种改写。所以,我可以使用大模型节点来负责这个改写工作。

picture.image

大家可以看到,大模型节点的设置面板,从上到下包括:模型、技能、输入、系统提示词、用户提示词、输出、异常忽略(新手可忽略)。

模型,就是你希望用哪个模型来做这个事,比如我认为DeepSeek-R1可能更擅长改写这个工作,我就把这里的模型改成它即可。

技能,跟智能体的设置原理一模一样,即你可以根据需要给这个特定节点再添加插件、工作流和知识库。这其实有点无限俄罗斯套娃的感觉,但只要能实现提升智能体输出质量的效果,没有做不到,只有想不到。

输入,决定了这个大模型节点是接在哪一个节点之后。我不想搞得太复杂,所以直接接在“开始”之后即可。大家可以看到,目前我们输入部分已经有一个默认参数,参数名为input,它的任务是承接上一个节点输出的值。如何设定呢:

首先,通过拖拽连线的方式,将大模型节点与其前序节点(本例中为“开始”)相连接;然后,点击右侧面板上“input”这个参数的“变量值”一栏右边的六边形小按钮,就可以看到“开始”节点出现了,这意味着我们可以将“开始”节点的输出值,与大模型的input参数的值关联起来。

(至于变量类型、自定义变量之类的内容,已经超出小白教程的范围了,建议大家多实操,然后学习一些简单的编程语言,就能轻松理解和驾驭了。)

picture.image

系统提示词&用户提示词:这两个内容很好理解,就是对大模型的Prompt。

系统提示词一般涉及大模型的人设、技能等不会随意改变的背景设定相关的内容。而用户提示词则与大模型每次处理任务需要读取的上下文、待处理资料有关。

由于我们这里需要LLM帮我们改写从“开始”节点传过来的用户输入内容,所以我们可以在用户提示词部分引用这个值而不需要再抄写一遍,而这个值刚刚已经保存到”input“参数里了,所以我们可以直接引用input变量。

同样的,Coze贴心的提供了提示生成功能,你可以点击右边的星星按钮,然后输入需求,让Coze帮你组织语言。

picture.image

输出,就是我们这个工作流要向下一个节点(本例中是“结束”)输入的内容。你只需要把这个节点跟下一个节点连接起来,然后根据下一个节点要执行的动作,来决定你输出的值得类型、格式。一般文字处理类的工作流,都不需要再设置什么了。

但是你一定要记得在“结束”节点那里,把大模型节点的输出值关联起来。

picture.image

以上便是对大模型节点的一个简单设置,同时,我们的工作流也完成了。

测试并发布工作流

由于在Coze中,向智能体添加的工作流,必须是已经发布的工作流。所以我们还需要将写好的工作流发布。

发布之前可以点击下方的试运行测试一下逻辑通不通顺。

这里,我向它提了一个很模糊的问题:我想知道龙与地下城的最新信息。

picture.image

大家可以看到,跑是跑通了,但是出来的结果跟我们的想法并不一致。我要的是它直接帮我把我的需求改写,而它只是给了我如何改写的建议。这样,我就需要去调整大模型节点的提示设置了。

picture.image

于是我们来调整下Prompt,在限制部分加一点点内容。

picture.image

现在就好多了。

picture.image

测试完成后,点击画布右上角的发布按钮,就大功告成啦。

picture.image

添加和调用工作流

接下来,我们回到智能体设置界面,再次点击“工作流”右侧的加号。

点击加号后,会弹出一个资源窗口,里面包含了你目前能使用的所有工作流。首先,是你已经添加进你的资源库的工作流。你复制的官方工作流模板,以及自己创建的工作流都会出现在这里。

这里可以看到,我们刚刚创建的工作流已经出现了。

picture.image

需要说明的是,你也可以点击官方示例,看看Coze官方为你准备的一系列工作流模板。我们可以通过学习这些模板,来理解工作流的具体运行规则,在此基础上修改甚至独立创造属于自己的工作流。其中,复制的意思,就是复制进你自己的资源。

picture.image

与插件的使用一样,点击添加后,对应的工作流就会添加到你的智能体的“技能栏”中。

picture.image

你只需要在系统Prompt中明确调用该工作流的规则即可。调用的方法是在Prompt编辑区域输入1个花括号({),然后你就能选择已经添加的各种技能:

picture.image

接着,输入问题后可以看到,工作流是否被触发:

picture.image

好了,以上便是如何给Coze智能体增加工作流技能的过程,虽然我已经尽力讲的详细些,但其中还是不可避免的会遗漏一些细节。强烈建议大家动手操作一遍,出问题的地方多看看文档,咨询咨询AI或者给我留言,相信你一定能很快掌握它。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
DataSail CDC 数据整库实时入仓入湖实践
在线数据库数据导入到数仓分析的链路已经存在多年,随着近年来实时计算的发展,业务希望有延迟更低、运维更便捷、效率更高的CDC同步通道。本次分享主要介绍DataSail实现CDC整库实时同步的技术方案和业务实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论