當ChatGPT遇上WebSocket

ChatGPT

上期介紹了WebSocket初步的應用,本期來說說火紅的ChatGPT,他是由OpenAI發展出來的聊天機器人.

本期就來把這兩個技術加起來,變成一個可以即時線上對聊的機器人,可以想像他可以做成線上客服系統…等等應用!

零、介紹

OpenAI剛開始成立是促進發展AI技術,成立於2015年,現在是由OpneA LP與非營利組職OpenAI Inc組成,最熟悉的投資人包含伊隆馬斯克與微軟,同時馬斯克也是創辦人,目前針對AI的專案相當多,比較著名的如GPT3(Generative Pre-trained Transformer3)、Image GPT、ChatGPT…等

而本次介紹ChatGPT就是該組織的一個研究產品,通過GPT-3.5的自回歸模型加上大量語言進行強化學習,可以以對話方式產生文字、自動問答、自動摘要等,本次將展示一個類似閒聊的對答應用.

一、準備工作

  1. 因為ChatGPT沒有直接開放API,所以我們可以用OpenAI的API來模擬這個功能,會用到ChatGPT API需要先去OpenAI註冊,取得API Key才可以使用.
  2. 延續上期,若環境上還沒準備可以點選此先將WebSocket建立起來.
  3. 安裝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
...略

三、測試結果

  • 測試一下同一個問句,他的回答
ChatGPT同個問句回答方式不同
ChatGPT同個問句回答方式不同
  • 測試一下是否可以知道上下文與代詞
ChatGPT可以理解上下文與代詞
ChatGPT可以理解上下文與代詞

四、結論

由上面可以看到,其實表現得還算不錯,第二次T編問的是’那邊開到幾點’,那邊人的理解會是指台北車站,ChatGPT也是可以理解!

不過測試的時候,發現為什麼問台北天氣都不準,估計應該是學習以前的資訊,但沒有去查當前的氣溫資訊,因為T編寫文章的當天可是14度,但我想這應該不是太大的問題,可以理解再去查詢即可!

ChatGPT查天氣
ChatGPT查天氣

後記,T編試著去問’我要一副有藍天白雲加上海邊的圖片’,ChatGPT可以知道我要找的東西,並且回覆我一個連結,可惜可能是過往的資料,所以圖片都無法打開,以致不知道他能不能理解正確!

ChatGPT理解文字回傳圖片
ChatGPT理解文字回傳圖片

五、參考

Loading

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *