深入浅析,一步步用GPT打造你的聊天机器人
与ChatGPT聊天很有趣,而且信息量很大 —— 与它闲聊可以探索一些新的想法。但这些都是比较随意的用例,新奇感很快就会减弱,特别是当人意识到它能产生幻觉的时候。
如何以更高效的方式使用ChatGPT呢?在OpenAI发布GPT3.5系列API后,可以做的事情远不止是闲聊。QA(问答)是企业和个人使用的一个非常有效的用例 —— 用自然语言向机器人询问自己的文件/数据,它可以通过从文件中检索信息并生成回应来快速回答。可以把它用于客户支持、综合用户研究、个人知识管理等等。
向机器人询问与文件相关的问题。使用稳定扩散法生成的图像。
(相关资料图)
本文将探讨如何根据自己的数据建立问答聊天机器人,包括为什么有些方法行不通,以及如何利用llama-index和GPT API以高效的方式建立一个文档问答聊天机器人的步骤指南。
(如果只想知道如何建立问答聊天机器人,可以直接跳到“逐步建立文档问答聊天机器人”部分)
探索不同的方法当ChatGPT问世时,可以想到把它作为自己工作的一个助手,从而节省自己的时间和精力等。
首先想到的是用自己的数据对GPT模型进行微调来实现这个目标。但是,微调需要花费相当多的钱,而且需要一个有实例的大数据集。也不可能在文件有变化时每次都进行微调。更为关键的一点是,微调根本不可能让模型“知道”文档中的所有信息,而是要教给模型一种新的技能。因此,对于(多)文档质量保证来说,微调并不是一个好办法。
第二个方法是通过在提示中提供上下文来进行提示工程。例如,可以在实际问题之前附加原始文档内容,而不是直接问问题。但是GPT模型的注意力是有限的 —— 它只能接受提示中的几千字(大约4000个标记或3000字)。只要有成千上万的客户反馈邮件和数百个产品文档,就不可能给它提示中的所有背景。如果向API传递一个长的上下文,也是很昂贵的,因为定价是基于使用的代币的数量。
I will ask you questions based on the following context:— Start of Context —YOUR DOCUMENT CONTENT— End of Context—My question is: “What features do users want to see in the app?”
由于提示符对输入标记的数量有限制,想出了这样一个主意来解决问题:首先使用一种算法来搜索文档并挑选出相关的摘录,然后只将这些相关的语境与问题一起传递给GPT模型。在过程中需要使用一个简单、便捷的gpt-index(现在改名为LlamaIndex)的库。
从文件中提取相关部分,然后将其反馈给提示。
在下一节中,将给出一个使用LlamaIndex和GPT在自己的数据上建立一个问答聊天机器人的分步教程。
逐步建立文档问答聊天机器人在这一节中,将用LlamaIndex和GPT(text-davinci-003)在现有文档的基础上建立一个问答聊天机器人,这样就可以用自然语言提出关于文档的问题,并从聊天机器人那里得到答案。
前提条件在开始本教程之前,需要做一些准备:
OpenAI API密钥,可以在https://platform.openai.com/account/api-keys找到。一个文件数据库。LlamaIndex支持许多不同的数据源,如Notion、Google Docs、Asana等。在本文中将只使用一个简单的文本文件进行演示。一个本地的Python环境或一个在线的Google Colab笔记本。工作流程工作流程很简单,只需要几个步骤:
1.用LlamaIndex为你的文档数据建立一个索引。2.用自然语言查询该索引。3.LlamaIndex将检索相关部分并将其传递给GPT提示。4.向GPT询问相关的上下文并构建一个回应。LlamaIndex所做的是将原始文档数据转换成一个矢量的索引,这对查询来说是非常有效的。它将使用这个索引,根据查询和数据的相似性,找到最相关的部分。然后,它将把检索到的内容插入到它将发送给GPT的提示中,这样GPT就有了回答问题的背景。
设置首先需要安装库。只需在终端或谷歌Colab笔记本上运行以下命令。这些命令将同时安装LlamaIndex和OpenAI。
!pip install llama-index!pip install openai
接下来将在python中导入这些库,并在一个新的.py文件中设置OpenAI API密钥。
# 导入必要的库from llama_index import GPTSimpleVectorIndex, Document, SimpleDirectoryReaderimport osos.environ["OPENAI_API_KEY"] = "sk-YOUR-API-KEY"构建索引并保存
在安装了所需的库并将其导入后,将需要构建一个文档的索引。
为了加载文档,可以使用LllamaIndex提供的SimpleDirectoryReader方法,或者可以从字符串中加载它。
# 从一个目录中加载documents = SimpleDirectoryReader("your_directory").load_data()# 从字符串中加载,假设将数据保存为字符串text1,text2,...text_list = [text1, text2, ...]documents = [Document(t) for t in text_list]
LlamaIndex还提供各种数据连接器,包括Notion、Asana、Google Drive、Obsidian等。可以在https://llamahub.ai/找到可用的数据连接器。
加载完文档后,就可以用以下方法简单地构建索引了:
# 构建一个简单的向量索引index = GPTSimpleVectorIndex(documents)
如果想保存索引并加载它以便将来使用,可以使用以下方法:
# 将索引保存在`index.json`文件中index.save_to_disk("index.json")# 从保存的`index.json`文件中加载索引index = GPTSimpleVectorIndex.load_from_disk("index.json")查询索引并获得响应
查询索引很简单:
# 查询索引response = index.query("What features do users want to see in the app?")print(response)
一个回应的例子。
然后就可以得到答案了。在幕后,LlamaIndex将接收提示,在索引中搜索相关块,并将提示和相关块传递给GPT。
一些高级用法的说明上面的步骤只是展示了使用LlamaIndex和GPT回答问题的一个非常简单的入门用法。但可以做得比这更多。事实上,可以配置LlamaIndex来使用不同的大型语言模型(LLM),为不同的任务使用不同类型的索引,用一个新的索引来更新现有的索引,等等。如果有兴趣,可以在https://gpt-index.readthedocs.io/en/latest/index.html,阅读他们的文档。
总结本文中展示了如何结合使用GPT和LlamaIndex来构建一个文档问答聊天机器人。虽然GPT(和其他LLM)本身就很强大,但如果把它与其他工具、数据或流程结合起来,它的力量也会被大大增强。
-
深入浅析,一步步用GPT打造你的聊天机器人
Python学研大本营 2023-04-04
-
热消息:4月4日午间4家公司出现利空消息
证券之星 2023-04-04
-
18分大败,辽宁队轰然倒下,第2之争大反转,广东队或成最后赢家 最新
老球痞 2023-04-04
-
夯实数字经济安全发展基石_当前关注
海口网 2023-04-04
-
今日视点:初步结果显示米拉托维奇在黑山总统选举中胜出
新华网 2023-04-04
-
天天快讯:江西上线“公民身后一件事”服务
江西日报 2023-04-04
-
环球新消息丨雅化集团:Core公司提供的第一批锂精矿预计下月发出;公司已具备原矿选矿的相关条件,成本优势明显
证券之星 2023-04-04
-
昆明市五华区普吉街道西景社区开了一家慈善超市 环球今热点
云南网-春城晚报 2023-04-04
-
资讯推荐:生化危机4存档位置bgm_生化危机4存档位置
科学教育网 2023-04-04
-
叙利亚约旦自贸区员工巴士遭炸弹袭击 16人受伤
每日经济新闻 2023-04-04
-
深入浅析,一步步用GPT打造你的聊天机器人
Python学研大本营 2023-04-04
-
热消息:4月4日午间4家公司出现利空消息
证券之星 2023-04-04
-
18分大败,辽宁队轰然倒下,第2之争大反转,广东队或成最后赢家 最新
老球痞 2023-04-04
-
夯实数字经济安全发展基石_当前关注
海口网 2023-04-04
-
今日视点:初步结果显示米拉托维奇在黑山总统选举中胜出
新华网 2023-04-04
-
天天快讯:江西上线“公民身后一件事”服务
江西日报 2023-04-04
-
环球新消息丨雅化集团:Core公司提供的第一批锂精矿预计下月发出;公司已具备原矿选矿的相关条件,成本优势明显
证券之星 2023-04-04
-
昆明市五华区普吉街道西景社区开了一家慈善超市 环球今热点
云南网-春城晚报 2023-04-04
-
资讯推荐:生化危机4存档位置bgm_生化危机4存档位置
科学教育网 2023-04-04
-
叙利亚约旦自贸区员工巴士遭炸弹袭击 16人受伤
每日经济新闻 2023-04-04
-
公众空间是什么意思啊_公众空间是什么意思
互联网 2023-04-04
-
中国城市轨道交通里程破万公里 人均运营成本继续增加-每日热讯
中国经营网 2023-04-03
-
全球热门:1961年,美国记者偷拍梦露的照片,当时被身后男子双手抱住!
深聊电竞 2023-04-03
-
重点聚焦!南安市依法管网治网 维护清朗网络空间
闽南网 2023-04-03
-
冯小刚还要糟蹋多少女演员
新浪娱乐 2023-04-03
-
衔接基础教育与高等教育 上海交大启动2023年“学森挑战计划”
新民晚报 2023-04-03
-
【天天聚看点】旅行到宇宙边缘观后感第一集_旅行到宇宙边缘观后感
科学教育网 2023-04-03
-
环球聚焦:利柏特:累计回购约342万股,占比0.76%
每日经济新闻 2023-04-03
-
黄河水利职业技术学院举办红旗渠设计师吴祖泰事迹展
开封广播电视报 2023-04-03
-
中国斡旋下,扎哈罗娃公开俄罗斯的谈判条件,和平几乎没戏
焦点防务 2023-04-03
-
【世界快播报】回迁房有房产证但是网上查不到_回迁房有房产证
互联网 2023-04-03
-
竞技网:0比2输给热刺后,切尔西高层开始怀疑波特
体坛+ 2023-04-03
-
ChatGPT概念股震荡走高,云从科技大涨超18%
同花顺财经 2023-04-03
-
如何检测寨卡病毒?寨卡病毒检测阳性怎么办? 环球热文
城市头条网 2023-04-03
-
长嘘一口气后,接下来,玉米准备出利空了!
新农观点 2023-04-03
-
日媒:日政府将出台“支援外国军队”制度 世界播资讯
参考消息 2023-04-03
-
探索非遗与旅游融合发展,江西景德镇古窑民俗博览区——古窑添薪 文旅“上新”(文化市场新观察)-天天实时
人民日报 2023-04-03
-
TikTok Shop英国和东南亚官方认证海外仓上线
网经社 2023-04-03
-
炒外汇使用均线交易法有哪些缺陷?
外汇帮 2023-04-01
-
环球头条:亚洲联网科技公布2022财年年度权益分配方案
同花顺金融研究中心 2023-04-01