深入浅析,一步步用GPT打造你的聊天机器人

使用GPT基于你自己的文档构建聊天机器人的分步指南。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

与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笔记本上运行以下命令。这些命令将同时安装LlamaIndexOpenAI

!pip install llama-index
!pip install openai

接下来将在python中导入这些库,并在一个新的.py文件中设置OpenAI API密钥。

# 导入必要的库
from llama_index import GPTSimpleVectorIndex, Document, SimpleDirectoryReader
import 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)本身就很强大,但如果把它与其他工具、数据或流程结合起来,它的力量也会被大大增强。

推荐书单

《Python从入门到精通(第2版)》

《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。

《Python从入门到精通(第2版)》【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《Python从入门到精通(第2版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13284890.html

精彩回顾

《用好这9个技巧,让你的Python代码“飞”起来》

《领略数学之美,使用Python创建分形图案》

《使用Python进行自动化录屏》

《ChatGPT插件使用攻略,解锁互联网新体验》

《使用ChatGPT API创建Python文档,竟然如此简单》

《AIGC时代,用Midjourney设计UI,跟“灵魂画手”说拜拜》

《GPT-4已来,Python API使用最新版GPT》

微信搜索关注《Python学研大本营》,加入读者群

访问【IT今日热榜】,发现每日技术热

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

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

相关文章

深入理解Python中的依赖注入

一文带你深入了解Python依赖注入。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 简介 依赖注入是软件工程中使用的一种设计模式,它允许在创建对象时由外部提供其依赖关系,而不是自己创建这些依赖关系。换句话说&a…

独立开发变现周刊(第84期):一个地理位置API服务,月收入1.5万美元

分享独立开发、产品变现相关内容,每周五发布。 (合集:https://ezindie.com/weekly ) 目录 1、tiny.host: 简单部署你的web项目2、Verif Tools: 一个在线虚拟身份信息生成器3、screen.studio: 一个桌面端的录屏编辑工具4、一个地理位置API服务&#xff0c…

李彦宏:十年后不会写提示词或被淘汰;GitHub发布Copilot X,动动嘴就能生成代码;Vite 4.2 发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

22个提升生产力的工具推荐,稳了

子曰:工欲善其事,必先利其器。 本文给大家推荐22个提高生产力的工具,总有一款符合你的需求。😄😄😄 提高生产效率工具推荐 滴答清单/Todoist文件检索利器:Everything文件管理软件-Allen Explor…

百度抢先发布中国版ChatGPT——文心一言,现已开通测试申请

3月16日,百度抢先其他国内科技巨头一步,率先发布被誉为中国版ChatGPT的“文心一言”。 即日起,百度也通过“百度智能云”官网正式开发“文心一言”的预约,申请云服务测试。 但是,目前百度智能云只面向企业级客户开放文…

chatgpt赋能python:Python录制屏幕:如何用Python录制屏幕

Python录制屏幕:如何用Python录制屏幕 如果你曾经想过如何在电脑上录制自己的屏幕以制作教学视频或演示产品,那么你需要了解一些关于Python录制屏幕的知识。Python是一门强大的动态编程语言,因其易于学习、连接数据库和编写简洁的代码&#…

chatgpt赋能python:Python中常见的Module报错及解决方法

Python中常见的Module报错及解决方法 在Python编程过程中,经常会使用各种第三方库和模块,以提高代码的效率和可读性。然而,在使用这些模块时,我们有时会遭遇各种各样的错误和异常。本文将介绍Python中常见的Module报错现象及其解…

chatgpt赋能Python-pythonimport报错

Python中Import报错的处理方法 Python是一款非常流行的编程语言,也是众多开发者选择的首选。在代码中,我们通常会使用import语句来引入其他模块,但在实际开发过程中,我们有时会遇到ImportError:No module named XXX等…

chatgpt赋能Python-pythonnumpy报错

Python中Numpy出现报错的解决方法 介绍 Numpy是Python中常用的数学计算库,其支持高效的数组处理和运算,是很多数据科学工程师必备的编程工具之一。由于其强大的功能和灵活性,Numpy在各行各业都有广泛的应用。但有时候在使用Numpy时可能会出…

Open Ai 常见接口参数说明以及常见报错总结

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

chatgpt赋能python:Python打开文件遇到的常见报错类型

Python打开文件遇到的常见报错类型 Python作为一种高级编程语言,在开发过程中经常需要读取或写入文件。然而,在实际操作中,我们经常会遇到一些FileNotFoundError、PermissionError等错误类型。在本文中,我将介绍常见的Python打开…

记者亲测GPT-4实际能力 围观10种职业“受虐”现场

出品|网易科技《智见焦点》 作者|赵芙瑶 编辑|丁广胜 作为OpenAI公司开发的一种生成式人工智能工具,有关学者以“阿拉丁神灯”和“潘多拉魔盒”来比喻ChatGPT所隐藏的潜能和可能带来的风险。自其发布以来,有关ChatGPT是…

文本聚类与摘要,让AI帮你做个总结

你好,我是徐文浩。 过去的十多讲里,我为你介绍了各种利用大语言模型的方法和技巧。特别是在过去两讲里,我们也尝试更加深入地利用开源代码帮我们完成一些工作。通过llama-index这样的开源库,我们能够将自己的数据和大语言模型连接…

物以类聚人以群分,通过GensimLda文本聚类构建人工智能个性化推荐系统(Python3.10)

众所周知,个性化推荐系统能够根据用户的兴趣、偏好等信息向用户推荐相关内容,使得用户更感兴趣,从而提升用户体验,提高用户粘度,之前我们曾经使用协同过滤算法构建过个性化推荐系统,但基于显式反馈的算法就…

01表盘控件-01汽车仪表盘-gaugecar

一、运行效果 二、功能特点 可设置范围值,支持负数值。可设置精确度,最大支持小数点后3位。可设置大刻度数量,小刻度数量。可设置开始旋转角度,结束旋转角度。可设置外圆背景、内圆背景、饼圆三种颜色、刻度尺颜色、文字颜色。自…

01表盘控件-17飞机仪表盘-gaugeplane

一、运行效果 二、功能特点 可设置外边框渐变颜色。可设置里边框渐变颜色。可设置主背景颜色、遮罩层颜色、刻度尺颜色。可设置线条颜色、文字颜色、指针颜色、遥感句柄颜色。可设置旋转角度。可设置滚动值。三、公共接口 public Q_SLOTS://设置外边框渐变颜色void setBorderO…

浅谈大数据之足球盘口赔率水位分析的思路与神准预测技巧(一)

足球运动是当今世界上开展最广、影响最大、最具魅力、拥有球迷数最多的体育项目之一,尤其是欧洲足球,每年赛事除了五大联赛(英超、西甲、德甲、法甲、意甲)之外,还会有欧冠(欧洲冠军联赛)&#…

chatgpt赋能python:Python数据分析

Python数据分析 什么是Python数据分析 Python是一种简单易学、功能强大的编程语言,它是数据科学中最常用的开发语言之一。数据分析是Python的主要用途之一。Python的开源性、易于使用和拥有强大的数据科学库使它成为学术和商业环境下最受欢迎的数据分析工具之一。…

Telegram-This phone number is banned.手机号被禁止解决方法

问题: 解决方法:1.点击提示框左下角的HELP弹出如下提示框: 2.在手机上下载一个QQ邮箱,然后点击左下角“通过邮件发送”,会出现下图: 会自动生成申诉的邮件,只需点击发送邮件即可。大约要等待…

德国法庭禁止Whatsapp,Facebook和Instagram

Whatsapp,Instagram和Facebook这些智能手机应用程序侵犯了加拿大公司黑莓(Blackberry)所拥有的专利,因此慕尼黑地方法院因作出裁决,Facebook可能将禁止在德国提供这些应用程序。 加拿大软件公司黑莓(Blackberry)在针对…