0%

在 Cloud Functions 上部署有 Open Data 功能的 LINE Bot | 摘要王, 天氣, 紅外線

前言

此篇文章為延續與政治大學 & 臺北大學 GDSC 工作坊的文章,如果對於整合 LINE 官方帳號的相關資訊,可以參考本篇喔!

LINE Bot & Gemini Pro 設定細節請參考: 旅行小幫手 LINE Bot 文章

事前準備

關於 Gemini API Price

根據官方網站: https://ai.google.dev/pricing?hl=zh-tw

細節請參考: 旅行小幫手 LINE Bot 文章

流程圖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 ┌─┐
"│
└┬┘
┌┼┐
│ ┌─────┐ ┌──────────────┐ ┌────────┐ ┌──────┐
┌┴┐ │Group│ │Webhook_Server│ │Firebase│ │Gemini│
User └─────┘ └──────┬───────┘ └────────┘ └──────┘
│ 傳送文章訊息 │ │ │ │
│ ──────────────>│ │ │ │
│ │ 傳送用戶指令 │ │ │
│ │───────────────────>│ │ │
│ │ │ 儲存聊天狀態在 Realtime DB│ │
│ │ │ ────────────────────────> | │
│ │ │ 儲存完畢 │ │
│ │ │ <──────────────────────── | │
│ │ 回傳已完成文字 │ │ │
│ │<───────────────────│ │ │
│ 輸入 "!摘要" │ │ │ │
│ ──────────────>│ │ │ │
│ │ 傳送用戶指令 │ │ │
│ │───────────────────>│ │ │
│ │ │ 抓取聊天記錄 │ │
│ │ │ ────────────────────────> | │
│ │ │ 回傳清單 │ │
│ │ │ <─────────────────────────| │
│ │ │ 下prompt 進行摘要運算 │
│ │ │ ────────────────────────────────────────────>|
│ │ │ 回傳摘要清單 │
│ │ │ <────────────────────────────────────────────|
│ │ 回傳摘要資訊至群組 │ │ │
│ │<───────────────────│ │ │
User ┌─────┐ ┌──────┴───────┐ ┌────────┐ ┌──────┐
┌─┐ │Group│ │Webhook_Server│ │Firebase│ │Gemini│
"│ └─────┘ └──────────────┘ └────────┘ └──────┘
└┬┘
┌┼┐

┌┴┐

介紹

  1. 首先到 GitHub 上 linebot-summarize-cloud-functions-gemini

  1. 將 Code 轉貼到 Cloud Functions 上的介面,這邊使用 1st Gen || 2nd Gen 都不影響,如果有舊的也可以複製一個 functions 出來
    1. Function name 小雷:如果先建立了一個 function-1 的,然後砍掉之後,再建立一個名字一樣 function-1 的,LINE bot 這邊會打不到新的 webhook

  1. 加入以下的環境變數,並放上對應的參數,如果有找不到的 Key,請參考過往的系列文
    1. 需要注意:因為使用 Python 關係,且之後圖片判斷功能,因此 Memory 會需要設定 1GB
1
2
3
4
ChannelSecret
ChannelAccessToken
GOOGLE_GEMINI_API_KEY
FIREBASE_URL

  1. 來到 GitHub 專案 linebot-gemini-summarize 的 main.py,點選畫面上的按鈕複製程式碼

  1. 轉貼到 Cloud Functions 上,需要注意的地方是,預設為 JavaScript,因此這邊要先選擇 Python 3.11,接著進入點需要換成 linebot,main.py 以及 requirements.txt 裡面的內容都需要置換,後續才能部署

  1. 在 build 的過程,找到觸發網址的地方,將他複製起來

  1. 複製到 LINE Developer Console 的 webhook 地方,不用加任何的 sub-path

  1. 接著可以來到 LINE TODAY 當中,假設現在有個爬蟲想做,模擬抓下來的動作,選擇自己喜歡的分類貼上,測試一樣 Gemini Pro 是否有通

試題:範例為列出五個項目,修改 prompt 找出群組的大家最近關注的事項

假設你是一位喜歡音樂的人,但今天想關注籃球圈的群組,你會怎麼請 AI Bot 幫忙呢?試試看把 prompt 改掉吧!

增加天氣 Open Data 功能

這部分範例參考 - 在 Cloud Run 上部署有 Open Data 功能的 LINE Bot | 摘要王, 天氣, 紅外線 文章上的內容

範例 code 在此,這邊需要準備的部分:

參考作法

衛星雲圖 - 是否有雲層

有時候光看氣象根本不準,外面雨到底要不要下呢? 請 Gemini vision 來幫忙看看台灣上方是否有大量雲層經過

  • 先天限制:兩個小時內會有圖片,當前時間的前十分鐘不會有照片
    • ex: 當前是 14:30,14:20~14:30 都不會有照片
    • 可以試著用時間套件+判斷式來檢測

參考以下 code,請在專案中的 chatbot 判斷式中加入程式 &套件放入 requirements.txt:

活動小結

立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev

關於「LINE 開發社群計畫」

LINE 於 2019 年開始在台灣啟動「LINE 開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦 30 場以上的活動。歡迎讀者們能夠持續回來查看最新的狀況。詳情請看: