Skip to content

cupid00772/Stock-Line_bot

Repository files navigation

W11 作業:股票 LINE Bot

繳交方式:將你的 GitHub repo 網址貼到作業繳交區 作業性質:個人作業


作業目標

利用上週設計的 Skill,開發一個股票相關的 LINE Bot。 重點不是功能多寡,而是你設計的 Skill 品質——Skill 寫得越具體,AI 產出的程式碼就越接近可以直接執行。


功能要求(擇一實作)

功能 說明
查詢即時價格 (已實作) 整合 yfinance 取得即時股價,並交由 Gemini 進行走勢分析

以「可以執行、能回覆訊息」為目標,不需要複雜


繳交項目

你的 GitHub repo 需要包含:

項目 說明
app.py LINE Webhook + Gemini + SQLite 後端
requirements.txt 所有套件
.env.example 環境變數範本(不含真實 token)
.agents/skills/ 包含 /linebot-implement Skill
README.md 本檔案(含心得報告)
screenshots/chat.png LINE Bot 對話截圖(至少一輪完整對話)

啟動方式

# 1. 建立虛擬環境
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# 2. 安裝套件
pip install -r requirements.txt

# 3. 設定環境變數
cp .env.example .env
# 編輯 .env,填入您的三個 token (LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET, GEMINI_API_KEY)

# 4. 啟動 FastAPI (已內建自動啟動 ngrok)
uvicorn app:app --reload

# 5. ngrok 網址設定
# 系統啟動時會印出 ngrok 網址
# 複製 https 網址,填入 LINE Developers Console 的 Webhook URL(加上 /callback)
# 點「Verify」確認連線正常後,掃 QR Code 加好友開始測試

心得報告

姓名:[張承新] 學號:[D1285325]

Q1. 你在 /linebot-implement Skill 的「注意事項」寫了哪些規則?為什麼這樣寫?

  1. 指定使用 line-bot-sdk-python v3:因為舊版 v2 寫法已經棄用,如果不特別指定,AI 常常會混用舊版類別(如 TextSendMessage),導致程式碼過時且後續維護困難。
  2. Webhook + Handler 標準範例:直接提供 FastAPI 的整合範本,確保路由與簽章驗證邏輯正確。
  3. 常見地雷防範:特別強調 reply_token 只能用一次、環境變數不能寫死,以及最關鍵的「耗時操作必須用背景處理 (BackgroundTasks)」。因為如果 Gemini 推論太久超過 LINE 的幾秒鐘限制,會導致 LINE 伺服器 timeout 而不斷重試發送相同訊息。

Q2. 你的 Skill 第一次執行後,AI 產出的程式直接能跑嗎?需要修改哪些地方?修改後有沒有更新 Skill?

產出的程式碼幾乎可以直接執行!因為我在 Skill 中明確規定了必須用 BackgroundTasks 來包裝處理邏輯,所以 AI 一開始寫出來的 app.py 就不會發生 LINE Timeout 的問題。後來我只請 AI 額外加入 pyngrok 的自動啟動程式碼,省下手動開啟 ngrok 的麻煩,並將這個啟動順序的提示寫入了說明文件中。


Q3. 你遇到什麼問題是 AI 沒辦法自己解決、需要你介入處理的?

LINE 的 Webhook URL 設定與 Verify 必須要我手動前往 LINE Developers Console 貼上並點擊驗證;另外,設定 .env 檔案填入真實的 Token 也必須我親自去後台申請。還有就是如果不小心忘記在 Webhook 網址後面加上 /callback,會導致 404 Error,這部分需要我多加注意。


Q4. 如果你要把這個 LINE Bot 讓朋友使用,你還需要做什麼?

  1. 部署到雲端:目前是用 ngrok 跑在本機,關機就失效了。必須把程式碼部署到 Render 或 Zeabur 等有提供 HTTPS 的雲端伺服器上。
  2. 資料庫持久化:目前的 linebot_stock.db 是 SQLite 本機檔案,部署到雲端的話重新部署資料會不見,未來應該改接 PostgreSQL 或 MySQL 等外部資料庫。
  3. 防呆與錯誤處理:增加更多對未知指令的友善回覆,並確保 API (如 yfinance) 呼叫失敗時會溫柔提示使用者,而非直接崩潰。

About

repository for Ai-Agent Class in FCU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors