如何用 ChatGPT 构建你的专属知识问答机器人

513f91df57d069e4fa276ff439e4534c.png

缘起

从去年底开始 ChatGPT 火爆出圈,大家都在思考如何利用 ChatGPT 的能力来构建自己的应用,我也在想,如果有一个机器人可以学习一下开源项目文档中的信息,那是否就可以作为一个开源项目的问答机器人了呢?

这个想法一直在我脑海里,直到看到了有人已经进行了实现,也就是 DocsGPT,这个项目开源一个月已经收获了 3000+ star。

我自己也想试一下,于是按照文档也部署了自己的一个实例,并且添加了一部分项目的文档进去。大家有兴趣的可以访问OSS-GPT 进行尝试,看看效果如何。

b2990e946af69e3249e54b173d3caa67.jpeg

DocsGPT 中 OpenDigger 文档的问答效果。目前支持的项目包括:

OpenDigger,OpenYurt,Egg.js,Midway.js,NebulaGraph,OceanBase,OpenSumi 等。

深究

按照 DocsGPT 的 Wiki 训练了几个自己熟悉的项目文档后也发给相应社区的负责人试用了一下,发现效果差强人意,有时候还是比较智障的,于是想深入探索一下背后具体是什么原理。

ChatGPT 的使用方法

说到具体的实现方法,首先要提到 ChatGPT 是如何使用以及有哪些限制的。

ChatGPT 提供了非常简单的 API 接口可以用来做聊天任务,底层使用的是 gpt-3.5-turbo 大模型,这个模型使用的训练数据本身是较老旧的互联网信息(截止到 2021.9),所以它并不具有一些较新的信息,更不要提非公开的信息了。

因此 ChatGPT 提供了通过 prompts 来进行提示的方法,也就是在发起请求时,可以带上一段信息。由于是一个聊天接口,因此可以包含多个聊天的内容。其中包括来自系统的提示:例如用来描述一下 ChatGPT 现在是什么角色,应该具有什么样的语言风格等。另外还可以包含一些用户的历史聊天记录,就像背景知识一类的,都可以作为用户的输入带进去,这样可以使得 ChatGPT 在本次聊天中具有了领域知识与上下文信息。通过这种 prompts 的方式,可以对 ChatGPT 有一定的定制能力,并使用其大模型的自然语言能力来组织回答信息。

以上就是目前 ChatGPT 类领域聊天机器人的基本原理了,除了 DocsGPT,还有最近刚刚开源的项目 document.ai 都使用了类似的方法,这种方法的基本流程是:

  • 将输入的所有文档数据进行向量化并存储起来

  • 当聊天时,在存储的向量数据中查询出与当前聊天内容最相近的一部分文档内容

  • 将上述的文档内容作为 prompts 的一部分同聊天内容一并发给 ChatGPT 进行问答

这也就完成了对特定领域信息的注入,如果要达到聊天上下文的效果,还可以把之前的聊天内容也一并带上,那么就可以带有上下文信息了。

下面是来自 document.ai 项目的流程图:

3a0cf9bc0e1bfda8c3758fd9e232b4bd.png

ChatGPT 的限制

但其实这种基于预检索和 prompts 的方法限制也在这里。

因为底层的 ChatGPT 的模型是一个通用模型,而 OpenAI 并没有开放 gpt-3.5-turbo 模型 fine-tune 能力,这样意味着我们无法通过 fine-tune 来训练一个自己的专属模型,只能通过 prompts 来做提示。

而 prompts 本身也有一定的限制,ChatGPT 的接口有 4096 的 max_tokens 的限制,而这个限制是指 prompts 加回答的总量,因此我们无法在 prompts 带过多的信息,而且如果要带聊天上下文的信息的话,预检索的数据量就会更小一些。这也就限制了 ChatGPT 的精确度。

以下是关于 gpt-3.5-turbo 模型的官网说明,包含了对 token 的限制以及数据集的时间区间:

f95c50ea20293cc22b7c0d41b598c897.png

尝试

于是我在想,是否可以使用能够 fine-tune 的模型来训练自己的专属模型呢?这样一来对话时将不再需要做背景知识的 prompts,因为背景知识已经被融入了这个专属模型,最多在多轮聊天中带上上下文的信息,可以使回答更智能。

由于 gpt-3.5-turbo 模型并不提供 fine-tune 能力,我们可以选用 GPT-3 的模型,如 text-davinci-003 来做 fine-tune。就像 OpenAI 在官网主页和文档中介绍的,这两个模型在表现上是非常接近的,但 gpt-3.5-turbo 模型的成本是 davinci 模型的 10%,因此推荐大家使用前者。

那么接下来的问题是我们如何使用自己的文档数据来训练一个专属模型呢?因为 davinci 模型的 fine-tune 方法是需要输入一组 prompt 和 completion 的文本对,prompt 可以是一个问题或句子填空,而 completion 就是对问题的回答或者补充填空。所以我们需要将项目文档转换成类似的形式。

此时我们又可以回到 ChatGPT 了,因为它有非常好的阅读理解能力,对于这类文本任务的处理效果很好。于是我们可以先把自己的文档拆分成一段一段的信息,然后喂给 ChatGPT 让它把这些信息转换成一个个的事实问答对,并以 JSON 形式返回回来。当所有文档都拆分好以后就变成了一大批的基于该项目事实信息的 prompts 数据。

之后将这些 prompts 数据发送给 OpenAI 的接口基于 davinci 的基础模型训练一个专属模型,等模型训练好以后就可以来尝试和自己的专属模型聊天啦。

使用 Sealos 的官方文档中的 89 个 Markdown 文件得到了 1502 个问答对,其中的一些 prompts 示例如下,看起来还是非常不错的:

60f07fa0a78e431d74ffa9d12e8e71c9.png

对比

成本

其实最大的对比还是成本的对比,ChatGPT 由于没有 fine-tune,所以成本就只有每次问答的成本,但由于大部分时候需要带大量的 prompts,其实隐性的成本是挺高的,我们经常可以看到一个简短的问题会带有上千个字符的 prompts。

而 davinci 的 fine-tune 模型的训练成本是较高的,Sealos 文档的训练一共向专属模型中输入了 25 万多个 token,训练时间 1 个小时左右,成本 8 美元。但一旦获得专属模型后,后续的聊天中就不再需要做预检索和背景知识的 prompts 了,可以直接进行关于该领域的知识问答。不仅 token 消耗会变小,而且速度也会更快。

Sealos 4.0 文档的专属模型是davinci:ft-personal:sealos-doc-2023-03-11-13-00-02 ,有兴趣的同学可以试试,我不确定是否是所有人都可以使用的。

效果

这里我比较了一下 DocsGPT 和简单的 fine-tune 模型在 OpenDigger 下的效果。

7fd8df53ba50a9f11f6c64657c1c1ec4.png

54e2f120b6cb8f257cfb9a8dcdfa5dbf.png

第一张是 DocsGPT 的效果,第二张是 davinci fine-tune 模型的效果。可以看到两个表现都还不错,但也存在明显的差异:基于 ChatGPT 的结果看起来更好一些,因为它具有更好的语言能力,甚至会做一些延伸和扩展,虽然有些是错误的。而专属模型的回答更加简洁,而且与 prompts 有较大的关系,因此对细节的掌握更多一些。

由于专属模型的回答与 prompts 的质量非常相关,所以更好的训练数据一定会让其表现更好。目前只是使用了最简单的 ChatGPT,而且给到的任务可能不足够好,所以结果还有提升的空间。但可以看到 ChatGPT 对于文本的理解还是很强的,尤其是对于一些结构化的文本,例如对表格的理解是很强的。如果进一步优化第一步构造 prompts 数据的逻辑,再加上一些人工的调整和修正,效果应该会更好。

未来

其实基于大模型的可能性真的非常多,有想象力的话可做的事情太多了,例如将自己的思想和博客作为输入,可以训练出一个包含自己想法的模型,然后给他一个定位是模仿人进行交流,那么就可以得到一个你的虚拟人了,很多情况下,对于领域 KOL,完全可以通过这种方式和粉丝互动,粉丝可以直接针对他的思想来进行提问和交流。

而对于不善写作的人,可以把自己的想法按照简单的问答对的形式输出来训练自己的专属机器人,再配合大模型本身的语言和逻辑能力帮助自己撰写包含自己思想的文章,应该也是非常不错的思路。

对于一个以前从来没自己做过机器学习训练的入门者,最近几天还是非常津津有味的做了一些尝试,而且效果还是比较惊艳的,也欢迎有兴趣做 prompts engineering 的同学一起交流心得。

作者丨Frank

编辑丨王梦玉

相关阅读 | Related Reading

bbdd30459e1462278917f1423b9f441f.png

开源的未来:启动 Open100衡量在新市场中推动 OSS 的采用

697fc7b55f89a077905bd394c565a071.jpeg寻找机器人:为什么我们不应该“隐藏人类”

开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、项目孵化” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。

2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近九年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了数百家赞助、媒体、社区伙伴。

7188b645a8f2cb08bf17f1e2b820d827.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/6281.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

得ChatGPT者,得智能客服天下?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在现代社会,高效、专业的客服服务已成为企业、组织机构竞争力的关键要素。智能客服系统应运而生,智能客服系统对客服的赋能作用和价值主要表现在提高效率、降低成本、优化用户体验、深度挖掘用户需求…

用winform开发ChatGPT对话应用

用winform开发ChatGPT对话应用 最近ChatGPT非常火热,本着有热闹就凑的心理,我也上手玩了一把。不玩不知道,玩了吓一跳,这家伙的火,是自己把自己点燃的。不客气的说,OpenAI给人类重新创造了一个神&#xff…

怎么使用ChatGPT解决嵌入式开发的难题

嵌入式开发的痛点 当我们在上手一个新的嵌入式平台,会不可避免地遇到一些问题。我们该如何解决这些问题?以及在解决之后如何形成技术能力沉淀在自己的知识库里?这可能是广大嵌入式开发者共同的诉求。 以我为例,以往我遇到一些知识…

ChatGPT桌面应用程序

众所周知,ChatGPT大火,但大家不免会在访问网站的时候出现各种各样的问题,(网络连接超时,使用频率限制,需要搭建梯子等问题)所以,我制作了一个基于Python的利用ChatGPT官方内测API的桌…

应用程序错误,如何解决?急

