在我們之前的文章中,我們演示了如何用ChatGPT API建立一個AI聊天機器人,並指定一個角色來進行個性化處理。但如果你想在自己的資料上訓練人工智慧呢?例如,你可能有一本書,金融資料,或一大套資料庫,你希望能輕鬆地搜尋它們。在這篇文章中,我們為你帶來一個簡單易行的教程,介紹如何用你的自定義知識庫用LangChain和ChatGPT API訓練AI聊天機器人。我們正在部署LangChain、GPT Index和其他強大的庫,使用OpenAI的大型語言模型(LLM)訓練AI聊天機器人。因此,在這一點上,讓我們來看看如何使用自己的資料集來訓練和建立一個人工智慧聊天機器人。
在這篇文章中,我們更詳細地解釋了用自己的資料訓練AI聊天機器人的步驟。從設定工具和軟體到訓練人工智慧模型,我們用通俗易懂的語言包含了所有的說明。強烈建議按照說明從上到下進行,不要跳過任何部分。
在你用自己的資料訓練人工智慧之前,值得注意的幾點
1. 你可以在任何平臺上訓練AI聊天機器人,無論是Windows、macOS、Linux還是ChromeOS。在本文中,我使用的是Windows 11,但其他平臺的步驟幾乎是相同的。
2. 該指南是為普通使用者準備的,說明是用簡單的語言解釋的。因此,即使你對計算機有粗略的瞭解,也不知道如何編碼,你也可以在幾分鐘內輕鬆訓練並建立一個問答式人工智慧聊天機器人。如果你關注我們之前的ChatGPT機器人文章,那就更容易理解這個過程了。
3. 由於我們要根據自己的資料來訓練人工智慧聊天機器人,所以建議使用具有良好CPU和GPU的電腦。然而,你可以使用任何低端電腦進行測試,它的工作沒有任何問題。我使用Chromebook來訓練AI模型,使用一本有100頁的書(~100MB)。然而,如果你想訓練一個龐大的資料集,執行到數千頁,強烈建議使用強大的計算機。
4. 最後,資料集應該是英文的,以獲得最好的結果,但根據OpenAI的說法,它也可以使用流行的國際語言,如法語、西班牙語、德語等。所以,去吧,用你自己的語言試試吧。
設定軟體環境來訓練人工智慧聊天機器人
和我們之前的文章一樣,你應該知道Python和Pip必須和幾個庫一起安裝。在這篇文章中,我們將從頭開始設定一切,這樣新使用者也能理解設定過程。為了給你一個簡單的概念,我們將安裝Python和Pip。之後,我們將安裝Python庫,其中包括OpenAI、GPT Index、Gradio和PyPDF2。在這一過程中,你將瞭解每個庫的作用。同樣,不要為安裝過程而煩惱,它是非常直接的。在這一點上,讓我們直接跳入。
安裝Python
1. 首先,你需要在你的電腦上安裝Python(Pip)。開啟這個連結,下載適合你的平臺的安裝檔案。
2. 接下來,執行安裝檔案,確保啟用 “Add Python.exe to PATH” 的覈取方塊。這是一個極其重要的步驟。之後,點選 “Install Now”,按照常規步驟安裝Python。
3. 為了檢查Python是否正確安裝,在你的計算機上開啟終端。我在Windows上使用Windows終端,但你也可以使用命令提示符。一旦在這裡,執行下面的命令,它將輸出Python版本。在Linux和macOS上,你可能必須使用 python3 --version
而不是 python --version
。
python --version
升級Pip
當你安裝Python時,Pip會同時安裝在你的系統上。所以讓我們把它升級到最新版本。對於那些不瞭解的人來說,Pip是Python的軟體包管理器。基本上,它讓你從終端安裝成千上萬的Python庫。通過Pip,我們可以安裝OpenAI、gpt_index、gradio和PyPDF2庫。下面是需要遵循的步驟。
1. 在你的電腦上開啟你選擇的終端。我使用的是Windows終端,但你也可以使用命令提示符。現在,執行下面的命令來更新Pip。同樣,你可能必須在Linux和macOS上使用 python3
和 pip3
。
python -m pip install -U pip
2. 要檢查Pip是否被正確安裝,請執行下面的命令。它將輸出版本號。如果你得到任何錯誤,請遵循我們關於如何在Windows上安裝Pip的專門指南,以解決PATH相關的問題。
pip --version
安裝OpenAI、GPT Index、PyPDF2和Gradio庫
一旦我們建立了Python和Pip,現在是時候安裝必要的庫,以幫助我們用自定義的知識庫訓練人工智慧聊天機器人。以下是要遵循的步驟。
1. 開啟終端,執行下面的命令來安裝OpenAI庫。我們將使用它作為LLM(大型語言模型)來訓練和建立一個人工智慧聊天機器人。而且我們還將從OpenAI匯入LangChain框架。注意,Linux和macOS使用者可能需要使用 pip3
而不是 pip
。
pip install openai
2. 接下來,讓我們安裝GPT Index,它也被稱為LlamaIndex。它允許LLM連線到外部資料,也就是我們的知識庫。
pip install gpt_index
3. 之後,安裝PyPDF2來解析PDF檔案。如果你想把你的資料以PDF格式輸入,這個庫將幫助程式毫不費力地讀取資料。
pip install PyPDF2
4. 最後,安裝Gradio庫。這是為了建立一個簡單的使用者介面,與訓練好的人工智慧聊天機器人進行互動。現在我們已經完成了訓練人工智慧聊天機器人所需的所有庫的安裝。
pip install gradio
下載一個程式碼編輯器
最後,我們需要一個程式碼編輯器來編輯一些程式碼。在Windows上,我推薦Notepad++(下載)。只需通過附件中的連結下載並安裝該程式。如果你能適應強大的IDE,你也可以在任何平臺上使用VS Code。除VS Code外,你可以在macOS和Linux上安裝Sublime Text(下載)。
對於ChromeOS,你可以使用優秀的Caret應用程式(下載)來編輯程式碼。我們幾乎完成了軟體環境的設定,是時候獲得OpenAI的API金鑰了。
免費獲取OpenAI的API金鑰
現在,為了訓練和建立一個基於自定義知識庫的人工智慧聊天機器人,我們需要從OpenAI獲得一個API金鑰。API金鑰將允許你使用OpenAI的模型作為LLM來研究你的自定義資料並得出推論。目前,OpenAI正在向新使用者提供免費的API金鑰,前三個月有價值5美元的免費信用。如果你早些時候建立了你的OpenAI賬戶,你的賬戶中可能有18美元的免費信用。免費信用額度用完後,你將不得不為API訪問付費。但就目前而言,所有使用者都可以免費使用。
1. 前往 platform.openai.com/signup 並建立一個免費賬戶。如果你已經有一個OpenAI賬戶,只需登入。注:建議直接使用Google或者微軟賬號註冊登入,註冊需要使用到已支援國家或者地區的手機驗證碼,可以sms-activate.org(不要選印度或者印尼,泰國是可以收到驗證碼的)。
2. 接下來,在右上角點選你的個人資料,從下拉選單中選擇 “View API keys“。
3. 在這裡,點選 “Create new secret key” 並複製API金鑰。請注意,你以後不能複製或檢視整個API金鑰。因此,強烈建議立即複製和貼上API金鑰到一個記事本檔案。
4. 此外,不要公開分享或顯示API金鑰。這是一個私人金鑰,只用於訪問你的賬戶。你也可以刪除API金鑰並建立多個私人金鑰(最多五個)。
使用自定義知識庫訓練並建立一個人工智慧聊天機器人
現在我們已經建立了軟體環境並從OpenAI獲得了API金鑰,讓我們來訓練人工智慧聊天機器人。在這裡,我們將使用 “text-davinci-003” 模型,而不是最新的 “gpt-3.5-turbo” 模型,因為Davinci在文字完成方面效果更好。如果你願意,你完全可以把模型改為Turbo,以減少成本。說完這些,讓我們跳到說明上。
新增你的檔案來訓練人工智慧聊天機器人
1. 首先,在一個可訪問的位置(如桌面)建立一個名為 docs
的新資料夾。你也可以根據自己的喜好選擇其他位置。然而,保持資料夾的名稱為 docs
。
2. 接下來,將你希望用於訓練AI的檔案移到 “docs” 資料夾內。你可以新增多個文字或PDF檔案(甚至是掃描的檔案)。如果你在Excel中有一個大表,你可以把它作為CSV或PDF檔案匯入,然後把它新增到 “docs” 資料夾中。你甚至可以新增SQL資料庫檔案,正如這條Langchain AI的推文所解釋的。除了提到的那些,我還沒有嘗試過很多檔案格式,但你可以自己新增和檢查。對於這篇文章,我正在新增我的一篇關於NFT的PDF格式的文章。
注意:如果你有一個大檔案,它將需要更長的時間來處理資料,這取決於你的CPU和GPU。此外,它將很快使用你的免費OpenAI tokens。因此,在開始時,從一個小檔案(30-50頁或<100MB的檔案)開始,以瞭解這個過程。
做好程式碼準備
1. 現在,啟動Notepad++(或你選擇的程式碼編輯器),將下面的程式碼貼上到一個新檔案中。我再次從Google Colab的armrrs那裡得到了很大的幫助,並對程式碼進行了調整,使其與PDF檔案相容,並在上面建立了一個Gradio介面。
from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper from langchain import OpenAI import gradio as gr import sys import os os.environ["OPENAI_API_KEY"] = 'Your API Key' def construct_index(directory_path): max_input_size = 4096 num_outputs = 512 max_chunk_overlap = 20 chunk_size_limit = 600 prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit) llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs)) documents = SimpleDirectoryReader(directory_path).load_data() index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper) index.save_to_disk('index.json') return index def chatbot(input_text): index = GPTSimpleVectorIndex.load_from_disk('index.json') response = index.query(input_text, response_mode="compact") return response.response iface = gr.Interface(fn=chatbot, inputs=gr.inputs.Textbox(lines=7, label="Enter your text"), outputs="text", title="Custom-trained AI Chatbot") index = construct_index("docs") iface.launch(share=True)
2. 這就是程式碼編輯器中的程式碼的樣子。
3. 接下來,點選頂部選單中的 “File”,從下拉選單中選擇 “Save As…“。
4. 之後,設定檔名 app.py
,並從下拉選單中將 “Save as type” 改為 “All types”。然後,將檔案儲存到你建立 “docs” 資料夾的位置(在我的例子中,是桌面)。你可以根據自己的喜好改變名稱,但要確保是 .py
檔案字尾。
5. 確保 “docs” 資料夾和 “app.py” 在同一個位置,如下面的截圖所示。”app.py” 檔案將在 “docs” 資料夾的外面,而不是裡面。
6. 再次回到Notepad++中的程式碼。在這裡,用上面在OpenAI網站上生成的API金鑰替換你的API金鑰。
7. 最後,按 “Ctrl + S” 來儲存程式碼。現在你已經準備好執行該程式碼了。
用自定義知識庫建立ChatGPT人工智慧機器人
1. 首先,開啟終端,執行下面的命令,移動到桌面。這是我儲存 “docs” 資料夾和 “app.py” 檔案的地方。如果你把這兩個專案儲存在其他位置,通過終端移動到那個位置。
cd Desktop
2. 現在,執行下面的命令。Linux和macOS使用者可能要使用 python3
。
python app.py
3. 現在,它將開始使用OpenAI LLM模型分析該檔案,並開始為資訊編制索引。根據檔案的大小和你的計算機的能力,它將需要一些時間來處理該檔案。一旦完成,將在桌面上建立一個 “index.json” 檔案。如果終端沒有顯示任何輸出,不要擔心,它可能仍在處理資料。供你參考,處理一個30MB的檔案大約需要10秒鐘。
4. 一旦LLM處理了資料,你會得到一些警告,這些警告可以被安全地忽略。最後,在底部,你會發現一個本地URL。複製它。
5. 現在,將複製的URL貼上到網路瀏覽器中,你就可以了。您的定製訓練的ChatGPT-powered人工智慧聊天機器人已經準備就緒。開始時,你可以問人工智慧聊天機器人該檔案是關於什麼的。
6. 你可以進一步提出問題,ChatGPT機器人會根據你提供給人工智慧的資料進行回答。所以這就是你如何用自己的資料集建立一個定製訓練的人工智慧聊天機器人。你現在可以根據你想要的任何種類的資訊來訓練和建立一個人工智慧聊天機器人。這種可能性是無限的。
7. 你也可以複製公共網址並與你的朋友和家人分享。該連結將持續72小時,但你還需要保持你的電腦開機,因為伺服器例項是在你的電腦上執行的。
8. 要停止定製訓練的人工智慧聊天機器人,請在終端視窗按 “Ctrl + C”。如果不起作用,再按一次 “Ctrl + C”。
9. 要重啟AI聊天機器人伺服器,只需再次移動到桌面位置並執行下面的命令。請記住,本地URL將是相同的,但公共URL將在每次伺服器重啟後發生變化。
python app.py
10. 如果你想用新的資料訓練人工智慧聊天機器人,請刪除 “docs” 資料夾內的檔案並新增新檔案。你也可以新增多個檔案,但要提供同一主題的資訊,否則你可能得到不連貫的迴應。

