使用LINE Bot搭配OpenAI API建立出新一代的AI機器人

ChatGPT的出現,是對談機器人一個明顯的分水嶺。

你肯定用過許多網路銀行的對談機器人服務,或是類似的其他機器人,然而效果總是讓人覺得差強人意。原因不外乎幾點,過去的對談機器人很明顯無法明白你說的話,這是NLU(natural language understanding)能力的不足。再來,過去的對談機器人大多沒有前後文的概念,也沒有記憶,因此對談起來常常讓你覺得答非所問,牛頭不對馬嘴,整體效果並不理想。

但ChatGPT卻讓人完全沒有這樣的感覺,主要是ChatGPT對於NLU有極強的能力,ChatGPT本身又有前後文記憶,這讓整體對談效果理想非常多。

透過OpenAI API,我們也可以用LINE Bot做一個類似ChatGPT的客服機器人,這一篇,就step by step來跟您介紹,如何實現一個ChatGPT能力加持的LINE Bot。

建立LINE WebHook

建立LINE Bot的方式過去我們在Blog有介紹很多次了,我們這邊就不再贅述。
我們在建立好LINE Bot之後,可以建立一個WebHook的開發專案(使用 C#與 .net core):

md folder
cd folder
# 建立 Web API 專案
dotnet new webapi -f net5.0
# 安裝套件
dotnet add package linebotsdk
# 安裝程式碼範本
dotnet new --install isRock.Template.LineWebHook  
dotnet new linewebhook
# 開啟VS Code ( OR vs2019/vs2022)
code . 

上面這段CLI指令會建立出一個 .net core 的 webapi 專案,建立好後透過 VS Code 開啟,並且修改 LineBotChatGPTWebHookController.cs 中的 Admin User ID 與 Channel Access Token:
圖片
這個動作是讓 WebHook 可以控制你的LINE Bot來接收發送訊息。

接著看同一支程式碼中的 117 行,由於我們要呼叫 OpenAI 的 ChatCompletion API,因此我們把程式碼中的 117 行從 CallAzureOpenAIChatAPI 換成 CallOpenAIChatAPI (這個範例同時支援OpenAI與AzureOpenAI),並且填入 OpenAI API Key:
圖片

這樣就大功告成了。

由於這是一隻 WebHook,如果你需要測試,建議你使用 NGROK 之類的工具,讓 localhost 運行的 .net core 程式碼可以具有一個公開的endpoint,再把這個 endpoint 在LINE Bot的後台設定好,即可運行。例如:
圖片

別忘了,若要用NGROK進行測試,建議你同時修改 Startup.cs 的第 47行:
圖片

避免運行的時候強制走HTTPS模式,這會讓NGROK失效。

最後,執行的結果如下,由於我們在程式碼中給的 prompt 是讓它作為一個客服機器人,因此你會發現它很盡責的在回答各種問題:
圖片

透過ChatGPT(OpenAI API)加持,隨便做的 ChatBot 都比去年同期的 ChatBot效果硬是高了幾個檔次,不管是對談聊天或是問題回覆,都讓人心曠神怡。

相關課程:
https://www.studyhost.tw/NewCourses/LineBot

留言

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用Qdrant向量資料庫實作語意相似度比對

專業的價值...

使用 Airtable 在小型需求上取代傳統資料庫

讓 LINE Bot 對談機器人顯示 "Loading..." 動畫