1.在网上搜索了很多消息,例如下图修复。 2.对c库卸载重新安装,更新, 3.原win10系统,更新到win11系统。 4.使用sfc /SCANNOW命令运训, 以上这些均未解决该问题,还是会出现“应用程序无法正常启动(0xc0000…

New Bing怼人、说谎、PUA,ChatGPT已经开始胡言乱语了

最近,来自大洋彼岸那头的ChatGPT科技浪潮席卷而来,微软将chatGPT整合搜索引擎Bing开启内测后,数百万用户蜂拥而至,都想试试这个「百事通」。 赶鸭子上架,“翻车”了? 但短短上线十几天,嵌入了…

《花雕学AI》不用花钱,也能和ChatGPT聊天!快来看看这五个免费客户端吧

引言 你有没有想过和一个智能的聊天机器人对话?一个可以陪你聊天、讲故事、写代码、模仿名人、生成歌词等等的聊天机器人?如果你有这样的想法,那么你一定要了解ChatGPT。ChatGPT是一个由OpenAI开发的人工智能聊天机器人程序,它使用…

ColossalChat:使用完整的 RLHF Pipeline复现ChatGPT 的开源解决方案

ChatGPT、GPT-4等大型AI模型和应用在全球范围内风靡一时,成为技术产业革命和AGI(Artificial General Intelligence)发展的基础。 不仅科技巨头竞相发布新品,许多来自学术界和产业界的人工智能专家也加入了相关的创业浪潮。 生成式…

ChatGPT进化的秘密

本文作者,符尧 yao.fued.ac.uk,爱丁堡大学 (University of Edinburgh) 博士生,本科毕业于北京大学,与彭昊,Tushar Khot 在艾伦人工智能研究院 (Allen Institute for AI) 共同完成英文原稿,与剑桥大学郭志江…

如何利用ChatGPT API 搭建私人 AI会话

搭建私有ChatGPT 访问谷歌的方式自行解决一、Github域名和证书私有服务器开始搭建私有Open Ai 访问谷歌的方式自行解决 对不起,没有魔法者止步!没有 API 止步! 对不起,没有魔法者止步!没有 API 止步! 对不…

ChatGPT的50种神奇用法,让你从此告别低效率!

在这个快节奏的时代,我们都渴望提高自己的工作效率,让每一分每一秒都能创造价值。然而,面对琐碎繁杂的任务,我们常常感到力不从心,无法摆脱低效率的困扰。但是,有了ChatGPT的加持,一切都将不再是…

大学教授“偷用”ChatGPT帮学生写推荐信 成功斩获剑桥奖学金

虽然高校对ChatGPT的禁令逐渐放松,教授们也开始用ChatGPT提升工作效率,不过用AI辅助工作还是一个不能公开的秘密。 ChatGPT在教育界毁誉参半,老师认为AI让自己留的作业变得毫无意义,而学生则认为本来那些也是毫无意义的作业&…

ChatGPT专业应用:快速生成推荐信

正文共 634 字,阅读大约需要 4 分钟 猎头/招聘人士必备技能,您将在4分钟后获得以下超能力: 快速生成推荐信 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | Lucy 编辑者 | Cindy ●此…

让ChatGpt可以看视频,看文档,帮你总结,并提供示例的github项目(附体验地址)

github地址:https://github.com/madawei2699/myGPTReader 演示 Stay updated with the latest news summaries daily with chatGPT. Use chatGPT to read and provide a summary of any webpage include the video(YouTube). 总之这个玩意有很多,可以…

景区剧本杀开发方案

景区剧本杀软件发展趋势包括以下几个方面: 个性化定制:随着用户需求的不断增加,景区剧本杀软件将更加注重个性化定制,满足不同用户的需求。 跨平台支持:景区剧本杀软件将逐渐实现跨平台支持,比如在…

情景剧本杀闯关系统

情景剧本杀闯关软件的开发需求通常包括以下几个方面: 剧本设计:开发者需要根据用户需求和市场调研,设计不同主题和难度等级的剧本内容,以及游戏过程中的任务、角色和道具等。 游戏引擎开发:为了实现游戏过程中…

2021年剧本杀专题研究报告

1. 从传统密室到剧本杀,线下实景娱乐形态持续迭代 1.1. 什么是剧本杀? 伴随着《明星大侦探》等推理综艺走红,近年以密室逃脱、剧本杀为代表的新兴线下娱乐方 式逐渐取代 KTV、传统桌游等成为最热门的线下游戏之一。根据艾瑞咨询&#xff0c…

学习玩调用方法后———自制剧本杀游戏

实现效果 英雄类代码 package hero;public class Hero {//静态特征String name; //姓名double aggressivity; //攻击力double defenf; //防御力double vitality; //生命力//构造方法//无参构造public Hero() {}//有参构造方法public Hero(Str…

儿童剧本杀行业是好生意吗?剧本杀门店管理系统

红楼梦、西游记、水浒传、三国演义是中国四大名著,几乎每个中国人上到70岁老人,下到十岁小学生都知道,同时还有花木兰、包青天、八仙过海等故事也都耳濡目染,小说描述的淋漓尽致,影视剧老戏骨们将每个角色刻画的深入人…