基于FastGPT使用高级编排功能实现AI对话操作自己的业务系统

环境准备

关于fastgpt的安装、添加模型、测试,在另一篇有详细记录:
juejin.cn/post/736698...

补充说明

高级编排具体教程参考官方文档:
doc.fastai.site/docs/workfl...

要想使用AI对接自己的系统实现业务,根本逻辑就是让AI从用户输入的指令中,提取出我们想要的参数,并且转成对应的字段,调用我们自己的http接口,AI收到接口返回的数据之后,再让AI进行学习分析结合用户的问题给出答案。

其中最重要的就是"问题分类"和"文本内容提取"两个模块,需要确保使用的AI模型支持function_call功能,如果使用了不支持function_call的模型的话,到也不会报错,只是永远都会走你配置的最后一个节点或提取的内容永远是空。无法实现正确的业务逻辑。

目前测试了线上模型:零一万物的"yi-vl-plus"、百川的"Baichuan2-Turbo-192k",智谱的"glm-4",这些都是支持的,本地模型测试了千问的"qwen:4b"也是支持的。

业务准备

首先准备好自己的业务系统,我准备了一个巡检系统的例子,提供了两个个方法,一个是获取所有的巡检列表数据 接口结果大概就是这样的

另一个是修改巡检数据

我期望的需求是,在AI中查询指令能给我返回我需要的结果,包括各种筛选条件,并且能进行修改指定的数据

高级编排

创建一个新应用,然后点击左侧的【高级编排】,即可进入高级编排涉及界面

可以看到默认已经存在了一个流程,这个流程就是一个普通的对话流程,它的含义就是用户输入指令从【流程开始】模块,将指令传到【AI对话】模块,然后在【AI对话】模块给出答案,这样一个完整的对话流程就结束了。

目前自己的系统有两个接口,一个查询接口一个修改接口,首先得要AI知道去调用哪个接口,也就是说得让AI知道用户的指令是"查询"还是"修改",【问题分类】模块正是解决这个问题的。

首先把原来的【AI对话】模块删除掉,左上角点击【+】号,找到【问题分类】拖入面板中,然后将【流程开始】模块和【问题分类】模块使用连接线连起来。完成后界面是这样的:

配置【问题分类】模块:

AI模型:选择自己想要的模型;

背景知识:写一段描述文字,帮助AI更好的理解,从而分析出属于哪种分类;

用户问题:选择变量引用 → 流程开始 → 用户问题;

分类123:填写自己期望的分类描述,我填写了3个,查询、修改、其他;

这时可以测试一下,三个分类则会有三个输出节点,每一个输出节点连接一个【指定回复】模块,这样能测试出问题分类有没有效果,面板右上角点击"调试按钮"进行对话测试,如下图

查询功能

先做查询的功能,知道属于"查询"分类后,就知道该调用哪个接口地址了。把"查询"的【指定回复】模块删掉,增加进来一个【Http请求】模块,并将"查询"的输出与【Http请求】模块连接,填写相关信息,比如请求方式get/post,请求地址就是查询的接口地址,请求参数和请求头根据自己的情况填写,我这个查询接口不需要任何参数,这样一个【Http请求】节点就配置好了。

【Http请求】模块的输出就是自己接口的返回结果,现在需要拿返回结果做为AI的知识库进行回答问题。在面板中添加【文本加工】模块,如下图:

【文本加工】模块需要拿到上一步接口的返回信息,还有用户的问题。在输入一栏点击"新增",要新增两个变量,名字随便起,这里我新增了"response"和"q",变量值如下图配置,然后在文本中输入以下内容(参考官方模板):

python 复制代码
请使用下面<data></data>中的数据作为你的知识。请直接输出答案,不要提及你是从<data></data>中获取的知识。  
  
<data>  
{{response}}  
</data>  
  
问题:"""{{q}}"""

【文本加工】这一模块配置好后,下一步就该让AI进行输出答案了,在面板中添加【AI对话】模块,修改相关配置,注意这里的用户问题要选择上一步【文本加工】输出的text变量,如下图:

到此一个完整的AI查询功能就做好了,现在可以点击右上角的调试按钮测试:

修改功能

从【问题分类】模块,分出了查询、修改、其他三个分支。查询分支的第一步是进行http调用,因为不需要传任何参数,所以可以直接调用。修改的话我需要知道修改的巡检任务的主键id,和巡检结果,所以我需要先拿到这两个参数后才可以进行http调用,那么可以使用【文本内容提取】这个模块。新建一个【文本内容提取】模块,与【问题分类】的"修改"输出节点连接(先把之前测试的【指定回复】删掉):

进行配置:主要是增加两个自己需要的字段,给出描述

拿到需要的两个字段后,就可以进行http调用了,增加【Http请求】模块,并配置输入参数、请求方法、请求地址、和请求参数,注意请求参数中使用变量的写法:

修改操作的回复,无非就是修改成功还是修改失败,这个我们自己回复就行,不需要使用AI回复了。添加一个【指定回复】模块,回复内容选择变量引用,选择http调用的原始响应:

修改功能就也做好了,现在把查询和修改结合起来测试一下:

至此一个完整的AI巡检查询修改系统就完成了,FastGPT的高级编排很强大,可以随意组合你想要的流程,发挥想象,比如可以增加一个【判断器】,来做修改任务时的字段验证:

问题补充

一般自己的服务都需要在请求头传一个token,那么这个token可以当作一个全局变量传到FastGPT的api接口里,然后在【Http请求】模块中使用这个全局变量:

FastGPT的api接口文档:doc.fastai.site/docs/develo...

相关推荐
paopaokaka_luck3 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
码农小旋风5 小时前
详解K8S--声明式API
后端
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml45 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~5 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616885 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
睡觉谁叫~~~6 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
2401_865854889 小时前
iOS应用想要下载到手机上只能苹果签名吗?
后端·ios·iphone
AskHarries9 小时前
Spring Boot集成Access DB实现数据导入和解析
java·spring boot·后端
2401_857622669 小时前
SpringBoot健身房管理:敏捷与自动化
spring boot·后端·自动化