大家好,这里是五彩石编程,我是军哥。上一篇文章中我们已经构建起了一个企业级的知识库,并且通过编排工作流,完成了知识库应用的配置及分享,今天我们就来详细的聊一下fastgpt中工作流的编排!
一、工作流编排介绍
在fastgpt中,有两大核心:知识库和工作流。知识库就不用多说了,大家使用fastgpt大多是冲着它的知识库来的,而工作流则是fastgpt高易用性的保障,通过上一节简单的几个操作就构建起来了一个知识库应用,工作流功能的强大,已经可见一斑了。
在fastgpt4.7中,工作流被称之为高级编排,其中的节点大多拥有多个输入连接点和输出连接点,不同的连接点类型可能还不能连接,对于新手来说,想要快速上手,并不是一件容易的事情。但到了4.8的版本,节点的连接点数量被极大的简化了,之前的许多连接点,都变成了节点内的参数,并且参数的使用方式也做了一些优化,错误提示也更加清晰友好了,新手也更加容易上手了,在这一点上,得为fastgpt的开发团队点个赞。
工作流编排有两个核心:节点和流向,我们在编排应用时,需要考虑使用具有哪些功能的节点,以及节点之间的数据是如何衔接的,也就是节点的数据流向如何控制,接下来我们就针对这两个点,展开来聊一下。
二、fastgpt的节点类型
在fastgpt中,我们打开任何一个已经创建的应用进入它的流程编排页面,点击左侧的“+”,都会看到它提供的所有可用的节点类型,其实也就是插件,fastgpt官方把插件分为了3种:基础功能插件、系统插件和团队插件, 我们来大概看一下。
1、基础功能插件
在基础功能插件里面,又有几个小分类,第一类是文本输出。
(1)文本输出
这个分类里面有两个插件:AI对话和指定回复,也就是说这两个插件都是可以直接输出内容的。 我们在知识库应用中已经使用到了AI对话插件,所有需要用到AI对话的地方,都可以使用这个插件。
这个插件在使用时,只要调整好它的参数就可以了。比如你使用的大模型、对token的限制、发散度的限制等。
指定回复插件主要用来回复一段文本,比如当用户问了某个问题,在知识库中查不到时,你可以让他固定的回复一段文本,比如说:很抱歉在知识库中查不到。同时这个插件还有另外一个用途,那就是用来调试,比如你发起了一个HTTP请求,那么这个请求返回的所有内容,你都可以通过指定回复插件让它全部输出出来,这样在调试的时候就会非常方便了。
(2)功能调用
这里面包含了四个插件:知识库搜索、工具调用、问题分类和文本内容提取。
知识库搜索插件在上一章中我们已经使用过了,主要是为了对接已有的知识库,从里面检索内容
工具调用这个插件是实验性质的,类似于大模型中的function call,有兴趣的可以去探索一下。
问题分类插件主要是对用户的问题进行一个分类,根据分类结果,后面可以对接不同的节点实现多个分支的功能,类似于编程中的switch的功能。
文本内容提取这个插件是通过AI,来从输入的一段文本中提取出来你想要的信息, 比如预订会议室的功能,就可以通过文本内容提取这个插件,来完成会议地点、会议时间等参数的提取。
(3)工具
在工具这个小分类中,有三个插件:判断器、变量更新和代码运行。
判断器是上一个版本中从系统插件移过来的功能,但它的功能和上一个版本中的功能差别比较大,在上一个版本中,判断器支持正则表达式,在当前版本中,它去掉了正则,并把if/else这一分支的判断条件,更加明确了出来,也添加好很多具体的比较符,使用起来可能会更加方便一些。
变量更新插件可以用来修改变量的值
代码运行插件则可以让你运行一段JS的代码。你可以在里面定义一个函数,函数的变量可以从之前的节点或者系统的变量里面提取出来。
(4)外部调用
通过应用调用插件,可以调用其它你已经编排好的应用,这样一些复杂的功能就可以编排成一个应用,而在其它的应用里直接调用了,隐藏了应用内部的逻辑,无形中提高了应用的复用性,相当于模块化的思路。
HTTP请求插件可能是使用最多的插件之一了。它可以发出get/post/delete等各种请求,需要调用接口的地方,都少不了它的身影。
Laf函数调用插件是用来调用Laf云函数的,如果你的函数是通过laf来部署的,那么你就需要使用这个插件。
(5)其他
知识库搜索合并插件,可以把多个知识库搜索的结果合并到一起,并通过rrf算法进行排序,然后输出给后序节点来使用。
问题优化插件用得不多,不做深究。
2、系统插件
系统插件中只有三个:文本加工、获取当前时间和自定义反馈。
文本加工插件主要是用来做变量替换的,如果你在前面的节点中输出了一些值,那么在这个插件里面,就可以把它们作为变量,进行文本替换,系统变量也是可以使用的。通常用它来做格式化的输出,比如固定格式的文本、输出一段符合json格式的文本等
获取当前时间插件,看见名字就知道它的含义了。
自定义反馈插件用的也很少,不多讲了
3、团队插件
团队插件主要是你自定义的插件,你自定义的各种插件都可以在这个里面找到。比如,我们自定义一个echo插件后,就可以在这里找到并在各个应用中使用了。
三、工作流中的流向
在4.8版本的工作流编排中,流向控制已经被极大的简化了,一个节点的上下左右通常有4个连接点,其中上边和左边的节点是前置连接点,可以接受前面节点的输入,右边和下面的是后置连接点,可以连接到它后面的节点,并把数据传递给后面的节点中。
我们只要按照应用的逻辑要求,进行节点的顺序连接即可。这里就不再做演示了,在创建应用的时候,从fastgpt预置的那几类应用中,已经可以看到节点间是如何进行连接及数据传递的了。
要想提高工作流的编排能力,需要多去操作实践,尽量把各个插件都使用一遍,深入了解各个插件的特点,这样在实际的应用中,就可以快速的根据业务要求,编排出相应的应用了。
到目前为止,fastgpt的基础知识部分已经介绍完了,在接下来的几篇文章中,我们将进入fastgpt源码的分析环节,对于有二次开发需求或对fastgpt源码感兴趣的同学,可以跟着军哥一起深入学习一下。
想了解更多fastgpt的知识,请微信搜索并关注“五彩石编程”公众号,军哥的文章将会持续同步更新。