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

这篇具有很好参考价值的文章主要介绍了如何使用自定义知识库构建自定义ChatGPT机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录  隐藏 

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

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

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

如何添加自定义数据源

先决条件

怎么运行的

最后的总结

使用自定义数据源为您的 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机器人

自定义数据源输入 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 帐户进行单点登录。

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

  • 一些 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”,然后输入支持电子邮件、保存并添加范围。

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

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

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

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

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

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

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

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

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

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

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

文档编号

复制 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 上公开搜索,这些信息很容易获得。

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

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

如何使用自定义知识库构建自定义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机器人 原文文章来源地址https://www.toymoban.com/news/detail-477678.html

到了这里,关于如何使用自定义知识库构建自定义ChatGPT机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 函数计算的新征程:使用 Laf 构建 AI 知识库

    Laf 已成功上架 Sealos 模板市场,可通过 Laf 应用模板来一键部署! 这意味着 Laf 在私有化部署上的 扩展性得到了极大的提升 。 Sealos 作为一个功能强大的云操作系统,能够秒级创建多种高可用数据库,如 MySQL、PostgreSQL、MongoDB 和 Redis 等,也可以一键运行各种消息队列和微服务

    2024年02月05日
    浏览(21)
  • NAS上使用Docker搭建Wiki.js构建云知识库

    在寻找合适的知识管理工具时,我们通常希望找到既功能丰富又易于使用的解决方案。大多数公司会用到confluence作为知识管理工具。但是作为个人使用的话confluence一要收费,其次是相对会比较重。 考虑到个人使用以及计算资源有限的场景下,Wiki.js是一个合适的工具,非常适

    2024年01月22日
    浏览(29)
  • 使用langchain+chatGPT搭建自有知识库问答机器人

            自去年年底OpenAI发布ChatGPT以来,大型语言模型在人工智能领域掀起了一股热潮。随后,各家公司纷纷推出自己的大型语言模型,如百度的文心一言、讯飞的星火大模型等。在这个过程中,文本转图片和文本转视频等相关领域也备受关注。然而,很显然,这只是一时的

    2024年02月13日
    浏览(19)
  • Copilot Hub 基于私有数据的人格化AI 平台 - 创建自定义ChatGPT知识库AI的简明操作指南...

    Copilot Hub 是一个帮助你基于私有数据创建智能知识库 人格化 AI 的平台。你可以基于文档、网站、Notion database 或其他数据源在几分钟内创建一个自定义的 ChatGPT。 https://app.copilothub.ai/copilots 需要先登录一下 Copilot Hub  输入邮箱就能登录成功了 我现在使用自己的文本来创建一个

    2024年02月11日
    浏览(22)
  • Notion——构建个人知识库

    使用Notion快三年了,它All in one的理念在使用以后确实深有体会,一直想找一个契机将这个软件分享给大家,这款笔记软件在网上已经有很多的教程了,所以在这里我主要想分享 框架 方面的内容给大家,特别对于学生党、研究生们。Notion的扩展性很强,但是本文没有什么炫技

    2024年02月01日
    浏览(29)
  • LLM本地知识库问答系统(一):使用LangChain和LlamaIndex从零构建PDF聊天机器人指南

           随着大型语言模型(LLM)(如ChatGPT和GPT-4)的兴起,现在比以往任何时候都更容易构建比普通熊更智能的智能聊天机器人,并且可以浏览堆积如山的文档,为您的输入提供准确的响应。        在本系列中,我们将探索如何使用pre-trained的LLM创建一个聊天机器人,该聊

    2024年02月11日
    浏览(27)
  • 基于大语言模型知识问答应用落地实践 – 知识库构建(下)

    上篇介绍了构建知识库的大体流程和一些优化经验细节,但并没有结合一个具体的场景给出更细节的实战经验以及相关的一些 benchmark 等,所以本文将会切入到一个具体场景进行讨论。 目标场景:对于 PubMed 医疗学术数据中的 1w 篇文章进行知识库构建,实现快速的注入和查

    2024年02月10日
    浏览(20)
  • ChatGPT扫盲知识库

    本文并不是教你如何使用ChatGPT,而是帮助小白理清一些与ChatGPT相关的概念,并解释一些常见的问题。 概念 OpenAI: 一家人工智能公司,ChatGPT属于该公司的产品之一。前身是一个非盈利组织,不过目前已经转变为一家商业公司。 GPT: OpenAI开发的语言模型,你只需要知道它是一种

    2024年02月09日
    浏览(19)
  • LLM本地知识库问答系统(二):如何正确使用LlamaIndex索引

    LLM本地知识库问答系统(一):使用LangChain和LlamaIndex从零构建PDF聊天机器人指南        上一篇文章我们介绍了使用LlamaIndex构建PDF聊天机器人,本文将介绍一下LlamaIndex的基本概念和原理。        LlamaIndex(也称为GPT Index)是一个用户友好的界面,可将外部数据连接到大型语

    2024年02月10日
    浏览(21)
  • LangChain入门(四)-构建本地知识库问答机器人

    在这个例子中,我们会介绍如何从我们本地读取多个文档构建知识库,并且使用 Openai API 在知识库中进行搜索并给出答案。 目录 一、安装向量数据库chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在线的向量数据库Pinecone 一、安装向量数据库chromadb和tiktoken    其中h

    2024年02月05日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包