用 ChatGPT 采用自有数据集训练问答机器人

81e2c4e45d8d527fb2e28ec77c325756.gif

前言

最近 LLM 模型很火,chatGPT 涵盖的知识范围之广,令人叹为观止。然而码农肯定不能满足于现有的知识库,要扩展自有数据才能发挥其更大的实用价值。

一般来说,深度学习模型大多采用 finetune 的方式来增加训练数据,但 LLM 模型太大了,训练成本过高。无论是离线或是在线训练样本,短时间只有 OpenAI 可为。随着通用大模型的兴起,另外一种被称为 ”前导词注入“ 的提示工程(prompt)逐渐成熟,也能接入自有数据。

本篇主要采用后面这种方法,将软件开发文档转换为矢量数据,再通过 chatGPT 构建更好的问答交互体验,利用强大的归纳搜索能力,大大提高信息获取效率。

001d2eda24d93527cbaebbea4533dbc3.png
文心一言

环境准备

安装 python 3.8

conda create -n chat python=3.8
conda activate chat

配置 jupyter 环境

conda install ipykernel
python -m ipykernel install --user --name chat --display-name "chat"

安装 pytorch

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
76c1fb0c8134633e6d440789b9b21d86.png

这里注意版本匹配,我笔记本上采用的是 cuda 11.6 的版本。若显卡不够强大的话,也可以安装 cpu 版本。

安装依赖

pip install langchain
pip install unstructured
pip install openai
pip install pybind11
pip install chromadb
pip install Cython
pip3 install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"
pip install unstructured[local-inference]
pip install layoutparser[layoutmodels,tesseract]
pip install pytesseract

安装编译 detectron2

git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2
37632f07afcf6b8697ebb619d428bb31.png

由于要在 windows 环境下通过源码编译 detectron2,这里有几个坑要提示一下:

pdf2image 出错

pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
dd189c7183e158f8e0944cdb16d93caf.png
https://github.com/oschwartz10612/poppler-windows/releases/

下载 poppler,并添加环境变量。

pdfminer 与 pdfminer.six 版本冲突

'LTChar' object has no attribute 'graphicstate' Error in a docker container

卸载 pdfminer 和 pdfminer.six 后重新安装即可修复。

329d98228d58ba9e7053d440cd8b7a14.png

gcc 和 ninja

编译过程中需要配置 gcc,我这里采用的是 MinGW,而 ninja 在windows 下并非可选(否则编译不通过),需放置到 Path 下。(文末有相关文件下载链接)

b0db95aaa87a114a0e9c78aec612eb00.png

准备训练数据

将 pdf 文档 放置于 /text 目录下,可放置多个文件,这里使用的是音视频的开发文档 meeting.pdf。

jupyter notebook
8a2278429b950a52cc991c1a57f4c225.png
import os
os.environ['OPENAI_API_KEY'] = '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'

万事俱备,我们来配置一下 OpenAI 的 api key。(这里省略一万步,最近申请 ChatGPT 的难度又提升了不少,看来白嫖党给 OpenAI 的算力压力很大啊~~,plus 又对国内发行的国际信用卡拒绝,总之很烦)

from langchain.document_loaders import UnstructuredPDFLoader
from langchain.indexes import VectorstoreIndexCreator

配置训练采用 gpu 或是 cpu

from detectron2.config import get_cfg
cfg = get_cfg()    
cfg.MODEL.DEVICE = 'gpu' #GPU is recommended

将自定义数据导入loader

text_folder = 'text'
loaders = [UnstructuredPDFLoader(os.path.join(text_folder, fn)) for fn in os.listdir(text_folder)]
d5b11c33b35759aa50b65eb224ff58af.png

训练数据

文本矢量化,并接入 ChatGPT

index = VectorstoreIndexCreator().from_loaders(loaders)

由于开发文档非常小(169k),在我的 1060 的显卡上只需要不到1分钟就完成了训练,cpu 会稍微慢些。

5eb0c300f256fc5abc1899752f3f05bd.png

API 的 使用费用也十分的低廉,免费额度够用100多次。重度使用者,估计要考虑上 plus 版本了。

f66f425ad2be609735a226f50c8e1c19.png

问答效果

0d72eb3020f13d986ce1afc7ec24b99c.png

服务器的主入口文件是什么?

query = "服务器的主入口文件是什么?"
index.query(query)

' app.js'

9a2556f638fbafaa4b870c5478e8163a.png

这个问题比较简单,能直接在文中找到答案,回答是正确的。

routes/index.js有什么作用?

query = "routes/index.js有什么作用?"
index.query(query)

' routes/index.js is used to define the routes for the application. It is responsible for mapping incoming requests to the appropriate controller functions.'

这个问题显然文档中并没有详细描述,只提到了路由定义文件,这回答大概率是 ChatGPT 做出的补充说明。

介绍一下这个项目?

query = "介绍一下这个项目?"
index.query(query)

