如何使用自定义知识库构建自定义ChatGPT机器人

目录  隐藏 

使用自定义数据源为您的 ChatGPT 机器人提供数据

1. 通过Prompt提示工程提供数据

2. 使用 LlamaIndex(GPT 索引)扩展 ChatGPT

如何添加自定义数据源

先决条件

怎么运行的

最后的总结

使用自定义数据源为您的 ChatGPT 机器人提供数据

ChatGPT 已成为许多人日常用来自动执行各种任务的不可或缺的工具。如果您已经使用 ChatGPT 一段时间,您就会意识到它可能会提供错误的答案。这就提出了一个问题,即我们如何利用 chatGPT 来弥合差距并允许 ChatGPT 拥有更多自定义数据。

丰富的知识分布在我们每天接触的各种平台上,即通过工作中的 confluence wiki 页面、Slack组、公司知识库、Reddit、Stack Overflow、书籍、时事通讯和同事共享的 google 文档。跟上所有这些信息源本身就是一项全职工作。

如果您可以有选择地选择您的数据源并将该信息轻松地输入到 ChatGPT 对话中与您的数据,那不是很好吗?

1. 通过Prompt提示工程提供数据

在我们开始讨论如何扩展 ChatGPT 之前,让我们看看如何手动扩展 ChatGPT 以及存在哪些问题。扩展 ChatGPT 的传统方法是通过即时工程。

这很容易做到,因为 ChatGPT 是上下文感知的。首先,我们需要通过在实际问题之前附加原始文档内容来与 ChatGPT 进行交互。

我会根据以下内容向您提问:
- 内容开始-
您提供 ChatGPT 上下文的很长的文本
- 内容结束-

这种方法的问题是模型的上下文有限;它只能接受大约 4,097 个 GPT-3 代码。您很快就会遇到这种方法的障碍,因为它也是一个相当手动、乏味的过程,总是必须粘贴内容。

想象一下,您想将数百个 PDF 文档注入 ChatGPT。您很快就会遇到付费问题。您可能认为 GPT-4 是 GPT-3 的继任者。它刚刚于 2023 年 3 月 14 日推出,可以处理 25,000 个单词——大约是 GPT-3 处理图像的八倍——并且可以处理比 GPT-3.5 更细微的指令。这仍然具有相同的数据输入限制的基本问题。我们如何绕过其中一些限制?我们可以利用一个名为 LlamaIndex 的 Python 库。

2. 使用 LlamaIndex(GPT 索引)扩展 ChatGPT

LlamaIndex,也称为 GPT 索引,是一个提供中央接口以将您的 LLM 与外部数据连接起来的项目。是的,你没有看错。使用 LlamaIndex,我们可以构建如下图所示的内容:

自定义数据源输入 CHATGPT

LlamaIndex 将您现有的数据源和类型与可用的数据连接器连接起来,例如(API、PDF、文档、SQL 等)。它使您能够通过为结构化和非结构化数据提供索引来使用 LLM。这些索引通过消除典型的样板和痛点来促进上下文学习:以可访问的方式保留上下文以便快速插入。

处理提示限制——GPT-3 Davinci 的 4,096 个令牌限制和 GPT-4 的 8,000 个令牌限制——当上下文太大时变得更容易访问并通过为用户提供一种交互方式来解决文本拆分问题索引。LlamaInde 还抽象了从文档中提取相关部分并将其提供给提示的过程。

如何添加自定义数据源

在本节中,我们将使用 GPT“text-davinci-003”和 LlamaIndex 基于预先存在的文档创建一个问答聊天机器人。

先决条件

在我们开始之前,请确保您可以访问以下内容:

  • Python ≥ 3.7 安装在你的机器上
  • OpenAI API 密钥,可在OpenAI 网站上找到。您可以使用您的 Gmail 帐户进行单点登录。

  • 一些 Word 文档已上传到您的 Google 文档。LlamaIndex 支持许多不同的数据源。在本教程中,我们将演示 Google Docs。

怎么运行的

  1. 使用 LlamaIndex 创建文档数据索引。
  2. 使用自然语言搜索索引。
  3. 相关片段将由 LlamaIndex 检索并传递给 GPT 提示。LlamaIndex 会将您的原始文档数据转换为查询友好的矢量化索引。它将利用该索引根据查询和数据的匹配程度找到最相关的部分。然后,这些信息将被加载到提示中,提示将被发送到 GPT,以便 GPT 具有必要的背景来回答您的问题。
  4. 之后,您可以根据上下文中的提要询问 ChatGPT。

