本期就來把這兩個技術加起來,變成一個可以即時線上對聊的機器人,可以想像他可以做成線上客服系統…等等應用!
零、介紹
OpenAI剛開始成立是促進發展AI技術,成立於2015年,現在是由OpneA LP與非營利組職OpenAI Inc組成,最熟悉的投資人包含伊隆馬斯克與微軟,同時馬斯克也是創辦人,目前針對AI的專案相當多,比較著名的如GPT3(Generative Pre-trained Transformer3)、Image GPT、ChatGPT…等
而本次介紹ChatGPT就是該組織的一個研究產品,通過GPT-3.5的自回歸模型加上大量語言進行強化學習,可以以對話方式產生文字、自動問答、自動摘要等,本次將展示一個類似閒聊的對答應用.
一、準備工作
- 因為ChatGPT沒有直接開放API,所以我們可以用OpenAI的API來模擬這個功能,會用到ChatGPT API需要先去OpenAI註冊,取得API Key才可以使用.
- 延續上期,若環境上還沒準備可以點選此先將WebSocket建立起來.
- 安裝OpenAI Lib比較方便
pip install openai
二、開始建立
本次程式碼相對簡單,因為是展示,T編也沒有特別整理,就直接在上期介紹ChatConsumer中加入,但實際生產環境,應該是在把它寫成function進行呼叫比較好.
另外response此段可以參考官網Examples看易用什麼任務再去撰寫.
#consumers.py
#openai
import openai #這次要透過ChatGPT當然可以採用他們的lib會比較方便
openai.api_key = "[您自己的API Key]"
...略
def websocket_receive(self, message):
#瀏覽器基於ws傳送資料,自動觸發接受消息(message)
print('接收瀏覽器的訊息-->', message['text'])
text = message['text']
response = openai.Completion.create(
engine="text-davinci-003",
prompt=text,
max_tokens=2048,
temperature=0.9,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.0,
stop=["You:"]
)
res ="您:{}\n Bot:{}".format(text,re.sub('\n|\t', '', response.choices[0].text))
for conn in CONN_LIST:
conn.send(res)
if text == 'close':
self.send('你要求我關閉喔!')
self.close() #後端自動斷開
#raise StopConsumer() # 後端不允許連結,就不會執行websocket_disconnect
return
...略
三、測試結果
- 測試一下同一個問句,他的回答
- 測試一下是否可以知道上下文與代詞
四、結論
由上面可以看到,其實表現得還算不錯,第二次T編問的是’那邊開到幾點’,那邊人的理解會是指台北車站,ChatGPT也是可以理解!
不過測試的時候,發現為什麼問台北天氣都不準,估計應該是學習以前的資訊,但沒有去查當前的氣溫資訊,因為T編寫文章的當天可是14度,但我想這應該不是太大的問題,可以理解再去查詢即可!
後記,T編試著去問’我要一副有藍天白雲加上海邊的圖片’,ChatGPT可以知道我要找的東西,並且回覆我一個連結,可惜可能是過往的資料,所以圖片都無法打開,以致不知道他能不能理解正確!
五、參考