' 这个项目包含了一个服务器,一个README.md文件,一个app.js文件,以及double_room,multi_room和live_room三个文件夹,每个文件夹都包含一个index.js文件,以及一些其他的js文件,这些文件用于实现双人房间,多人房间和直播房间的功能,还有一个selfHost的URL,以及一个logic/double_room_mgr.js文件和一个http://localhost:5757/weapp/utils/logfilelist的URL。'

这个属于归纳性问题,显然 ChatGPT 通读了全文后总结的还算不错。

哪个文件处理云通讯相关?

query = "哪个文件处理云通讯相关?"
index.query(query)

' double_room_mgr.js'

e91afafbc087a197bc397e5f772c4108.png

这个问题 chat老师“翻车”了,可能是提问里的“相关”,在中文的上下文环境中产生了歧义,把下一个模块的文件当做了答案。

如何服务器部署?

query = "如何服务器部署?"
index.query(query)

' The server is configured with upstream app_weapp, a server block listening on port 80, and a server block listening on port 443. The server_name is set to the selfHost URL, and the ssl_certificate and ssl_certificate_key are set to the specified paths. The location block is configured to proxy requests to the upstream app_weapp. The files listed in the context are not related to server deployment.'

对于文档里没有的内容,ChatGPT 就开始放飞了,丫丫了一堆正确的废话。

总体效果还是很惊艳的,远远超出了我的想象,特别是归纳总结能力上。搜索定位功能来说,对于开发文档,我们码农可能习惯用关键字匹配搜索更高效,而在模糊搜索领域,其实才是 chat 老师真正的用武之地。

可以想象一些使用场景,通读个人小说,归纳出人物关系和故事线;文案的风格提取,并应用到自己的产品上;读各种金融研究报告,给出投资建议。。。

「未来需要一个会提问的人,一个足够庞大的基础语言模型,以及一份足够专业的指导文档,垂直领域专家就这么诞生了!」

展望和改进

本篇每次将文本构建成矢量数据将花费很长的时间(特别是采用 CPU 方式的话),若能将这部分工作用向量数据库来完成,速度将提升几个数量级。

鉴于现在 chatGPT 在国内服务的不友善,还是很期待类似百度的“文心一言”,阿里的“通义千问“,包括讯飞的大语言模型尽快成熟起来。后续更改 api 接口可切换不同的服务,未来算力问题若不是瓶颈,甚至于可以考虑自建语言模型来做本地化部署,这对知识图谱类应用会是一个有力的竞争者。

ps:吐槽一下联想的售后,本来题图想用stable diffusion来生成的,结果把我一台3090训练机“从CPU降频故障”修到“主板烧CPU”,也是没谁了...

用文心一言暂时顶一下,效果也还不错,国产大模型加油!

源码下载

ea8c13fbe164dd0d72cfdfd3732e2622.png

本期相关文件资料,可在公众号“深度觉醒”,后台回复:“chat01”,获取下载链接。

f543a9848923722e47610de0a85bf96f.gif

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

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

相关文章

全网最详细中英文ChatGPT-GPT-4示例文档-个性化角色智能对话从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门个性化角色智能对话应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片…

【ChatGPT】ChatGPT-5 比 ChatGPT-4 强在哪?GPT-6会如何演化?

文章目录 1. 引言2. ChatGPT-5背后的技术原理3. ChatGPT-5与ChatGPT-4的对比4. ChatGPT-5的潜在应用领域5. ChatGPT-5对人类社会的挑战6. GPT-6的演化方向7. 总结 1. 引言 随着人工智能和自然语言处理技术的迅速发展,OpenAI推出了ChatGPT-5,这是一款更先…

个人考研写的英语作文,仅支持参考

一. 总体框架 第一段: The table(diagram)/mixed chart/column chart/per chart(饼状图) clearly reveals the statistics of 主题对象(如 staff’s job satisfaction in a certain company/the market growth of web games of China&#…

考研英语作文 独家手写笔记

英一 数一 已上岸 个人总结笔记模板 可供参考 小作文 建议信 Dear friends, I am pleased to be informed that you will pursue your further study in our university. I would like to extend our warmest welcome to you on behalf of the Students Union The following …

考研 英语一 大作文-图画作文 (二)---第二段写作攻略

第一段写作攻略在这里:戳一戳 跳转查看 第一段描述图画,第二段就是 论点论据 第二段第一句话:提出论点-----对主题词的评判 所谓的提出论点,其实就是对主题词的评判 什么是主题词呢 02年真题 一个美国女孩穿着中国服饰 主题…

【考研】2020-Part A 作文(英一)

可搭配以下链接一起学习: 【考研】2018-Part B 作文(英一)_住在阳光的心里的博客-CSDN博客 目录 一、2020 Part A (一)题目及解析 (二)优秀范文 (三)参考译文 &a…

考研英语一历年真题写作(小作文+大作文)自己练习与背诵

考过GRE,当时背过很多单词、段落、文章,回过头看,已然随着艾宾浩斯曲线遗忘掉。 本文用于记录考研英语作文。 平时英文是阅读输入为主,输出很少,借以公开的博客,督促自己更正与提升。 -2020年7月18日23点…

考研 英语一 大作文-图画作文 (一)----第一段描述图画写作攻略

目录 英语一大作文攻略 (看清楚哦) 第一段如何写? 第一段 第一句话 描述图画 如果是双图的情况: 第一段 第二句话 翻译配图文字 英语一大作文攻略 (看清楚哦) 形式呢没啥好说的 给你一幅漫画 要写三段 1)desc…

雅思经验(15)之让AI帮你改雅思作文

这是我今天刚写的一篇关于是科学技术学科还是历史学科重要的讨论雅思大作文。 随后我给到了youbot ai 让它帮我改作文。 Nowadays an increasing number of people are concerned about what subject is more important, however, whether science and technology or history…

雅思大作文写作模版

模版整理自Vince9120老师,逻辑清晰,对于写作遇到瓶颈的同学有帮助,而且易上手使用。Vince老师视频在Bilibili,备考时间充足的同学建议观看学习! 一、大作文段落详情及分布 第一段:开头,大观点…

英语作文人工智能免费在线批改打分 无需注册 微软小英作文打分 托福 雅思 高中作文 GRE

这篇文章主要是改打分系统的评测。托福雅思高考等https://app.mtutor.engkoo.com/englishwriting/,gre见最下面。 另外人工智能的意思是,微软小英会根据你的文章内容帮你改作文,比如他能补全你缺少的相关名词。 目录 先展示下评分功能&…

人工智能Chatgpt:开启无限可能的智能世界

作为目前最为先进的人工智能技术之一,自然语言处理技术在近年来得到了越来越多的关注。而ChatGPT,则是这些技术中最为经典和出色的代表之一。 ChatGPT,顾名思义,就是一个可以与人类用户进行对话的人工智能聊天机器人。它是由Open…

吴恩达ChatGPT网课笔记Prompt Engineering——训练ChatGPT前请先训练自己

吴恩达ChatGPT网课笔记Prompt Engineering——训练ChatGPT前请先训练自己 主要是吴恩达的网课,还有部分github的prompt-engineering-for-developers项目,以及部分自己的经验。 一、常用使用技巧 prompt最好是英文的,如果是中文的prompt&am…

哈工大车万翔:ChatGPT时代,NLPer 的危与机

note ChatGPT的诞生,源于研究者「暴力美学」的手段。 如果大胆预测,ChatGPT能火几年,我猜可能是2到3年的时间,到2025年大概又要更新换代了。 工业界相较于学术界拥有巨大优势。这种「AI 的马太效应」会造成胜者通吃的局面。更加…

每一个人都应该明白的ChatGPT所带来的意义

每一个人都应该明白的ChatGPT所带来的意义 ChatGPT的横空问世,因其更高的智能程度、更宽泛的领域知识、更灵活的响应能力、更自然的对话语境使整个互联网都受到极大的冲击。 我本人试用了一段时间后,并结合在网上看到的文章、评论、观点,想说…

ChatGPT实现数据集模拟生成,ChatGPT实现密码生成

数据集模拟生成 之前章节我们已经演示过ChatGPT 如何根据 prompt 编写文章或续写文章,文本生成的作用不仅仅在语文方面有用,本节我们演示另一种场景,利用 ChatGPT 来生成数据。看似作用差不多,其实这是目前开源社区非常常用的大语…

将ChatGPT变成Midjourney提示生成器

已经有人总结过可以让ChatGPT作为Midjourney图像生成的模板。在本文中,我们将展示如何根据个人用例创建这些提示,这可以让ChatGPT生成的提示可控性更高。 选择提示模板 Midjourney的模板结构性很强,所以我们这里使用一下的结构: …

telnet登录并使用SMTP和POP收发邮件(QQ邮箱)

目录 一、POP3、SMTP和IMAP协议原理1、POP协议2、SMTP协议3、IMAP协议4、POP3与IMP3的差异 二、开启QQ邮箱的SMTP服务1、登陆QQ邮箱2、找到“POP3/SMTP服务”和“IMAP/SMTP服务”项3、需要发送短信到下面号码4、开启之后,系统会给你一个“授权码” 三、开启TELNET客…

首批 ChatGPT 应用将打响 To B 的编程应用争夺战!

整理 | 王启隆 何苗 出品 | CSDN(ID:CSDNnews) “ChatGPT 爆发意味着 AI 的 iPhone 时刻来了,下一步就是应用时刻,新应用时代将来临。那程序员怎么办呢?会被替代吗?我认为不会,但程序…

SQL优化这么做就对了

作者 | 狼爷 来源 | https://www.cnblogs.com/powercto/p/14410128.html 前言 在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越…