自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

人工智能
本文中展示了如何結(jié)合使用GPT和LlamaIndex來構(gòu)建一個文檔問答聊天機器人。雖然GPT(和其他LLM)本身就很強大,但如果把它與其他工具、數(shù)據(jù)或流程結(jié)合起來,它的力量也會被大大增強。

與ChatGPT聊天很有趣,而且信息量很大 —— 與它閑聊可以探索一些新的想法。但這些都是比較隨意的用例,新奇感很快就會減弱,特別是當(dāng)人意識到它能產(chǎn)生幻覺的時候。

如何以更高效的方式使用ChatGPT呢?在OpenAI發(fā)布GPT3.5系列API后,可以做的事情遠不止是閑聊。QA(問答)是企業(yè)和個人使用的一個非常有效的用例 —— 用自然語言向機器人詢問自己的文件/數(shù)據(jù),它可以通過從文件中檢索信息并生成回應(yīng)來快速回答。可以把它用于客戶支持、綜合用戶研究、個人知識管理等等。

向機器人詢問與文件相關(guān)的問題。使用穩(wěn)定擴散法生成的圖像。

本文將探討如何根據(jù)自己的數(shù)據(jù)建立問答聊天機器人,包括為什么有些方法行不通,以及如何利用llama-index和GPT API以高效的方式建立一個文檔問答聊天機器人的步驟指南。

(如果只想知道如何建立問答聊天機器人,可以直接跳到“逐步建立文檔問答聊天機器人”部分)

探索不同的方法

當(dāng)ChatGPT問世時,可以想到把它作為自己工作的一個助手,從而節(jié)省自己的時間和精力等。

首先想到的是用自己的數(shù)據(jù)對GPT模型進行微調(diào)來實現(xiàn)這個目標(biāo)。但是,微調(diào)需要花費相當(dāng)多的錢,而且需要一個有實例的大數(shù)據(jù)集。也不可能在文件有變化時每次都進行微調(diào)。更為關(guān)鍵的一點是,微調(diào)根本不可能讓模型“知道”文檔中的所有信息,而是要教給模型一種新的技能。因此,對于(多)文檔質(zhì)量保證來說,微調(diào)并不是一個好辦法。

第二個方法是通過在提示中提供上下文來進行提示工程。例如,可以在實際問題之前附加原始文檔內(nèi)容,而不是直接問問題。但是GPT模型的注意力是有限的 —— 它只能接受提示中的幾千字(大約4000個標(biāo)記或3000字)。只要有成千上萬的客戶反饋郵件和數(shù)百個產(chǎn)品文檔,就不可能給它提示中的所有背景。如果向API傳遞一個長的上下文,也是很昂貴的,因為定價是基于使用的代幣的數(shù)量。

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?”

由于提示符對輸入標(biāo)記的數(shù)量有限制,想出了這樣一個主意來解決問題:首先使用一種算法來搜索文檔并挑選出相關(guān)的摘錄,然后只將這些相關(guān)的語境與問題一起傳遞給GPT模型。在過程中需要使用一個簡單、便捷的gpt-index?(現(xiàn)在改名為LlamaIndex)的庫。

圖片

從文件中提取相關(guān)部分,然后將其反饋給提示。

在下一節(jié)中,將給出一個使用LlamaIndex和GPT在自己的數(shù)據(jù)上建立一個問答聊天機器人的分步教程。

逐步建立文檔問答聊天機器人

在這一節(jié)中,將用LlamaIndex和GPT(text-davinci-003)在現(xiàn)有文檔的基礎(chǔ)上建立一個問答聊天機器人,這樣就可以用自然語言提出關(guān)于文檔的問題,并從聊天機器人那里得到答案。

前提條件

在開始本教程之前,需要做一些準(zhǔn)備:

  • OpenAI API密鑰,可以在https://platform.openai.com/account/api-keys找到。
  • 一個文件數(shù)據(jù)庫。LlamaIndex支持許多不同的數(shù)據(jù)源,如Notion、Google Docs、Asana等。在本文中將只使用一個簡單的文本文件進行演示。
  • 一個本地的Python環(huán)境或一個在線的Google Colab筆記本。

工作流程

工作流程很簡單,只需要幾個步驟:

  • 1.用LlamaIndex為你的文檔數(shù)據(jù)建立一個索引。
  • 2.用自然語言查詢該索引。
  • 3.LlamaIndex將檢索相關(guān)部分并將其傳遞給GPT提示。
  • 4.向GPT詢問相關(guān)的上下文并構(gòu)建一個回應(yīng)。