为你的Python项目创建一个新的文件夹,你可以调用mychatbot,最好使用虚拟环境或conda环境。

我们需要先安装依赖库。就是这样:

pip install openai 
pip install llama-index 
pip install google-auth-oauthlib

接下来,我们将导入 Python 中的库并在新文件中设置您的 OpenAI API 密钥main.py

import os 
import pickle

from

 google.auth.transport.requests import Request

from

 google_auth_oauthlib.flow import InstalledAppFlow 
from llama_index import GPTSimpleVectorIndex, download_loader
os.environ['OPENAI_API_KEY'] = 'SET-YOUR-OPEN-AI-API-KEY'

在上面的代码片段中,为清楚起见,我们明确设置了环境变量,因为 LlamaIndex 包隐含地需要访问 OpenAI。在典型的生产环境中,您可以将密钥放在环境变量、保险库或您的基础设施可以访问的任何机密管理服务中。

让我们构造一个函数来帮助我们对我们的 Google 帐户进行身份验证以发现 Google 文档。

def  authorize_gdocs (): google_oauth2_scopes = [ "https://www.googleapis.com/auth/documents.readonly"] cred = None if os.path.exists( "token.pickle" ): with  open ( "token.pickle " , 'rb' ) as token: cred = pickle.load(token) if  not cred or  not cred.valid: if cred and cred.expired and cred.refresh_token: cred.refresh(Request()) else :flow = InstalledAppFlow.from_client_secrets_file( "credentials.json" , google_oauth2_scopes) cred = flow.run_local_server(port= 0 ) with  open ( "token.pickle" , 'wb' )作为令牌:pickle.dump(cred, token)

要启用 Google Docs API 并在 Google 控制台中获取凭据,您可以按照以下步骤操作:

  1. 转到 Google Cloud Console 网站 (console.cloud.google.com)。
  2. 如果您还没有,请创建一个新项目。您可以通过单击顶部导航栏中的“选择项目”下拉菜单并选择“新建项目”来完成此操作。按照提示为您的项目命名并选择您要与之关联的组织。
  3. 创建项目后,请从顶部导航栏的下拉菜单中选择它。
  4. 从左侧菜单转到“API 和服务”部分,然后单击页面顶部的“+ 启用 API 和服务”按钮。
  5. 在搜索栏中搜索“Google Docs API”,然后从结果列表中选择它。
  6. 单击“启用”按钮为您的项目启用 API。
  7. 单击 OAuth 同意屏幕菜单并创建并为您的应用程序命名,例如“mychatbot”,然后输入支持电子邮件、保存并添加范围。

您还必须添加测试用户,因为此 Google 应用尚未获得批准。这可以是您自己的电子邮件。

然后,您需要为您的项目设置凭据才能使用 API。为此,请转到左侧菜单中的“凭据”部分,然后单击“创建凭据”。选择“OAuth 客户端 ID”并按照提示设置您的凭据。

设置凭据后,您可以下载 JSON 文件并将其存储在应用程序的根目录中,如下所示:

根目录中带有 GOOGLE 凭据的示例文件夹结构

设置凭据后,您可以从 Python 项目访问 Google Docs API。

转到您的 Google 文档,打开其中的一些文档,并获取可以在浏览器 URL 栏中看到的唯一 ID,如下图所示:

文档编号

复制 gdoc ID 并将它们粘贴到下面的代码中。您可以拥有 N 个可以编制索引的 gdoc,以便 ChatGPT 具有对您的自定义知识库的上下文访问权限。我们将使用 LlamaIndex 库中的 GoogleDocsReader 插件加载您的文档。

authorize_gdocs() GoogleDocsReader = download_loader('GoogleDocsReader') gdoc_ids = ['1ofZ96nWEZYCJsteRfqik_xNQTGFHtnc-7cYrf0dMPKQ'] loader = GoogleDocsReader() documents = loader.load_data(document_ids=gdoc_ids) 
index = GPTSimpleVectorIndex(documents)

LlamaIndex 有多种数据连接器,涵盖 Notion、Obsidian、Reddit、Slack 等服务。您可以在此处找到可用数据连接器的压缩列表。

如果您希望即时保存和加载索引,可以使用以下函数调用。这将加快从预先保存的索引中获取的过程,而不是对外部源进行 API 调用。

index.save_to_disk( 'index.json' ) = GPTSimpleVectorIndex.load_from_disk( 'index.json' )

查询索引并获得响应可以通过运行下面的代码来实现。代码可以轻松扩展到连接到 UI 的 rest API,您可以在 UI 中通过 GPT 界面与自定义数据源进行交互。

