大家好,前两期文章中,我给大家科普了如何创建一个Coze智能体并进行基本设置,以及如何给智能体添加插件以拓展其能力。
本期我将继续给大家介绍,如何利用工作流来让你的智能体起飞~~
本期内容非常重要,因为“工作流编排”本身是一个非常重要的方法。只要你掌握了这个方法的精髓,不管你用的是Coze,还是Dify,甚至你用Langchain,都保证能指数级地提升你的生产力。
另一方面,从更抽象的意义上来讲,提升我们对工作流的认识,养成识别、固化、评估、改善工作流的习惯,也将对我们的生活、学习、工作带来无穷的益处。
在进入Coze之前,我们先来聊一些概念上的东西。
各式各样的工作流
工作流的概念并不难理解,即为了实现一个业务逻辑或者完成特定的任务,而设置的一系列行动指令。如果你在做一件事情时遵循了一定的步骤,环节,那么你就是在执行一个工作流。
我们的生活中充满了工作流:
打开一道菜谱,从原料准备,到食材处理,再到烹饪调味,这就是完成这道菜的工作流。
翻开员工手册,上面记录的各种SOP(Standard Operating Procedure,标准操作流程),是对公司特定业务的标准操作步骤和要求的描述,这也是经典的工作流。
甚至你看看程序员屏幕上的一行行代码,包含着数不清的实例化、赋值、计算、函数调用、条件判断、循环等等,这也是一种工作流。*
事实上,只要你耐心思考一下你是如何完成某件事的,你就一定能写出做这件事的“工作流”。
为什么需要工作流
工作流的意义,我认为在于降低业务处理的复杂性,使我们有条件更精细地管理流程,提升工作质量。
通过对一项事务的处理过程进行分拆,breakdown,我们才能更深入地理解所从事的活动,才有可能更精细地管控流程,提高工作质量。
同时,当我们的需求发生变化时,我们不需要将整个业务或智能体推倒重来,而只需要对所涉及的具体流程节点,按照需求的逻辑进行修改,或者对流程节点进行增删改即可。这样便大大提升了智能体的适应性和灵活性
Coze中的工作流
需要注意的是,在Coze中,工作流的概念其实有三个层次:
第一,Prompt层次的工作流。
即在单一智能体的系统Prompt中设定的,处理某种任务的顺序要求。它完全由用户使用自然语言描述而成,是最简单的工作流设定。
第二,是指作为单一智能体的技能的工作流(也是我们本篇文章的主题)。
它的本质是对大模型处理数据信息的过程进行编程,只不过Coze以低代码的形式,让用户能够在一块可视化的画布上,通过拖拽节点的方式来快速搭建工作流。当工作流技能被触发时,智能体将按照用户提前设置的流程、步骤来完成数据和信息的处理。
第三,其实就是我们在前面创建智能体时已经碰到过的,多Agent的编排模式。
即由用户创建一个由多个Agent节点(即我们正在学习的单一智能体)组成的智能体,这些单一Agent节点可以拥有各自独立的提示词、配置不同的插件、知识库甚至工作流技能,然后按照用户设定的业务处理流程(即工作流)连接,从而实现通过多个Agent节点之间的分工协作来解决复杂任务的效果。
下面我们来具体看看如何在Coze中为单一智能体创建和添加工作流技能。
首先,我们需要进入智能体的技能界面,找到添加工作流的加号按钮。
点击加号后会弹出一个关于工作流的资源窗口。再点击左边的创建工作流蓝色按钮,会出现一个包括两个选项的下拉菜单。这时,你需要选择工作流的类型。
Coze提供了两种类型的工作流模式供你选择,官方定义如下:
1.工作流(Workflow):用于处理功能类的请求,可通过顺序执行一系列节点实现某个功能。适合数据的自动化处理场景,例如生成行业调研报告、生成一张海报、制作绘本等。
2.对话流(Chatflow):是基于对话场景的特殊工作流,更适合处理对话类请求。对话流通过对话的方式和用户交互,并完成复杂的业务逻辑。对话流适用于 Chatbot 等需要在响应请求时进行复杂逻辑处理的对话式应用程序,例如个人助手、智能客服、虚拟伴侣等。
看起来有点绕,其实你只需要思考一下,在你所希望创建的工作流中,你向智能体输入指示之后,你希望数据和信息是如何流动的。我给这两类工作流换了个称呼:
1.顺序式工作流:如果你只需要数据和信息“顺流而下”,按照预设好的步骤、程序,自动执行业务逻辑,其间不需要你再去补充要求、给出新指示等实施任何干预,那你就选择工作流(Workflow)(这个名字取得真的很混淆......)
2.交互式工作流:如果你想建立的这个工作流的执行场景,涉及到数据和信息需要在用户与智能体之间往返,比如需要智能体在不同的工作节点对用户进行补充询问,然后根据用户新的输入或选择,来改变后续的数据或信息流动方向,那么你就该选择对话流(Chatflow)
鉴于我们是新手扫盲教程,所以接下来就用顺序式工作流来为大家讲解如何编排。
于是,我们点击前述下拉菜单中的“创建工作流”,进行工作流的基本信息填写。
这里,我打算给我们的万事通添加一个名叫“know_your_boss"的工作流(注意名字不能用中文)。这个工作流的目标,就是对用户的输入内容进行初步的理解分析,以帮助智能体的LLM能更清晰地理解用户需求,从而提高输出内容的质量。
画布界面介绍
点击确认后,我们就完成了工作流的创建,进入一片大大的可以自由编排工作流的可视化画布中。
大家可以看到,目前空旷的画布中已经有两个默认节点了,即开始和结束。我们要做的,就是根据我们对工作流的规划,按照逻辑顺序在开始和结束之间添加内容(节点)。
首先,我们来看一下界面最底部的一排,它们是现成的工作流模板。
你将鼠标移到其中任一模版上面,就会将你的工作流画布(可以看到左上方的工作流名称依然是我们的know_your_boss)中的内容就会变成对应工模板的内容。你可以通过这种方式,找一个与你想做的工作流逻辑类似的模版,迅速改一个你自己的版本。
需要注意的是,它们貌似只会在你没有主动给画布上添加任何东西时出现。
如果你想按照自己的想法往工作流中增加内容,那就点击下方的“添加节点”按钮,这时候会弹出一个内容丰富的节点菜单,你可以根据需要,从中选择合适的节点,然后加入到你的工作流中。
鉴于节点的种类繁多,没法一一给大家详细介绍,所以下面我会主要讲一下节点设置的共性原理。至于各类节点的具体使用方法,建议大家在实操中结合官方文档来学习感受。(后续我可能会结合自己的使用,跟大家分享一些心得体会)
节点概述与设置原理
- 节点是什么? 节点,其实就代表了你工作流中的一个独立的步骤或逻辑。
特定节点会以上一个节点输出的内容作为输入,然后进行独立的数据处理、任务操作或算法运行后,将信息再输出给下一个节点。这样形成一个一环扣一环的逻辑链条,从而实现工作流。
- 节点设置的基本原理
首先,你要决定自己的工作流中需要什么样的节点。
这个其实是你的工作流设计的问题,你需要根据你对工作流功能的设想,一步一步地分析数据是如何在这个工作流中流动的,会经过哪些环节。Coze提供了包括业务逻辑、会话管理、数据库、知识库、图像处理、组件等多种大类的30多种节点供你选择。
当你思路不是很清晰的时候,不妨点开这些节点,看看他们的设置内容或者读一读文档中的介绍,说不定会有意外收获。
然后,你需要考虑特定节点在你的工作流中的位置。
除了开始、结束、输入、输出等特殊节点外,大部分节点都同时拥有输入和输出两个参数,因为只有这样,它才能在链条中与上下游的节点相连。
因此,你需要想清楚,现在设置的这个节点,需要什么信息作为输入(这决定了它该放在哪个节点后面),它处理的信息,应该输出给哪个节点进行下一步处理(这决定了它该放在哪个节点的前面)。
然后,你再根据自己的需求来设定节点内部的数据处理方式。
你点击任一节点,画面右边就会弹出这个节点的设置面板,每个节点因其功能作用不同,需要具体设置的内容也不同。
节点设置演示
现在,我就以一个“大模型”节点来演示如何设置节点。
大模型节点的功能,就是在你的工作流中的特定环节调用一个大模型,让它根据输入的内容和提示词来生成回复,通常用于执行文本生成任务。
因为我设想的工作流know_your_boss的功能是对用户输入的内容进行初步的理解分析,然后生成一个便于智能体理解的版本,其本质就是一种改写。所以,我可以使用大模型节点来负责这个改写工作。
大家可以看到,大模型节点的设置面板,从上到下包括:模型、技能、输入、系统提示词、用户提示词、输出、异常忽略(新手可忽略)。
模型,就是你希望用哪个模型来做这个事,比如我认为DeepSeek-R1可能更擅长改写这个工作,我就把这里的模型改成它即可。
技能,跟智能体的设置原理一模一样,即你可以根据需要给这个特定节点再添加插件、工作流和知识库。这其实有点无限俄罗斯套娃的感觉,但只要能实现提升智能体输出质量的效果,没有做不到,只有想不到。
输入,决定了这个大模型节点是接在哪一个节点之后。我不想搞得太复杂,所以直接接在“开始”之后即可。大家可以看到,目前我们输入部分已经有一个默认参数,参数名为input,它的任务是承接上一个节点输出的值。如何设定呢:
首先,通过拖拽连线的方式,将大模型节点与其前序节点(本例中为“开始”)相连接;然后,点击右侧面板上“input”这个参数的“变量值”一栏右边的六边形小按钮,就可以看到“开始”节点出现了,这意味着我们可以将“开始”节点的输出值,与大模型的input参数的值关联起来。
(至于变量类型、自定义变量之类的内容,已经超出小白教程的范围了,建议大家多实操,然后学习一些简单的编程语言,就能轻松理解和驾驭了。)
系统提示词&用户提示词:这两个内容很好理解,就是对大模型的Prompt。
系统提示词一般涉及大模型的人设、技能等不会随意改变的背景设定相关的内容。而用户提示词则与大模型每次处理任务需要读取的上下文、待处理资料有关。
由于我们这里需要LLM帮我们改写从“开始”节点传过来的用户输入内容,所以我们可以在用户提示词部分引用这个值而不需要再抄写一遍,而这个值刚刚已经保存到”input“参数里了,所以我们可以直接引用input变量。
同样的,Coze贴心的提供了提示生成功能,你可以点击右边的星星按钮,然后输入需求,让Coze帮你组织语言。
输出,就是我们这个工作流要向下一个节点(本例中是“结束”)输入的内容。你只需要把这个节点跟下一个节点连接起来,然后根据下一个节点要执行的动作,来决定你输出的值得类型、格式。一般文字处理类的工作流,都不需要再设置什么了。
但是你一定要记得在“结束”节点那里,把大模型节点的输出值关联起来。
以上便是对大模型节点的一个简单设置,同时,我们的工作流也完成了。
由于在Coze中,向智能体添加的工作流,必须是已经发布的工作流。所以我们还需要将写好的工作流发布。
发布之前可以点击下方的试运行测试一下逻辑通不通顺。
这里,我向它提了一个很模糊的问题:我想知道龙与地下城的最新信息。
大家可以看到,跑是跑通了,但是出来的结果跟我们的想法并不一致。我要的是它直接帮我把我的需求改写,而它只是给了我如何改写的建议。这样,我就需要去调整大模型节点的提示设置了。
于是我们来调整下Prompt,在限制部分加一点点内容。
现在就好多了。
测试完成后,点击画布右上角的发布按钮,就大功告成啦。
接下来,我们回到智能体设置界面,再次点击“工作流”右侧的加号。
点击加号后,会弹出一个资源窗口,里面包含了你目前能使用的所有工作流。首先,是你已经添加进你的资源库的工作流。你复制的官方工作流模板,以及自己创建的工作流都会出现在这里。
这里可以看到,我们刚刚创建的工作流已经出现了。
需要说明的是,你也可以点击官方示例,看看Coze官方为你准备的一系列工作流模板。我们可以通过学习这些模板,来理解工作流的具体运行规则,在此基础上修改甚至独立创造属于自己的工作流。其中,复制的意思,就是复制进你自己的资源。
与插件的使用一样,点击添加后,对应的工作流就会添加到你的智能体的“技能栏”中。
你只需要在系统Prompt中明确调用该工作流的规则即可。调用的方法是在Prompt编辑区域输入1个花括号({),然后你就能选择已经添加的各种技能:
接着,输入问题后可以看到,工作流是否被触发:
好了,以上便是如何给Coze智能体增加工作流技能的过程,虽然我已经尽力讲的详细些,但其中还是不可避免的会遗漏一些细节。强烈建议大家动手操作一遍,出问题的地方多看看文档,咨询咨询AI或者给我留言,相信你一定能很快掌握它。