首頁 > 科技週邊 > 人工智慧 > 使用 GPT-3 建立符合業務需求的企業聊天機器人

使用 GPT-3 建立符合業務需求的企業聊天機器人

WBOY
發布: 2023-04-24 21:43:11
轉載
1518 人瀏覽過

利用 GPT-3 构建适合公司业务的聊天机器人

背景

聊天機器人或客服助理是AI工具,希望透過網路上的文字或語音與使用者的交付,實現業務價值。聊天機器人的發展在這幾年間迅速進步,從最初的基於簡單邏輯的機器人到現在基於自然語言理解(NLU)的人工智慧。對於後者,建構這類聊天機器人時最常用的框架或函式庫包括國外的RASA、Dialogflow和Amazon Lex等,以及國內大廠百度、科大訊飛等。這些框架可以整合自然語言處理(NLP)和NLU來處理輸入文字、分類意圖並觸發正確的操作以產生回應。

隨著大型語言模型(LLM)的出現,我們可以直接使用這些模型來建立功能齊全的聊天機器人。其中一個著名的LLM例子是來自OpenAI的生成Generative Pre-trained Transformer 3 (GPT-3:chatgpt就是基於gpt fine-tuning及加入人類回饋模型的),它可以透過使用對話或會話資料來fine-tuning模型,產生類似自然對話的文字。這種能力使其成為建立自訂聊天機器人的最佳選擇。

今天我們來聊聊如何透過fine-tuning GPT-3模型來建立滿足屬於我們自己的簡單會話聊天機器人。

通常,我們希望在自己的業務對話範例的資料集上fine-tuning模型,例如客戶服務的對話記錄、聊天日誌或影片中的字幕。 fine-tuning流程調整模型的參數,讓它更好地適應這些會話數據,從而使聊天機器人更擅長理解和回覆使用者輸入。

要fine-tuningGPT-3,我們可以使用Hugging Face的Transformers函式庫,該函式庫提供了預訓練模型和fine-tuning工具。該庫提供了幾種不同大小和較多能力的GPT-3模型。模型越大,可以處理的資料就越多,精度也可能越高。但是,為了簡單起見,我們這次使用的是OpenAI接口,可透過編寫少量的程式碼來實現fine-tuning。

接下來就是我們使用OpenAI GPT-3 來實現fine-tuning,可從這獲取資料集,抱歉我又用國外資料集了,國內真的很少這類已經處理好的資料集。

1、建立Open API密匙

建立帳戶非常簡單,可以使用開啟這個連結就可以完成。我們可以透過openai key存取 OpenAI 上的模型。建立API 金鑰步驟如下:

  • 登入您的帳戶
  • 前往頁面的右上角,然後點擊帳戶名,下拉列表,然後點擊「查看API 金鑰”

利用 GPT-3 构建适合公司业务的聊天机器人

  • 點擊“建立新金鑰”,記得馬上複製產生的金鑰,切記,並保存好,不然無法再次查看它。

利用 GPT-3 构建适合公司业务的聊天机器人

2、準備數據

我們已經創建了api密匙,那麼我們可以開始準備fine-tuning模型的數據,在這可以查看資料集。

利用 GPT-3 构建适合公司业务的聊天机器人

第一步:

安裝OpenAI 函式庫pip install openai

安裝後,我們就可以載入資料了:

import os
import json
import openai
import pandas as pd
from dotenv import load_dotenv
load_dotenv()
os.environ['OPENAI_API_KEY'] = os.getenv('OPENAI_KEY')
openai.api_key = os.getenv('OPENAI_KEY')
data = pd.read_csv('data/data.csv')
new_df = pd.DataFrame({'Interview AI': data['Text'].iloc[::2].values, 'Human': data['Text'].iloc[1::2].values})
print(new_df.head(5))
登入後複製

我們將問題載入到Interview AI列中,並將相應的答案載入到Human列中。我們還需要建立一個環境變數.env檔案來保存OPENAI_API_KEY

接下來,我們將資料轉換為 GPT-3 的標準。根據文檔,確保資料採用JSONL具有兩個鍵的格式,這個很重要:prompt例如completion

{ "prompt" :"<prompt text>" ,"completion" :"<ideal generated text>" } 
{ "prompt" :"<prompt text>" ,"completion" :"<ideal generated text>" }
登入後複製

重新建構資料集以適應以上方式,基本上是循環遍歷資料框中的每一行,並將文字分配給Human,將Interview AI文字分配給完成。

