手把手連結 ChatGPT 與 LineBot

Chao-Hsuan Ke
小小實驗室
Published in
6 min readJan 8, 2023

ChatGTP 越來越紅了,雖然直接在它的網頁上使用不是什麼難事,但如果能接上現有的即時通訊 (Instant Message, IM) 對於某些人來說可能更為方便 (至少不用先註冊,還可以用別人的流量 ><)

要串 API 有幾個需求 :

  1. 託管主機
  2. OpenAPI token
  3. 若需要串接通訊軟體則需另外各自的 token,若以串接 Line 來說,則是需要有 : Channel access token 與 Channel secret
  4. 各 token 都取得後將執行程式放到託管主機中自動執行,
  5. 在需串接的通訊軟體設定 WebHook

完成以上五個步驟,如此整個環境就可以完成,以下則是針對這些步驟進行說明

1. 託管主機

如果不想在 AWS 或是 Azure 上用 VM 服務器,另一個比較簡單的方法就是用 Vercel 來部屬。Vercel最大的好處是只要將自己的 github 連結到 Vercel 後就可以直接執行了,關於 Vercel 詳細的說明可以參考這個說明 :

2. 取得 OpenAPI token (註冊申請 Open AI API)

官方網站申請為會員,接著選 View API Key

接著選擇”create new secret key” 即可獲得建立 token,此 token 先稱為 openAPI key,並請先記下,這在之後要填入設定的地方

3. 取得通訊軟體 token 與設定

因為使用 Line 作為溝通介面,LineBot 這便有三個 token 需要申請。一個是LineBot Channel access token 一個是 Channel secret 以及 LineBot Key。

詳細的步驟可以參考這一篇 : LineBot 申請

當取得各 token 後記得要去 LINE Official Account Manager 修改一些設定,在 "回應設定" 中將兩個選項都打開 :

1. 聊天
2. Webhook

4. 於託管主機中自動執行

在步驟一已經完成 Vercel 的申請,接下來就是要把執行的程式放到 Vercel 執行。在此,可以直接使用現有已開發的程式碼,先 fork 一份回自己的 github 中,之後在 Vercel 直接 import 自己 fork 回來的部分即可。

這上述包中分別包含三個主要部分 :

  1. index.py : 主要執行檔,來源為參考 LINE Messaging API SDK for Python
  2. chatgpt.py : 對話互動,來源為參考 OPEN AI 聊天機器人 Chat範例
  3. prompt.py : 後端執行,來源為參考 Vercel 提供的 flask 範例

以及一個 requirements.txt,內容為指定本次所需使用 library 及版本

Flask==2.2.2
line-bot-sdk
openai

並用 vercel.json 指定路徑進入點。

{
"builds": [
{
"src": "api/index.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "api/index.py"
}
]
}

確認您的 github 中已經存在

當執行程式與環境設定好之後,到 Vercel 將連結 github 中的 project 進行 import

點擊 Environment Variables 進行環境設定,設定在步驟二與步驟三取得的三個 token 進行輸入設定

OPENAI_API_KEY

LINE_CHANNEL_ACCESS_TOKEN

LINE_CHANNEL_SECRET

輸入後會出現在下方,完成後 點擊 Deploy,則此服務就會在 Vercel 中運行起來,當看到這個畫面,表示整個服務已經被完整啟動

離開前先複製 DOMAINS 網址,這個網址之後要加入 Line Bot 中

5. 在 Line Bot中設定 WebHook

回到 LineBot 的設定頁面,進到 Message API 後將剛才從 Vercel 複製的 DOMAINS 網址貼到 “Webhook網址” 中,並在後放再加入 webhook

之所以要加入是因為在 index.py 中的 POST 是預設這個寫法,當然這個名稱隨時可以修改,只要在 Message API 中的Webhook網址跟著變動即可

當完成上述結果後至此,就可以進行測試囉~

--

--

Chao-Hsuan Ke
小小實驗室

永遠熱愛自己的工作,總是找一堆事把自己的時間塞滿。喜歡接觸不同領域,像是 歷史、文化、金融和公共政策 等議題,期許著自己會什麼就分享什麼。