image-20240318204441270

起因

這邊文章,主要是透過【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
    • 驗證部分: 使用「允許未經驗證的叫用」
    • 新增四個環境變數
      1. GEMINI_API_KEY:(在 Google AI Studio 獲得的secret key)
      2. LINE_BOT_TOKEN:(在Line Developers獲得的Channel access token)
      3. LINE_BOT_SECRET:(在Line Developers獲得的Channel secret)
      4. 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
  • 測試是否成功,即可開始對聊天機器人溝通。

參考文章:


Buy Me A Coffee

Evan

Attitude is everything