前言:
本篇文章主要是 iThome Cloud Summit 2024 Lab 的課程內容:
這裡可以看一下投影片內容,在緊接著來看 Lab 實作的流程教學:
課程目標
這個工作坊適合對 ChatBot 開發、雲端服務或機器學習有興趣的開發者、學生或任何技術愛好者。無論你是想擴展你的技能集,還是對打造智能旅遊助手有獨特的想法,這個工作坊都將為你提供實踐經驗和深入知識。
課程綱要
第一部分:了解基礎
Cloud Function 和 Firebase 簡介:學習這些平台的基本概念以及它們如何協同工作來支持應用程式的後端。
LINE ChatBot 的運作原理:深入了解 LINE ChatBot 的架構和 API,以及如何與用戶進行互動。
第二部分:動手實作
設置 Firebase 環境:實際操作,建立 Firebase 專案並配置所需的服務。
開發 Cloud Function:學習如何編寫和部署 Cloud Function 來處理 ChatBot 的邏輯和資料存取。
整合 Gemini Pro Vision API:探索如何使用 Gemini Pro Vision 的 API 進行影像識別,並將其應用於收據管理。
第三部分:ChatBot 功能開發
旅遊資訊查詢:實現一個功能,讓用戶可以透過 ChatBot 查詢旅遊相關資訊。
收據上傳與識別:開發一個系統,讓用戶能夠上傳收據圖片,並利用 Gemini Pro Vision 的技術自動識別和整理收據資訊。
第四部分:部署與監控
ChatBot 的部署:學習如何將 ChatBot 部署到生產環境中,讓真實用戶開始使用。
監控與維護:介紹如何監控 ChatBot 的運行狀況,並進行必要的維護。
學員自備裝置
1.可連接網路筆電
2.Google Cloud 帳號
3.LINE 帳號
學員基礎能力需求
Python
Cloud Deployment
事前準備:
- LINE Developer Account: 你只需要有 LINE 帳號就可以申請開發者帳號。
- Google Cloud Functions: Python 程式碼的部署平台,生成供 LINEBot 使用的 webhook address。
- Firebase:建立Realtime database,LINE Bot 可以記得你之前的對話,甚至可以回答許多有趣的問題。
- Google AI Studio:可以透過這裡取得 Gemini Key 。
關於 Gemini API Price
根據官方網站: https://ai.google.dev/pricing?hl=zh-tw
申請 Gemini API Key
- 到 Google AI Studio https://aistudio.google.com/
- Click “Get API Key”
- 選擇你已經有綁定信用卡的付費帳號,來取得 API Key
申請一個 LINE 聊天機器人 (Messaging API)
- 到 LINE Developer Console )並且登入
- 在挑選 Channel 的時候,如果要申請 LINE Chatbot (官方帳號),就要申請 Messaging API
- 相關資料填寫上:
- Cmpany or owner’s country or region:
- Channel Name: 也就是你的 LINE Bot 名稱。
- Channel description: 相關敘述來描述你 LINE Bot 做什麼。
- 其他都可以隨便填寫即可。
- 接下來要到 Messaging API Tab 執行以下設定:
- Auto-reply messages: 關閉它
- 接下來要取得兩個重要的參數:
- 在 Basic Setting Tab 下方的
Channel secret
- 在 Messaging API Tab 下方的
Channel access token (long-lived)
- 在 Basic Setting Tab 下方的
- 目前先到這邊,稍後還會回來設定相關 Webhook 。
建立一個 Cloud Run 服務
- 首先將 https://github.com/kkdai/linebot-gemini-python fork 到自己的 repo
- 自己建立一個新的 Cloud Run 專案
- 選擇好 Source Repository (應該是你自己的名字)
- 透過 Dockerfile 來啟動
- 機器設定可以挑選任何區域,但是
Authentication
要挑選Allow unauthenticated invocations
- Container(s), Volumes, Networking, Security 相關設定,需要將環境參數寫進去。
ChannelSecret
: Your LINE channel secret.ChannelAccessToken
: Your LINE channel access token.GEMINI_API_KEY
: Your Gemini API key for AI processing.
第一階段成果 - Gemini Pro 小幫手
第二階段: 讓我們來加上 Firebase Realtime Database
申請 Firebase Database 服務
-
記得到 Firebase Console,直接選取你現在有的專案。(可能叫做 My First Project?)
-
建立一個 Firebase Realtime Database 等等會用到
-
地區選美國
-
Start in “lock mode”
-
為了開發方便,到 “Rules”設定成可以寫跟讀取,千萬注意:
- 這是為了測試,請勿用在對外環境
- 這是為了測試,請勿用在對外環境
- 這是為了測試,請勿用在對外環境
- 記住哪個 URL (注意!之後要正式上線,需要改回權限),並且加上一個項目: “BwAI”
建立一個 Cloud Run 服務
- 首先將 https://github.com/kkdai/linebot-receipt-gemini fork 到自己的 repo
- 自己建立一個新的 Cloud Run 專案
- 選擇好 Source Repository (應該是你自己的名字)
- 透過 Dockerfile 來啟動
- 機器設定可以挑選任何區域,但是
Authentication
要挑選Allow unauthenticated invocations
- Container(s), Volumes, Networking, Security 相關設定,需要將環境參數寫進去。
ChannelSecret
: Your LINE channel secret.ChannelAccessToken
: Your LINE channel access token.GEMINI_API_KEY
: Your Gemini API key for AI processing.FIREBASE_URL
: Your Firebase database URL.
LINE Bot 完成最後設定
- 到 “Messaging API” Tab
- 填入 “Webhook URL” 數值,將剛剛得「觸發網址填上去」
- 更新(update)後,使用 “Verify” 看看有沒有設定錯誤。
- 如果沒有問題,可以打開「Use webhook」
需要注意事項:
1. 發生 Error “Cloud Build trigger creation failed. Required role roles/iam.service/run.admin, roles/iam.services/iam.serciceAccloutUser”
第一次建立 Google Cloud 專案之後,如果馬上使用 Cloud Run 就會發生這樣的錯誤。 主要是因為預設的 Compute Engine default service account 的權限不足。 修改方式如下:
- 到 IAM 的設定畫面。
- 修改 Compute Engine default service account 權限
- 確定增加兩個權限
- Cloud Run Admin
- Service Account User
參考以下圖片:
2. 要注意一下 Cloud Function / Cloud Run Instance 開的伺服器夠不夠大
- 如果 Firebase 資料放太多,要小心記憶體可能會不夠。記得 Cloud Function (Cloud Run) 記憶體要開得夠大。
- 有使用到圖像處理,因為要把圖像整個讀取到記憶體中。也會有相關的考量。
3. 記得定期清理 Artifact Registry 空間 - 透過 Artifact Registry 直接設定 House Keeping 策略
-
點選 size 最大的吧,然後選取上方 Edit Repository
-
在最下方,選曲 Cleanup Policies
-
選擇 “Keep most Recent versions”
-
“Keep count” 選 1 (也可以是 2)
如果怕刪除太多,可以用 Dry run 看看結果。
完整原始碼
你可以在這裡找到相關的開源程式碼:
衍伸應用
透過 Cloud Run / Cloud Function 可以很快速部署服務到 Google Cloud 並且很快的讓你的 LINE Bot 可以上線。以下有相關應用可以去參考一下: