答: 我規定必須使用 FastAPI 和 LINE SDK v3 的寫法,並要求 Webhook 無論成功與否都必須回傳 HTTP 200 OK。另外也要求使用 SQLite 紀錄 user_id,以及透過 Gemini API 生成回覆。 原因是因為 LINE 伺服器對 Webhook 的回應非常嚴格,如果沒有正確回傳 200,即使後端邏輯正確執行,LINE 也會判定傳送失敗並顯示錯誤。而限制 SDK 版本與框架則能確保 AI 生成出現代且符合非同步 (Async) 效能要求的程式碼。
答: 不能直接跑。第一次執行時,AI 雖然依照我的指示嘗試匯入 AsyncWebhookHandler,但因為我安裝的是最新版的 line-bot-sdk-python v3,官方已經移除了這個模組,導致出現 ImportError。
後來我請 AI 修正,它改用 WebhookParser 搭配手動事件迴圈來達成非同步處理。此外也遇到了 Gemini 模型版本更新 (舊版 gemini-pro 無法使用的 404 錯誤),AI 幫我加入了「自動切換模型」的容錯機制才順利解決。這讓我學到開發提示詞 (Prompt) 時,有時不需要過度綁死特定的模組名稱,而是要容許 AI 根據最新套件版本去調整寫法。
答: 有兩個主要部分必須自己親自動手:
- 外部平台設定與金鑰申請: LINE Developers Console 的後台設定(例如開啟 Webhook 開關、將回應模式改為「聊天機器人」),以及去 Google AI Studio 申請與更新 Gemini API 金鑰(因為舊金鑰外洩被官方鎖定)。
- 本地網路穿透與環境設定: ngrok 的安裝與認證代幣(authtoken)綁定,以及必須手動開啟多個終端機視窗來分別運行 FastAPI (
uvicorn) 與ngrok服務。這些涉及外部網頁 UI 操作和本地端實體環境運行的環節,AI 只能提供精準的步驟指引,無法直接代勞。
答: 需要將這套程式碼部署到 24 小時運作的雲端伺服器(例如 Render, Zeabur 或 Fly.io 等平台),並使用平台提供的固定 HTTPS 網址來替換掉目前 LINE 後台的 Webhook URL。 因為目前開發階段使用的 ngrok 只是暫時的網路通道,只要我的電腦關機或是終止終端機程式,網址就會失效,LINE Bot 也會跟著斷線,無法提供朋友穩定的長期服務。