while  True : prompt = input ( "Type prompt..." ) response = index.query(prompt) print (response)

鉴于我们有一个包含我详细信息的 Google 文档,如果您在 google 上公开搜索,这些信息很容易获得。

我们将首先直接与 vanilla ChatGPT 交互,以查看它在不注入自定义数据源的情况下生成的输出。

那有点令人失望!让我们再试一次。

INFO:google_auth_oauthlib.flow: "GET /?state=oz9XY8CE3LaLLsTxIz4sDgrHha4fEJ&code=4/0AWtgzh4LlIfmCMEa0t36dse_xoS0fXFeEWKHFiouzTvz4Qwr7T2Pj6anb-GiZ__Wg-hBBg&scope=https://www.googleapis.com/auth/documents.readonly HTTP/1.1" 200 65 
INFO:googleapiclient.discovery_cache:file_cache仅支持 oauth2client<4.0.0 
INFO:root:> [build_index_from_documents] LLM 令牌总使用量:0 个令牌
INFO:root:> [build_index_from_documents] 嵌入令牌总使用量:175 个令牌
类型提示...谁是 timothy mugayi 提示他是媒体上的作者INFO:root:> [query] LLM 令牌总使用量:300 个令牌
INFO:root:> [query] 嵌入令牌总使用量:14 个令牌
Timothy Mugayi 是 GRAB 子公司 OVO (PT Visionet Internasional) 的工程经理。他还是 medium.com 上的一位狂热作家,他撰写的技术主题涵盖 python 和程序员的自由职业。Timothy 从事编码工作超过15 年,为大型合作构建企业解决方案。在空闲时间,他喜欢指导和指导。
last_token_usage=300
键入提示...键入提示...假设您知道timothy mugayi 是谁,请写一篇关于他的有趣介绍Timothy Mugayi 是一位经验丰富且成就卓著的专业人士,在工程、编码和指导。他目前是 GRAB 子公司 OVO 的工程经理,从事编码工作超过15 年,为大型合作构建企业解决方案。在空闲时间,Timothy 喜欢撰写技术主题,例如 Python 和在 medium.com 上为程序员提供自由职业的副业,以及指导和辅导。凭借令人印象深刻的背景和专业知识,Timothy 是任何组织的宝贵资产。
last_token_usage=330

它现在可以使用新的自定义数据源推断答案,准确地生成以下输出。

我们可以更进一步。

输入提示...为timothy mugayi写一封求职信,用于一个 upwork python 项目,以构建一个可以访问外部数据源的自定义 ChatGPT 机器人
INFO:root:> [query] LLM 令牌总使用量:436 个令牌
INFO:root:> [查询] 嵌入令牌总使用量:30 个令牌亲爱的 [招聘经理],我写信申请Python项目,以构建一个可以访问外部数据源的自定义 ChatGPT 机器人。凭借超过 15 年的编码和为大型公司构建企业解决方案的经验,我相信我是这个职位的理想人选。我目前是 GRAB 子公司 OVO (PT Visionet Internasional) 的工程经理。我在Python 方面拥有丰富的经验,并且一直在 medium.com 上为程序员撰写涵盖 Python 和自由职业方面的技术主题。我也是一位热心的导师和教练,我相信我的经验和技能使我成为这个项目的完美人选。我有信心可以交付满足项目要求的高质量产品。我也可以进一步讨论该项目并回答您的任何问题。感谢您的时间和考虑。此致,
Timothy Mugayi 
last_token_usage=436
输入提示...

LlamaIndex 将在内部接受您的提示,在索引中搜索相关块,然后将您的提示和相关块传递给 ChatGPT 模型。上述过程展示了 LlamaIndex 和 GPT 用于回答问题的基本首次使用。然而,您可以做的还有很多。在将 LlamaIndex 配置为使用不同的大型语言模型 (LLM)、为各种活动使用不同类型的索引或以编程方式使用新索引更新旧索引时,您的创造力只会受到限制。

这是一个显式更改 LLM 模型的示例。这次我们使用另一个与 LlamaIndex 捆绑在一起的 Python 包,称为 langchain。

from langchain import OpenAI 
from llama_index import LLMPredictor, GPTSimpleVectorIndex, PromptHelper ...  llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name= "text-davinci-003" )) max_input_size = 4096 # 设置输出
num_output 
= 256 
max_chunk_overlap =     20

如果您想密切关注您的 OpenAI 免费或付费积分,您可以导航到 OpenAI仪表板并检查剩余的积分。

