March 15th, 2024
起因
這邊文章,主要是透過【LineBot實作】如何製作有記憶的對話機器人 的相關修改。 把需要付費的服務 OpenAI 改成目前還有免費額度的 Google Gemini ,並且針對相關訊息的程式碼做一些調整。 主要的 LINe Bot 設定與 Firebase 設定請參考原先文章。
快速講解一下設定的方法:
這裡僅快速條列式,講解一下該如何設定這個應用。
- 建立 LINE Bot 帳號
- 首先先去 LINE Developer Console 建立一個 Messaging API Channel
- 在 Basic Setting Tab 取得 Channel secret
- 在 Messaging API Tab 產生 (issue) Channel access token
- 到 Google Cloud 的 Firebase
- 建立一個專案
- 設定一個 Realtime Database
- 更改安全規則,讓資料庫可以被任何人存取與修改。(請注意: 這是因為做測試專案,請勿再正式專案如此設定)
- 取得該資料庫網址: https://XXX.firebaseio.com/
- 到 Google Cloud 的 Cloud Functions
- 建立一個 Cloud Functions - Gen1 或是 Gen2 都可以
- 採取 HTTPS
- 驗證部分: 使用「允許未經驗證的叫用」
- 新增四個環境變數:
- GEMINI_API_KEY:(在 Google AI Studio 獲得的secret key)
- LINE_BOT_TOKEN:(在Line Developers獲得的Channel access token)
- LINE_BOT_SECRET:(在Line Developers獲得的Channel secret)
- FIREBASE_URL:(在Firebase獲得的URL)
- 程式碼部分,請使用以下修改的程式碼。
主要修改程式碼部分
首先是 requirements.txt
需要將相關設備改成 Gemini pro - google.generativeai
。
接下來建立另外一個檔案: main.py
設定 “進入點” 到 linebot
,並且記錄觸發網址 https://xxxxxxxx.cloudfunctions.net/function-test1
。
關於 OpenAI ChatComplete 與 Google Gemini Pro - Multi-turn conversations 格式轉換
這邊講解一下,關於 OpenAI 的 Chat Completion API 的格式:
[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
但是 Google Gemini Pro 的 Multi-turn Conversations 格式不太一樣。
[
{'role':'user',
'parts': ["Briefly explain how a computer works to a young child."]},
{'role':'model',
'parts': ["想像一下你的電腦就像一個超級聰明的機器人,它可以按照你的指令去做很多事情....."]}
]
主要差別除了 “content” 與 “parts” 命名不同外, parts
可以接受多種資料格式。可以參考 API Reference 關於 Gemini Content。
回頭設定 LINE Bot
- 設定 LINE Developer Console 到了 Messaging API Tab 並且將 Webhook URL 放入剛剛輸入的
https://xxxxxxxx.cloudfunctions.net/function-test1
。 - 測試是否成功,即可開始對聊天機器人溝通。