output = []
for index, row in new_df.iterrows():
print(row)
completion = ''
line = {'prompt': row['Human'], 'completion': row['Interview AI']}
output.append(line)
print(output)
with open('data/data.jsonl', 'w') as outfile:
for i in output:
json.dump(i, outfile)
outfile.write('n')
登入後複製

使用prepare_data指令,這時會在提示時問一些問題,我們可以提供Y或N回應。

os.system("openai tools fine_tunes.prepare_data -f 'data/data.jsonl' ")
登入後複製

最後,一個名為的檔案data_prepared.jsonl被轉儲到目錄中。

3、fun-tuning 模型

要fun-tuning模型,我們只需要執行一行指令:

os .system( "openai api fine_tunes.create -t 'data/data_prepared.jsonl' -m davinci " )
登入後複製

这基本上使用准备好的数据从 OpenAI 训练davinci模型,fine-tuning后的模型将存储在用户配置文件下,可以在模型下的右侧面板中找到。

利用 GPT-3 构建适合公司业务的聊天机器人

4、模型调试

我们可以使用多种方法来验证我们的模型。可以直接从 Python 脚本、OpenAI Playground 来测试,或者使用 Flask 或 FastAPI 等框构建 Web 服务来测试。

我们先构建一个简单的函数来与此实验的模型进行交互。

def generate_response(input_text):
response = openai.Completion.create(
engine="davinci:ft-personal-2023-01-25-19-20-17",
prompt="The following is a conversation with DSA an AI assistant. "
 "DSA is an interview bot who is very helpful and knowledgeable in data structure and algorithms.nn"
 "Human: Hello, who are you?n"
 "DSA: I am DSA, an interview digital assistant. How can I help you today?n"
 "Human: {}nDSA:".format(input_text),
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.6,
stop=["n", " Human:", " DSA:"]
)
return response.choices[0].text.strip()

output = generate_response(input_text)
print(output)
登入後複製

把它们放在一起。

import os
import json
import openai
import pandas as pd
from dotenv import load_dotenv
load_dotenv()
os.environ['OPENAI_API_KEY'] = os.getenv('OPENAI_KEY')
openai.api_key = os.getenv('OPENAI_KEY')
data = pd.read_csv('data/data.csv')
new_df = pd.DataFrame({'Interview AI': data['Text'].iloc[::2].values, 'Human': data['Text'].iloc[1::2].values})
print(new_df.head(5))
output = []
for index, row in new_df.iterrows():
print(row)
completion = ''
line = {'prompt': row['Human'], 'completion': row['Interview AI']}
output.append(line)
print(output)
with open('data/data.jsonl', 'w') as outfile:
for i in output:
json.dump(i, outfile)
outfile.write('n')
os.system("openai tools fine_tunes.prepare_data -f 'data/data.jsonl' ")
os.system("openai api fine_tunes.create -t 'data/data_prepared.jsonl' -m davinci ")
def generate_response(input_text):
response = openai.Completion.create(
engine="davinci:ft-personal-2023-01-25-19-20-17",
prompt="The following is a conversation with DSA an AI assistant. "
 "DSA is an interview bot who is very helpful and knowledgeable in data structure and algorithms.nn"
 "Human: Hello, who are you?n"
 "DSA: I am DSA, an interview digital assistant. How can I help you today?n"
 "Human: {}nDSA:".format(input_text),
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.6,
stop=["n", " Human:", " DSA:"]
)
return response.choices[0].text.strip()
登入後複製

示例响应:

input_text = "what is breadth first search algorithm"
output = generate_response(input_text)
登入後複製
The breadth-first search (BFS) is an algorithm for discovering all the 
reachable nodes from a starting point in a computer network graph or tree data 
structure
登入後複製

结论

GPT-3 是一种强大的大型语言生成模型,最近火到无边无际的chatgpt就是基于GPT-3上fine-tuning的,我们也可以对GPT-3进行fine-tuning,以构建适合我们自己业务的聊天机器人。fun-tuning过程调整模型的参数可以更好地适应业务对话数据,让机器人更善于理解和响应业务的需求。经过fine-tuning的模型可以集成到聊天机器人平台中以处理用户交互,还可以为聊天机器人生成客服回复习惯与用户交互。整个实现可以在这里找到,数据集可以从这里下载。

以上是使用 GPT-3 建立符合業務需求的企業聊天機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板