LlamaIndex所做的是將原始文檔數(shù)據(jù)轉(zhuǎn)換成一個矢量的索引,這對查詢來說是非常有效的。它將使用這個索引,根據(jù)查詢和數(shù)據(jù)的相似性,找到最相關(guān)的部分。然后,它將把檢索到的內(nèi)容插入到它將發(fā)送給GPT的提示中,這樣GPT就有了回答問題的背景。

設(shè)置

首先需要安裝庫。只需在終端或谷歌Colab筆記本上運行以下命令。這些命令將同時安裝LlamaIndex和OpenAI。

!pip install llama-index
!pip install openai

接下來將在python中導(dǎo)入這些庫,并在一個新的.py文件中設(shè)置OpenAI API密鑰。

# 導(dǎo)入必要的庫
from llama_index import GPTSimpleVectorIndex, Document, SimpleDirectoryReader
import os

os.environ['OPENAI_API_KEY'] = 'sk-YOUR-API-KEY'

構(gòu)建索引并保存

在安裝了所需的庫并將其導(dǎo)入后,將需要構(gòu)建一個文檔的索引。

為了加載文檔,可以使用LllamaIndex?提供的SimpleDirectoryReader方法,或者可以從字符串中加載它。

# 從一個目錄中加載
documents = SimpleDirectoryReader('your_directory').load_data()

# 從字符串中加載,假設(shè)將數(shù)據(jù)保存為字符串text1,text2,...
text_list = [text1, text2, ...]
documents = [Document(t) for t in text_list]

LlamaIndex還提供各種數(shù)據(jù)連接器,包括Notion、Asana、Google Drive、Obsidian等??梢栽趆ttps://llamahub.ai/找到可用的數(shù)據(jù)連接器。

加載完文檔后,就可以用以下方法簡單地構(gòu)建索引了:

# 構(gòu)建一個簡單的向量索引
index = GPTSimpleVectorIndex(documents)

如果想保存索引并加載它以便將來使用,可以使用以下方法:

# 將索引保存在`index.json`文件中
index.save_to_disk('index.json')
# 從保存的`index.json`文件中加載索引
index = GPTSimpleVectorIndex.load_from_disk('index.json')

查詢索引并獲得響應(yīng)

查詢索引很簡單:

# 查詢索引
response = index.query("What features do users want to see in the app?")
print(response)

圖片

一個回應(yīng)的例子。

然后就可以得到答案了。在幕后,LlamaIndex將接收提示,在索引中搜索相關(guān)塊,并將提示和相關(guān)塊傳遞給GPT。

一些高級用法的說明

上面的步驟只是展示了使用LlamaIndex和GPT回答問題的一個非常簡單的入門用法。但可以做得比這更多。事實上,可以配置LlamaIndex來使用不同的大型語言模型(LLM),為不同的任務(wù)使用不同類型的索引,用一個新的索引來更新現(xiàn)有的索引,等等。如果有興趣,可以在https://gpt-index.readthedocs.io/en/latest/index.html,閱讀他們的文檔。

總結(jié)

本文中展示了如何結(jié)合使用GPT和LlamaIndex來構(gòu)建一個文檔問答聊天機器人。雖然GPT(和其他LLM)本身就很強大,但如果把它與其他工具、數(shù)據(jù)或流程結(jié)合起來,它的力量也會被大大增強。

責(zé)任編輯:武曉燕 來源: Python學(xué)研大本營
相關(guān)推薦

2017-01-19 21:08:33

iOS路由構(gòu)建

2024-08-06 09:29:54

程序機器指令字符串

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅(qū)動

2018-12-24 10:04:06

Docker存儲驅(qū)動

2009-12-17 16:36:23

無線路由設(shè)置密碼

2010-03-04 16:28:17

Android核心代碼

2016-11-02 18:54:01

javascript

2017-12-25 11:50:57

LinuxArch Linux

2024-08-30 08:30:29

CPU操作系統(tǒng)寄存器

2024-09-30 09:56:59

2011-05-10 10:28:55

2018-07-13 15:36:52

2020-12-24 11:19:55

JavaMapHashMap

2018-06-11 15:30:12

2018-04-23 14:23:12

2019-04-01 10:15:02

2023-09-14 12:45:00

接口圖片

2011-09-05 12:36:08

路由器限速linux路由器

2025-02-08 08:21:48

Java排序Spring
點贊
收藏

51CTO技術(shù)棧公眾號