今天给大家分享一下扣子工作流如何编写代码执行特定任务。比如说我们现在有一个需求,需要去做一些特定的一些任务,比如说我现在想要去生成一个电商,购物卡的一个卡密,就是一串密钥。我们可以去通过这个卡密的话兑换一些商品,或者说去作为一个消费卡扣余额。那这种需求的话怎么来实现?那扣子里面我们可以去加一些特定的一些代码,用执行代码的方式,就是大家可以去采用编程的方式,让他去执行一些特定的一些逻辑,去生成一些电子卡密。当然这个只是其中一个场景,比如说还有一些场景,我要去生成一些业务流水号,或者等等的一些类似的一些操作的话,大家都可以基于这个code节点去完成。
那么这个cos节点编码的话,我们具体怎么来实现的呢?首先我们来看一下这个逻辑的话,就是我们首先要在扣子里面建一个工作流,我们回到这个里,在这个工作空间里面,然后大家点开这个资源库,然后在这个右上角有一个资源,然后我们点这个工作流这里的话,我们可以创建一个工作流,比如说我就叫它一个random lambo 1,就是我们去生成随机数。然后这个工作流的话,它主要就是用来去什么呢?去生成一个随机数,或者咱们叫叫生成这个。生成。店什么叫礼品?礼品卡。礼品券。兑换码,比如说我们要生成这么一个礼品券的这么一个兑换码,我们现在需要有这么一个工作流。
好,然后有了这个工作流之后,我们现在需要去建一些这个节点,那这个节点的话我们可以怎么来做呢?首先首先这个里面的话我们可以什么呢?有一个开始开始节点的话,我们这里写一个参数叫input length。
这个参数的话,它是一个什么呢?叫做。这个兑换码。长度就是我们想生成多长的一个兑换码,我们可以自定义。然后这个类型的话我们可以选择这个类型,然后也不一定是填,我们等下再往里面可以生成一个默认的,所以说这里我们就不去必填了。
好,那么接下来的话我们要去生成这个代码的话,首先的话大家得干嘛呢?你得有一个这个节点,就是有一个代码节点,我们把这个代码节点在这里给大家去申请好啊。然后有了这个代码节点之后,完了之后可以干嘛呢?我们可以去做一些写代码的一些逻辑。
首先首先在这个里面我们可以加一些逻辑。在这个里面我们首先把这个开始节点跟代码节点连起来。然后在input这里,大家看在这个input这里的话,我们可以去把那个参数给它传递进来。因为我们调用代码,根据开始这个节点里面传入的这个参数的话,给他去生成一个代码。那么这个代码的话,我在这里在这个资料里面给大家提供好了,大家直接把这个代码给它复制一下,然后双击这个代码节点,然后在这个里面这里有个按钮,在IDE中编辑,也就是说我们可以在这个里面去写代码,那这样的话就可以相当于把我们这个代码加进来了。
然后完了之后的话,我们可以看到这个里面它会干嘛呢?它会去生成一些参数,所以说我们要在输出的这个地方,我把它加一个参数。什么呢?叫这个?Random, 因为它最终是会把这个random这个参数给它返回,所以说我们这里输出的话,我们要写这个random作为一个字符串的这种格式返回。
然后input,因为我们要往里面去传一个这样的一个参数,然后这个参数名看一下这里写的是什么参数名。这参数名的话我们它是传入的有一个这么一个参数,叫input。那input这里的话我们叫什么呢?这里我们把它引入那个变量,引入开始节点的那个input length,就是相当于咱们把那个长度这个参数就可以传进来,就可以传进来了。那么接下来之后的话,我们就可以这个代码这个逻辑的话相当于就完成,然后我们把它拆掉,然后在这里结束,再把这个连起来,最终把代码跑出来,这个结果把它输出。然后这个output的话,我们就用这里,用代码最终生成的这个render学习数,然后完了之后我们点试运行,把这个测试一下。
比如说我们现在要输出一个16位的一个兑换码来运行一下。好,大家看这个16位的这个兑换码就已经出来了。但是此时的话它是一个什么呢?它是一个小写的?带数字的这么一个。我们希望的话它的一个效果的话是这个样子。
大家看啊,我希望是这个random的话是这么一个结构这么一个结构。但是这个工作流的话,它只能给出这么一个内容出来,所以说我们现在要把它整合到这个智能体里面去,然后回到刚刚那个地方,然后到这个项目开发里面点开这个创建,然后再创建这个智能体,比如说我叫那个礼品,礼品券兑换码。这个阵容体我们就写这么一个名字,然后确认一下。然后完了之后我们在这里添加这个工作流,大概我们添加这个工作流,在这个地方我们选择刚刚那个有一个工作流,但是它是未发布的,然后未发布的话它是无法添加的,所以说我们要把刚刚那个工作流的话得发布一下。关于工作流这个节点,如果大家不是很清楚的话,可以听一下我之前讲的一期,就是这个扣子工作流的一个入门,那节课会给大家非常详细的讲到一些工作流代码节点的一些逻辑。好,然后这里我们要点一个发布,这个必须发布才能用。没事,我们就发布这个0.1版本,我要发布调用下一个服务器失败,我们再发布一下发布。
大家看已经发布成功了。好,然后发布成功之后,它这里就会给你一个提示,就是需要添加到当前正容体,我们已经加进了,也就是这个工作流主要就是用来去生成礼品券的一个兑换码。然后这里大家就可以看到了,我们可以在这个地方什么呢?把这个提示词,我把它复制起来,在这里打开,我们把这句话考过来,然后我们直接提示他,生成一个16位的随机数,格式为购物卡卡密格式,要求这个字母跟数字混合,全大写。然后比如说例如是这种格式,这时候他会去调用那个工具,你看调用那个工作流,工作流他其实给的是一个小写的一个码,小写的一个码,然后的话他其实会帮你去做一个转换,做一个转换,大家可以看一下。
Important less。他其实给的是15位是吧?这个长度我们看一下是哪里出问题,正常应该是可以给到这个16位的,应该看一下这个工作流这个代码逻辑有没有问题,我来编辑一下。
Input length输入。大家看一下这个参数是不是哪里写的有问题。我们看一下传进来的这个参数,input length output看一下是不是这个参数哪里写错了。Length我们看一下长度那个参数。好,大家看这个参数名,它其实叫las,叫长度。所以说这里变量名我们得改一下,叫length。因为它这个代码里面用的是paris点race,也就是说他会娶你这个代码节点的输入这个参数,用这个paris加这个参数名,参数名就叫length,在这个里面其实它是一对应。好,所以我们不能用那个默认的input参数,这里要改一下。好,然后我们再返回去看一下,点开刚刚那个礼品对关键智能体来继续编辑。大家看我们再试一下,看一下这个结果对不对?
好,大家看啊,你看本次调用的16位购物卡密为,它还是这个15位是吧?生成一个分隔符,包含16位的,我们可以单步调试一下。刚刚没有发布,我们还忘记了一个重要的流程,就是一定要点发布,不然它是用的上一个版本,我们一定要发布。发布这个它版本会自动递增的,一定要发布,不然的话用的是0.1的那个版本。好,我们再回到刚刚那个智能体。好,再跑一下。
大家看现在是不是就可以了,是吧?你看现在是不是标准的16位,对不对?你看我让他再生成五个购物卡卡密。
大家看15个没问题是吧?所以说我们通过编码的这个方式的话,其实就可以做很多有意思的事情。就是我们需要做一些特定的逻辑。比如说我想让这个工作流,我现在要做一个礼品卡的这么一个整体应用,我要给客户自动的去生成这个智能体,就是一些购买,就是给他发一些这个密钥什么之类的。然后当然这个密钥基本上是以这个密文的形式呈现的,你可以发邮件的方式告诉他明文,但是发到消息里面一般都会加密,所以说这个的话就是我们可以做一些特定的一些任务,就是我们把这种题真的可以搭变成一个APP应用。在这个应用里面的话,我们可以做很多场景,包括去生成代码,包括去发邮件,包括去查询一些天气或者等等等等。就是各种各样的场景的话,我们其实都能做。
大家可以以这个案例来为一个起点,就是你可以去编写代码,去执行它一些相对来说比较复杂的一些逻辑,你都可以去通过代码去实现。这个代码的话,它是用的前端的这个代码,大家感兴趣的话可以去研究一下。他是用的javascript,当然大家也可以用python去写,这个都没有问题的。它目前支持两种语言,要么是javascript,要么是python,都可以。大家熟悉哪种语言就用那种语言去写。但这个流程大家要搞清楚,就是这个工作流整个的一个逻辑。
但这个工作流大家比如说第一次我没写,对我想我不想建一个智能体,那我想可以单独的在这个工作里面去调试,也可以的。事实上是可以的,大家可以在这个里面,就是你可以什么呢?在这个里面输入一个东西,就是点试运行,试运行这里你比如说你可以输入就是调试,从这个起点开始运行。比如说我输入个,我先输入个六位的,让他帮我生成一个六位的随机数,大家看是不是六位的没问题?然后20位。大概也没有问题,这个你可以单步调试,你可以看它的一些日志,一些细节。大家可以看到,你看在这个里面有他调试的一些详情,这个的话就方便我们以后去排查一些问题,就整个它的一些耗时,或者怎么样,包括这个智能体执行的一个时间,大家都可以清晰的看到到底哪一步出问题了,性能可能会有一些差异,大家都可以通过这种方式去做一个排查。好,这个就是礼品券,就是兑换码的一个逻辑。
最后来做个总结,主要是分几个流程。首先的话就是大家要做一个这样的一个整体的话,你首先得去新增一个工作流,在工作流里面咱们去首先去添加一个开始节点和结束节点,一开始进来就有,然后最关键就是你要加一个代码节点。代码节点的话就是我们可以在这个里面去执行一些什么逻辑,你可以执行代码,或者怎么样的,是吧?然后通过这个把这个连起来,通过我们最开始的这个参数,然后什么呢?把这个参数给它往下去传递往下去传递。然后传递完之后的话,由这个代码去执行外部传进来这个参数,就是这个length,关于这个代码我给大家讲一下,就是它的一个入口的话是在这个地方。大家看首先它会定义一个结果集,对一个返回值,这个返回值的话叫random,所以说我们这里的一个输出也叫random。大家可以看到这个random其实跟这个一一对应的。
然后的话他最开始要执行一个函数叫UID。然后UID这个函数在上面定义的一个方式。这个function的话,你看它是首先传入了一个length这个参数,这个length参数就是这里传进来的。就这个地方我们通过这个paris点length传进来的传进来之后大家看啊,如果说你没有传这个值的话,它默认取的是十一这个长度,就是默认的一个长度。然后你如果传的话,它就会干嘛呢去生成。
生成的逻辑很简单,就是把它什么转化成一个随机数,应该有一个mass点,random乘以36,就是娶一个这样的一个随机数,随机数完了之后的话,就把这个值给返回回来,就整个做一个拼接,就是每每一段相当于每一个字符要单独生成一个随机数。这个随机数的话是字母或者数字的一个,两种情况都可以。最终拼接完之后的话,拼完之后大家可以看到就这个值,它就拼成了这个random这个参数,最后把它返回回去。
所以说这个里面我们就看看到的是一个随机数的一个逻辑,但大家也可以单单步的去执行这个代码。比如说我看我现在输了个12,你就越行,大家看这样就可也可以出结果。你可以单独的去调试,单步的去调试,这个都是没有问题的。比如说我们现在不传这个参数。过程这个参数它默认就是11位的,这个大家都可以在这个IDE里面去编辑,还有包括你像这里有一个功能叫尝试AI,就是大家可以看到我们这里它可以自动的去生成AI。比如说我现在想把这个代码改一下,我想生成大全部为大写的这个随机数,来我们来运行一下。
接受。好,大家可以看到,你看它生成的时候就可以帮你变成一个随机数,其实就是加了一个函数,叫two up case,就全部转大写了。然后我们来看一下这个效果,比如说我们现在输入一个12位的。好,大家看你看它是不是就已经变成全大写加数字了是吧?这个效果其实就是我们想要的OK这个更多的一个代码的话,大家也可以去看一下这个地方,在这个里面。有一个single点JS,这个是用的它的一个函数,就UID的一个生成函数。也就是说大家以后可以在这个代码里面,你可以写各种各样的一个逻辑,写各种各样的逻辑,其实都是OK的。
OK这个就是这个代码的一个场景,比如说我们其实还可以去做一些优化,你看刚刚有一个逻辑的话,其实是什么呢?在这个里面,大家可以看到就是刚刚有一个地方我们其实可以优化一下,就是我们每次要在对话的时候,干嘛呢?就去调整这个什么卡米。我希望在工作流的时候就把这个逻辑给写写好是吧?那可以怎么办呢?来看,我们可以这里加再加一个节点,就是我结束之前我这里还要经历一个节点,我加一个大模型的节点,在这个地方大家看我们把它连接到大模型。然后大模型这里大家可以看到,我们把这个提示词加进来,就是我是外面写了一些提示词的大模型,帮我做了一些优化,但是我希望什么呢?
我希望这个智能体内置的就以及帮我们把这个购物卡的卡密这些提示词逻辑已经写好了。所以说我现在希望我们把这个提示词给它加进来,加到我们大模型那个节点里面去,然后加一个提示词,然后生成一个,这里我们加入参数,比如说我们输入参数,我们把刚刚那个lse加进来,然后引入到最开始那个length,生成一个这个length this way的这么一个随机数是吧?应该是根据这个代码节点的一个结果,所以我们还需要一个结果叫random。对,就是这个代码节点给它返回一个结果,我要针对这个结果把它变成这个购物卡卡密的一个格式,来开始节点里面,我们把代码节点返回这个random加进去生成,我们叫什么呢?根据根据。根据这个什么?我们叫random,就是这个random。根据random,这个我应该说叫将random格式。转化为什么呢?转化为一个A。
转化为购卡卡密格式,要求字母跟数字混合全大写。例如什么什么,就是我在提示词里面给它写好了,必须是这样的,但是它其实已经大写了是吧?所以就是说我们其实不用写什么全大写,它因为已经是全大写的,所以说我们这个提示词就是要把我们上一个节点处理完的这么一个随机数。
在大模型这里我们要让他帮我们做一下转换,我们将这个rythm格式转化为购物卡卡密格式,要求字母跟数字混合,也不用要求,它已经实现了列入这种格式,我们就是让他加一个格式,很简单,这个就是这个大模型做一个事情,然后最终大模型的一个输出,我们把它把它连接起来,把这个结果。然后用大模型的这个输出,然后我们这里试运行看一下比如说我现在是我就输了个16分。十六来跑一下。
将转化为这种购物卡,还是可以这样子。
他其实已经帮我们生成帮我们生成了,但是这个结果的话他没有给我们出来,我就让他做一下格式化格式化。
只返回卡密,不要包含多余的内容。那我们加一个这么提的词,我们再来试一下,学习一下,扣个16看1下。好,大家看这个就是我们想要的一个结果?我们只需要这个购物卡、卡券?我们不需要多余的东西,那我们就把它写好了,然后我们这个就可以了。
然后我们再进入到这个聊天里面去,再到刚刚那个智能体里面去。我现在其实就不用写这么多东西了,对不对?那什么个格式我就不需要了,就现在什么生成。
三个三个卡密,我就直接跟他说三个卡密也不用说什么格式了,格式这个我已经定义好了,对不对?目前已经生成一个,接下来生成另外两个。大家看这个格式是不是就已经定好了,对不对?我现在比如说我想改一个格式,在这个里面。我想把这个格式给改一下,比如我现在加一个什么呢?我不用杠了,我用一个什么呢?用一个井号用一个井号把它连接起来,这个就是大家提示词优化这一块了。
这个我就简单提一下,就是你随意的可以去改格式的。但是你改完之后的话,这里我们需要注意一下,把它发布一下,坚持发布。刚刚那个其实不发布那个是有问题的。发布版本,你把它发布一下,我们再来看一下这个结果输出。把这个绘画清一下,刚刚是应该也有历有历史记录的参考了,我们把它清一下,来跟着三个卡密。
大家看是不是那个井号,对不对?你看井号是不是井号那个是吧,由后续由于工具仅返回一个结果,无法提供供。他说这个结果因为他只返回了一个结果,所以说无法提供两个卡,他希望你再次去执行,那其实我们再次执行也可以,再次执行按理说他应该可以调用多次。
我看他其实调用了三次,你看刚刚那一步,它其实有点幻觉。就是他他说让你去重复执行,其实他可以执行这样的执行的,只是说他有时候会出现一些幻觉,就是不会帮你去调用。你看他现在就给你调用三次了,那这样的话其实我们就可以生成很多丰富的一些格式。比如说我想生成222 10位的卡米,我看一下行不行。
他说未能生成符合要求的,就是说我们那个提示词里面写死了一个逻辑,就是你这里去加的话就不行了。经过多次尝试,但是它内部还是会做一些处理,帮你最终还是会帮你转成30位卡密,它这个里面相当于它这个调用工作的逻辑的时候,还是帮你做了一些优化。虽然你那个其实词里面写的是16位是吧,就是给的样例是那样。但是你在外面套的一层那个提示词的话,它还是可以去帮你去优化。虽然他第一次可能执行会出现一些异常,但是第二次重试其实就可以解决这个问题。这个其实就是涉及到agent它的一个反思的一个逻辑。在这个逻辑里面的话,即使第一次报错,你第二次再去问他的时候,他可以学习到这个错误,然后并且去解决它。这个就是agent他的一个强大的一个地方,就是他可以不断的反思总结,当然这个都是利用了大模型的一些能力,大模型让他可以帮你做一些各种各样的一个优化,所以说这一块大家可以在提示词,包括代码这一块可以去做一些研究,它是可以解决很多问题的。
就是你这个提示词写好的话,其实很关键。就在这个里面。你这个提示词写的足够好的话,它可以兼容很多种情况,这个其实就是包括这个随机码的一些情况。比如说大家还可以做一些更加复杂的一些场景,比如说你想要去查询天气,查询一些其他的一些逻辑,比如说查询本地服务或者怎么样的,其实都是OK的,那你这个大模型里面的话,你其实也可以去调用一些能力,我们叫技能。就这个里面你也可以去配置各种各样的一些技能,把它加进来,就让大模型帮你去加上天气的能力,加上这些搜索的一些能力等等各种各样的一些能力的话,大家都可以把它加进来。这样的话你的功能的话就可以做的非常强大。
就在这个里面包括它的一些代码的一些处理,这个IDE里面这个代码的话,大家可以去尝试AI的一些逻辑。比如说我现在这个代码,比如说我现在就想让他去什么呢?去生成一些咱们天气的一些逻辑,比如说我们这里加一下,帮帮我去生成查询天气。天气的代码。那我们回车。
大家可以看到,就是它这个里面你看可以帮你去生成一些天气的代码,但是它用的服务器是本地的。其实我们想通过外部的,你比如说你可以再给他加一下。我想生成这个查询天气的代码,使用第三方API,大家可以去,你在这里可以,你如果不会这个JS代码的话,大家可以用到这个AI工具,让他帮你去生成这个代码,都还挺好用的,还挺智能。但看这里,你看他就用这个去搜了是吧,这个叫在这个weather weather点com这个网站上是吧,他帮你去搜索这个逻辑,你看他这个里面就帮你去查询你的一个城市,你的一个天气的一个情况,包括他的一些异常处理,他其实都帮你申请好了。所以说这个AI生成代码的话,目前其实也比较强大了,大家都可以去尝试一下,这一块还是做的比较智能。在这里大家即使不会写代码也没关系,就是你可以用AI的一些能力帮你去做这个事情。所以说不管你是开发人员,还是没有编程经验的人的话,你都可以把这个给玩起来,这个都没有什么太大的问题,反正我们可以借助AI编程,只要了解到一些JS简单的一些语法的话,基本上就OK了。好,OK这个就是我们用代码,就扣子里面用这个代码去编写特定的一些任务。
大家不要局限于去甚至随机数这种简单的逻辑,你可以把它发散起来,就是你可以做很多事情,这个只是一个引子,就是大家可以做很多代码的一些逻辑,比如说我想用代码去帮我们去生成一些特定的内容,生成一些文件,或者怎么样的。一些更加复杂逻辑的话,大家都可以基于代码去实现。然后最关键的话就是你要记得把它发布,然后加一个阵容体去把它关联起来去用。当然你也可以在这个工作流里面去加一个这样的一个调试,就是去排查一些问题。OK以上就是关于cos工作流编写代码执行特定任务的一个分享。如果对大家有帮助的话,欢迎一键三连。大家的关注和反馈是我不断更新的一个源泉。