创建索引、插入索引和查询索引都将使用令牌。因此,在构建自定义机器人时确保输出令牌使用情况以用于跟踪目的始终很重要。

last_token_usage = index.llm_predictor.last_token_usage

打印

( f"last_token_usage= {last_token_usage} " )

最后的总结

ChatGPT 结合 LlamaIndex 可以帮助构建一个定制的 ChatGPT 聊天机器人,它可以根据自己的文档来源推断知识。虽然 ChatGPT 和其他 LLM 非常强大,但扩展 LLM 模型提供了更精致的体验,并开启了构建对话式聊天机器人的可能性,该聊天机器人可用于构建真实的业务用例,例如客户支持协助甚至垃圾邮件分类器。鉴于我们可以提供实时数据,我们可以评估在特定时期内训练的 ChatGPT 模型的一些局限性。

点击阅读 如何使用自定义知识库构建自定义ChatGPT机器人 原文

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

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

相关文章

飞书ChatGPT机器人 – 打造智能问答助手实现无障碍交流

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话&#xff0c;在下面操作步骤中…

Ora提示词版ChatGPT机器人

Ora可以自己创建一个ChatGPT机器人&#xff0c;可以设置自己的提示词例如我创建的AI佛祖https://ora.ai/aesthetic-red-nfa4/ai%E4%BD%9B%E7%A5%96 提示词 创建机器人的时候&#xff0c;需要设定自己的提示词&#xff0c;例如&#xff1a; 假设你是佛祖&#xff0c;名字叫做释迦…

5 分钟用 JavaScript 开发 Slack ChatGPT 机器人(含全部源码,免费托管,手把手教程)

本文帮助你快速实现一个 Slack 对话机器人&#xff0c;并在其中接入 ChatGPT 的能力。可以直接问它问题&#xff0c;也可以在群聊天中 at 它&#xff0c;返回 ChatGPT 的回答。&#xff08;以下为效果截图&#xff09; 通过本文你将学会 创建 Slack 机器人&#xff0c;并配置机…

Docker部署飞书chatGPT机器人总结

1.项目配置 打开终端&#xff0c;依次输入如下命令 git clone https://github.com/Leizhenpeng/feishu-chatGpt.git cd feishu-chatGpt/code mv config.example.yaml config.yaml 然后打开config.yaml文件输入配置信息 说明&#xff1a; 前面几项配置需去飞书开放平台获取&…

java开发的chatGPT机器人系统

ChatGPT机器人发展趋势&#xff1a; 更加个性化&#xff1a;随着数据和技术的不断进步&#xff0c;ChatGPT机器人将能够更加准确地理解用户的需求和偏好&#xff0c;并提供更加个性化的回复和服务。 多语言支持&#xff1a;随着ChatGPT在各个国家和地区的普及&#xff…

五分钟开发一个钉钉 ChatGPT 机器人

基于AirCode、ChatGPT-3.5、Node.js、钉钉微服务机器人搭建。 本文帮助你快速实现一个钉钉对话机器人&#xff0c;并在其中接入 ChatGPT 的能力&#xff0c;可以直接问它问题&#xff0c;也可以在群聊天中 at 它&#xff0c;返回 ChatGPT 的回答。&#xff08;以下为效果截图&…

新技术前沿-2023-ChatGPT基于人工智能技术的聊天机器人

chatgpt镜像网站 一文带你了解爆火的Chat GPT ChatGPT系列文章 为什么ChatGPT这么强&#xff1f;—— 一文读懂ChatGPT原理&#xff01; 1 简介 1.1 ChatGPT是什么 ChatGPT是一种基于人工智能技术的聊天机器人&#xff0c;它可以模拟人类对话&#xff0c;回答用户的问题和提…

ChatGPT - 高效的提问结构

文章目录 Pre提问结构 Pre ChatGPT - 如何高效的调教ChatGPT &#xff08;指令建构模型-LACES问题模型&#xff09; 提问结构 与ChatGPT进行高效的对话,有几个提示: 问清楚和具体的问题。避免问含混和过于宽泛的问题,ChatGPT会找不到准确和满意的答案。避免问需要复杂推理和…

关于ChatGPT,想了解的看过来

12月1日&#xff0c;微软投资的AI实验室OpenAI发布了一款聊天机器人模型ChatGPT&#xff0c;能够模拟人类的语言行为&#xff0c;与用户进行自然的交互。 一经问世&#xff0c;ChatGPT就被用户们疯狂“调戏”&#xff0c;有人用其写小作文&#xff0c;有人拿高考题来考验它&…

ChatGPT学习-如何向ChatGPT提问

​ 最近在学习chatGPT,怎么样的提问是一个好的提问。通过网上找资料肯定不是最好的方法&#xff0c;我想起一句话&#xff0c;“不识庐山真面目&#xff0c;只缘身在此山中”。最好的老师就是chatGPT&#xff01; 下面先展示下提问成果&#xff0c;我通过xmind生成了思维导图 一…

ChatGPT常用提问技巧

上篇文章《ChatGPT万能提问技巧》中提到的万能提问技巧-RPEP提问法&#xff0c;家人们用ChatGPT能够轻松应对大部分的对话场景&#xff0c;获得更加出色的回答了吧&#xff01;今天&#xff0c;我们在提供两种常用的提问模式&#xff0c;让家人们使用ChatGPT都很轻松获得需要的…

向ChatGPT提问的方法技巧

如何向ChatGPT提问&#xff0c;获得高质量的回复&#xff1f;针对这个问题&#xff0c;小编进行了相关的测试&#xff0c;今天跟大家分享向ChatGPT提问的技巧。 以自媒体作者为例&#xff0c;不同平台具有不同的阅读习惯&#xff0c;当我们想要创作一篇小红书笔记&#xff0c;…

ChatGPT 提问公式大全,内容详细

Chat GPT chatGPT 提问公式大全 1.假设你是一个XX角色,如何回答以下问题 2.在遵守以下X条规则的前提下,回答这个问题 3.请参考以下例子,将其扩展到XX字数,并保持类似的风格 4.你作为一个XX领域的专家,请完成以下XX任务 5.请尽可能具体地描述以下情景,以便读者仅通过…

【Prompt】7 个向 chatGPT 高效提问的方法

欢迎关注【youcans的 AIGC 学习笔记】原创作品 【Prompt】7 个向 chatGPT 高效提问的方法 0. 向 chatGPT 高效提问的方法1. 提问方法&#xff1a;明确问题2. 提问方法&#xff1a;简洁清晰3. 提问方法&#xff1a;避免歧义4. 提问方法&#xff1a;提供上下文5. 提问方法&#x…

如何使用ChatGpt来学习和提问【对话ChatGPT】?

ChatGPT的不断发展和进步&#xff0c;我们需要工作中很多时候会用到ChatGPT&#xff0c;那么如何使用ChatGPT来解决我们工作中的问题呢&#xff1f; Q1如何向ChatGPT提问&#xff0c;从而更快解决我们的问题&#xff1f; ChatGPT&#xff1a;以下是向ChatGPT提问的一些提示&a…

ChatGPT提问指令大全(建议收藏)

在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c;如果没给予指定情境与对象&#xff0c;它会不知道该如何回答的更加准确。 一、写报告 1、我现在正在 [报告的情境与目的]。…

chatgpt赋能python:用Python自动买卖股票-实现你的金融自由梦想

用Python自动买卖股票 - 实现你的金融自由梦想 随着数字化时代的不断发展&#xff0c;越来越多的人开始投资股票以实现财务自由。而对于投资股市的人来说&#xff0c;如何自动化交易是一个很重要的问题。Python自动买卖股票就是一种可行的方式。 什么是Python自动买卖股票 P…

ChatGPT实用指南!!设计师必看!!

ChatGPT 最近真的太火了&#xff0c;每天都会在网上刷到关于它的各种讨论&#xff0c;身边的同事也已经在用它处理一些文字相关工作&#xff0c;不知道大家有没有用起来呢&#xff1f; 最近我在网上看很多大神分享的 ChatGPT 使用教程&#xff0c;发现自己之前对 ChatGPT 的认…

ChatGPT背后的模型

文章目录 1.RLHF方法2.ChatGPT中的RLHF方法2.1 微调模型GPT-32.2 训练奖励模型2.3 利用强化学习进一步微调语言模型 3.效果4.面临挑战5.参考 InstructGPT语言模型&#xff0c;是一个比 GPT-3 更善于遵循用户意图&#xff0c;同时使用通过我们的对齐研究开发的技术使它们更真实、…

ChatGPT Prompt工程:设计、实践与思考

作者 | 太子长琴 整理 | NewBeeNLP 大家好&#xff0c;这里是 NEewBeeNLP。ChatGPT 火爆出圈了&#xff0c;有些人惊叹于它的能力&#xff0c;当然也有部分人觉得也就那样。这就不得不提 Prompt 了&#xff0c;据说【相关文献1】&#xff0c;ChatGPT 效果好不好完全取决于你的…