怎么从0开始做一个大模型Bot应用开发

154 阅读5分钟

第一天

项目背景

在暑假期间我去考了驾照,因为住在小县城,遇到的教练大多是一些没有经过专业训练的中年男人,教学质量良莠不齐,个人素质水平同样也是如此。往往驾校学员明明在教学时认真学习却没有达到理想中的水平。当然,如果这时有一个驾考小助手存在,告诉我们一些驾考的知识和技巧,那么一定可以增加我们考试的通过率和学习的效率。

image.png

image.png

image.png

同样,在各大主流媒体上我们随便搜索一下 “教练” “驾校” “练车” 等字眼,我们就可以发现如上图所示的评论数不胜数,这就可以说明不仅仅是我们自己遇到了这种问题,这是很多人都遇到的问题,这也就说明了我们做出一个驾校小助手的必要性。

项目开发步骤

第一步:开通扣子专业版

为什么要用 扣子 做 AI Bot?

扣子是目前国内知名度较高的AI智能体开发平台,其官方对于该平台的核心定义为:

  • 一个AI应用开发平台,无编程基础也可使用:用于基于大模型快速开发AI应用,且即使没有编程能力的普通用户也能使用,通过可视化配置,即可快速搭建AI应用;
  • 应用采用对话聊天Bot形式提供服务: 类似ChatGPT,目前扣子开发的AI应用,不是通过一系列灵活的交互界面交付应用,而是通过聊天对话的方式,以Chat Bot的方式提供产品服务;
  • 支持发布到各种社交平台等外部渠道:Bot应用支持发布到公域的社交平台,也支持发布到企业自有的产品内使用,具备插件化、应用分发的特性;

image.png 花了一块大洋成功配置扣子专业版并且了购买资源包

第二步:创建属于自己的Boot

首先,在豆包处生成属于专自己的prompt

image.png

然后,在扣子助手处生成自己的Bot

image.png

看一下效果:

image.png

第二天,优化这个简单的bot模型。

要优化这个模型我们可以从几个方面来入手呢?

第一,prompt方面

首先,prompt到底是什么?在大语言模型(LLM)中,Prompt 是用户输入给模型的文本或指令,用于引导模型生成所需的输出。简单来说,prompt 是用户与模型之间的对话起点,它告诉模型该执行什么任务或生成什么类型的内容。

举一个生动的例子:将大模型当成人,你是老板,你需要告诉你的员工(大模型)要做什么,你的命令是否表达清楚,影响着你的员工是否能完成的你要求。

编写 Prompt 的关键步骤

image.png

上面呢,我们成功的创建了一个prompt接下来我问你会不断的优化这个prompt以达到更好的效果

第二,插入插件

我们思考一下我们这个驾校小助手需要插入什么插件,才可以帮助学员更好的解决问题?

1.插入一个bing搜索插件以便于学员在网上找到和自己有同样经历的搭子,以寻求更好的解决方法。

第三,上传文件,扩大其知识库。

image.png

第四,做工作流

首先,我为什么要做工作流?

工作流是搭建Bot智能体的一种很重要的技能,稍微复杂或比较实用的Bot基本上都使用了工作流

其次,什么是工作流?

工作流(Workflow) 是指一系列相互关联的步骤或任务,用于完成特定的业务过程或项目。它定义了任务的顺序、执行者以及相关的条件和规则,以确保流程的顺利进行和最终目标的达成。工作流是对当前大模型能力不足的一种补偿机制,在大模型智能化程度还不够高的时候,通过人为编排的工作流(注入人的智能),让智能体具有更高的可用性和可靠性,提升用户体验。

然后 我们理解工作流每部分的一个作用?

插件

很明显这个节点用来调用某个插件的,它的入参跟出参与插件接口相同。

大模型

这个节点是用于调用大模型来生成输出结果,跟创建Bot类似,可以在节点配置中选择不同的模型,并设置模型的提示词。

代码

用于执行一段代码(一个函数),目前支持python和javascript两种语言,节点的输入、输出与函数的入参、出参相同。

知识库

用于从知识库中检索信息,跟Bot编排页面的知识库类似。

工作流

该节点可以嵌套执行其它工作流。

图像流

该节点可以嵌套执行图像流,图像流的功能是从文本或图片根据指令生成新的图片。

选择器

这是一个if … else结构,可以根据条件的不同结果,执行不同的分支流程

文本处理

用于字符串拼接或分割,当然也可以用代码节点来实现。

消息

用于输出一条消息回复给用户。

变量

用于读取或写入Bot变量,工作流本身是没有存储的,但是通过变量节点可以对使用它的Bot的变量进行读写操作。

数据库

用于读取或写入Bot的数据库,工作流本身是没有存储的,通过数据库节点可以对使用它的Bot的数据库进行读写操作。