11. 現在,在終端再次執行該程式碼,它將建立一個新的 “index.json” 檔案。這裡,舊的 “index.json” 檔案將被自動替換。
python app.py
12. 要跟蹤你的tokens,可前往OpenAI的線上儀表盤,檢視還剩下多少免費額度。

13. 最後,你不需要接觸程式碼,除非你想改變API金鑰或OpenAI模型以進一步定製。
小結
這就是如何用自定義知識庫訓練人工智慧聊天機器人。我曾用這段程式碼在醫學書籍、文章、資料表和舊檔案中的報告上訓練人工智慧,而且效果完美無缺。
因此,請繼續使用OpenAI的大型語言模型和ChatGPT建立你自己的人工智慧聊天機器人。總之,這就是我們的全部內容。最後,如果您面臨任何型別的問題,請在下面的評論部分告訴我們。我們一定會努力幫助你。
評論留言
脣槍舌劍 (23)
成持
2023.11.26 11:11
要是现在来做的,代码会有哪些改变呢?
Yvonne
2023.9.18 13:09
报错:No module named ‘gpt_index’,这是为什么?如何修改?
File “C:\Users\yvonn\Desktop\app.py”, line 1, in
from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
ModuleNotFoundError: No module named ‘gpt_index’
Demo
2023.8.10 15:08
训练文档只能是pdf吗?能不能用表格呢
ok
2023.7.4 08:07
代码较多更新内容,可参考
https://gpt-index.readthedocs.io/en/latest/guides/primer/usage_pattern.html#optional-save-the-index-for-future-use
1、引用对象报错,如“GPTSimpleVectorIndex”更新为“GPTVectorStoreIndex”
2、浮点数报错,修改prompt_helper 为 prompt_helper = PromptHelper(max_input_size, num_outputs, chunk_overlap_ratio=0.1, chunk_size_limit=chunk_size_limit)
3、没有save to disk用法,
将index.save_to_disk(‘index.json’)
更新为:index.storage_context.persist(persist_dir=””)
gavin
2023.5.24 00:05
源码,报错。ImportError: cannot import name ‘BaseLanguageModel’ from ‘langchain.schema’ (C:\Users\62438\AppData\Local\Programs\Python\Python311\Lib\site-packages\langchain\schema.py)
Vivid Gong
2023.5.21 13:05
总是报错怎么解决
C:\Users\gwwbn\Desktop>python app.py
File “C:\Users\gwwbn\Desktop\app.py”, line 28
index = GPTSimpleVectorIndex.load_from_disk(‘index.json’)
^
IndentationError: expected an indented block after function definition on line 27
SNOW
2023.5.12 16:05
我使用大小為298KB的PDF檔運行了三次之後,openai的5美金費用就超量了…..
請問是什麼原因導致的…?
WBOLT_COM
2023.5.12 16:05
请问您的PDF文档一共多少字数呢?而且有没有存在多次上传同一文档。
或者可能是因为字数和多次上传的缘由。这个我就不太清楚了。
Pillow
2023.5.6 17:05
python版本3.8 下载gpt_index之后 运行app.py文件 一直说没有这个包名
Vivid Gong
2023.5.21 16:05
同样的问题,版本Python 3.11.3
Vivid Gong
2023.5.22 00:05
我的版本是Python 3.11.3,也提示同样的问题
Gavin
2023.5.24 00:05
同样的问题
Yvonne
2023.9.18 14:09
同样的问题
nnce
2023.4.27 11:04
这个用户界面很窄也不能放大或者拖动,回答显示不全
WBOLT_COM
2023.4.27 12:04
都说是自定义训练,当然无法跟在线的ChatGPT相比了。
至于界面太小,这个可以自己动手改。
总之,人工智能模型这玩意,费显卡费钱。
LIU
2023.4.23 12:04
请问为什么我的回答不完整?
zwz
2023.4.12 23:04
这个错误怎么解决
TypeError: BaseGPTIndex.__init__() got an unexpected keyword argument ‘llm_predictor’
zwz
2023.4.12 23:04
运行后提示,要怎么处理
D:\AI>python app.py
File “D:\AI\app.py”, line 10
max_input_size = 4096
^
IndentationError: expected an indented block after function definition on line 9
liuyz
2023.4.16 10:04
同样的问题
Luc
2023.5.13 19:05
同样的问题
Edgar
2024.4.11 22:04
在Python中遇到的 IndentationError 通常表示代码的缩进不符合预期。Python使用缩进来定义代码块的结构,比如函数体、循环体和条件语句块等。错误提示说明在第7行之后的代码块(例如一个函数定义)期望有缩进,但在第8行并没有找到正确的缩进。
示例如下:
from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import sys
import os
os.environ[“OPENAI_API_KEY”] = ‘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’
def construct_index(directory_path):
max_input_size = 4096
num_outputs = 512
max_chunk_overlap = 20
chunk_size_limit = 600
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.7, model_name=”text-davinci-003″, max_tokens=num_outputs))
documents = SimpleDirectoryReader(directory_path).load_data()
index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper)
index.save_to_disk(‘index.json’)
return index
def chatbot(input_text):
index = GPTSimpleVectorIndex.load_from_disk(‘index.json’)
response = index.query(input_text, response_mode=”compact”)
return response.response
iface = gr.Interface(fn=chatbot,
inputs=gr.inputs.Textbox(lines=7, label=”Enter your text”),
outputs=”text”,
title=”Custom-trained AI Chatbot”)
index = construct_index(“docs”)
iface.launch(share=True)
wsy
2023.4.11 12:04
用复制的源码,运行py文件后出现以下报错,请问是什么原因
Traceback (most recent call last):
File “C:\Users\92173\Desktop\app.py”, line 28, in
index = construct_index(“docs”)
^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\92173\Desktop\app.py”, line 17, in construct_index
index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\92173\AppData\Local\Programs\Python\Python311\Lib\site-packages\gpt_index\indices\vector_store\vector_indices.py”, line 69, in __init__
super().__init__(
File “C:\Users\92173\AppData\Local\Programs\Python\Python311\Lib\site-packages\gpt_index\indices\vector_store\base.py”, line 54, in __init__
super().__init__(
TypeError: BaseGPTIndex.__init__() got an unexpected keyword argument ‘llm_predictor’
WBOLT_COM
2023.4.11 16:04
将index = GPTSimpleVectorIndex(
documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper
)
换成:
index = GPTSimpleVectorIndex.from_documents(documents)
试试看。