GitHunt
KK

kkdai/linebot-gemini-file-search

LINE Bot with Google Gemini File Search

LINE Bot 智能文件助手 📚

一個結合 LINE Bot 與 Google Gemini File Search 的智能文件問答機器人

image

🎯 這是什麼?

想像一下:你可以把任何 PDF、Word 文件、圖片傳給 LINE Bot,然後直接問它「這份文件在講什麼?」、「幫我整理重點」、「這張圖片裡有什麼?」,Bot 就會用 AI 幫你分析並回答!

這個專案讓你輕鬆打造一個專屬的文件智能助手,只要:

  1. 📤 傳送文件或圖片給 Bot
  2. 💬 用自然語言提問
  3. 🤖 AI 立即分析並回答

✨ 功能特色

📁 支援多種檔案格式

  • 📄 文件檔案:PDF、Word (DOC/DOCX)、PowerPoint (PPT/PPTX)、純文字 (TXT) 等
    • 自動上傳到 File Search Store
    • 支援後續文字查詢
    • 自動轉換功能
      • .doc 格式自動轉換為 .docx
      • .ppt 格式自動轉換為 .pptx
  • 🖼️ 圖片檔案:JPG、PNG 等
    • 使用 Gemini 視覺理解能力即時分析
    • 無需上傳,直接回傳分析結果

🧠 AI 智能問答

  • 使用 Google Gemini 2.5 Flash 模型
  • 基於你上傳的文件內容回答問題
  • 支援繁體中文、英文等多語言

💬 對話記憶功能 🆕

  • 記住對話歷史:AI 會記得之前的對話內容,支援追問和延伸討論
  • 自動上下文理解:使用 Google ADK Chat Session 技術
  • 智能 Session 管理
    • 每位用戶獨立的對話記憶
    • 自動超時清理(1小時無活動)
    • 手動清除指令:輸入「清除對話」、「reset」或「clear」
  • 無縫整合 File Search:對話記憶與文件搜尋完美結合

👥 多人協作支援

  • 1 對 1 聊天:每個人有自己的文件庫(隔離的),所有訊息都會回覆
  • 群組聊天
    • 群組成員共享文件庫(大家都能查詢)
    • 需要 @提及(mention)機器人才會回覆文字訊息
    • 上傳檔案/圖片不需要 mention,會自動處理
    • 回覆訊息會顯示在群組中,所有成員都看得到
  • 自動識別對話類型,無需手動設定

📋 檔案管理功能

  • AI 口語化列表:使用 Google ADK Agent 以自然對話方式介紹檔案
  • 智能識別:支援多種關鍵字(列出檔案、顯示檔案、list files 等)
  • Quick Reply 快速操作:上傳成功後提供「生成摘要」、「重點整理」等快捷按鈕
  • 明確檔案指定:Quick Reply 自動帶入檔案名稱,避免混淆
  • 檔案刪除:每個檔案都有刪除按鈕,輕鬆管理文件庫

🚀 部署簡單

  • 支援 Docker 容器化部署
  • 可部署到 Google Cloud Run
  • 或在本地開發測試

🔮 未來規劃

更多精彩功能正在開發中!查看 功能開發計畫 了解即將推出的新功能。

📸 使用範例

📤 上傳文件並查詢

👤 你: [上傳一份會議記錄.pdf]
🤖 Bot: ✅ 檔案已成功上傳!
       檔案名稱:會議記錄.pdf

       現在您可以詢問我關於這個檔案的任何問題。

       [Quick Reply 按鈕]
       📝 生成檔案摘要 | 📌 重點整理 | 📋 列出檔案

👤 你: [點擊「📝 生成檔案摘要」]
     → 自動發送「請幫我生成「會議記錄.pdf」這個檔案的摘要」

🤖 Bot: 好的!這份會議記錄主要記錄了 2025 年第一季的營運會議...

       主要決議包括:
       1. 下季度預算增加 15%
       2. 新產品預計 6 月上市
       3. 人力資源部門將擴編 3 名員工
       ...

🔄 自動轉換 .doc 檔案

👤 你: [上傳舊版報告.doc]
🤖 Bot: 正在處理您的檔案,請稍候...

🤖 Bot: 🔄 偵測到 .doc 格式,正在自動轉換為 .docx...

🤖 Bot: ✅ 檔案已成功上傳!
       檔案名稱:舊版報告.docx

       📝 註:檔案已自動從 .doc 轉換為 .docx 格式

       現在您可以詢問我關於這個檔案的任何問題。

       [Quick Reply 按鈕]
       📝 生成檔案摘要 | 📌 重點整理 | 📋 列出檔案

👤 你: 這份報告的重點是什麼?
🤖 Bot: 好的!這份報告主要討論...

💡 自動轉換功能:系統使用 LibreOffice 自動將 .doc 轉換為 .docx,無需手動操作!

📊 自動轉換 .ppt 簡報檔

👤 你: [上傳季度報告.ppt]
🤖 Bot: 正在處理您的檔案,請稍候...

🤖 Bot: 🔄 偵測到 .ppt 格式,正在自動轉換為 .pptx...

       ⏳ PPT 檔案較大,轉換可能需要 10-30 秒,請稍候...

🤖 Bot: ✅ 檔案已成功上傳!
       檔案名稱:季度報告.pptx

       📊 註:檔案已自動從 .ppt 轉換為 .pptx 格式

       現在您可以詢問我關於這個檔案的任何問題。

       [Quick Reply 按鈕]
       📝 生成檔案摘要 | 📌 重點整理 | 📋 列出檔案

👤 你: 這份簡報的主要內容是什麼?
🤖 Bot: 這份季度報告簡報包含以下重點:
       1. 第一季營收達成率 120%
       2. 新產品市場反應良好
       3. 下季度策略規劃...

💡 PPT 轉換說明

  • 保留文字、圖片、表格內容
  • 動畫效果可能遺失
  • 轉換時間視檔案大小而定(通常 10-30 秒)
  • PPTX 格式可直接上傳,無需轉換

💬 多輪對話記憶 🆕

👤 你: 這份 Q1 報告的營收是多少?
🤖 Bot: 根據 Q1 報告,營收為 NT$ 12,000,000,
       相比去年同期成長了 18%。

👤 你: 那成本呢?
🤖 Bot: (記得你在問 Q1 報告)
       Q1 的總成本為 NT$ 8,500,000,
       營運成本佔比 45%,人力成本佔比 35%。

👤 你: 淨利率是多少?
🤖 Bot: (知道你在討論 Q1 的財務數據)
       Q1 的淨利率為 29.2%
       (營收 1200萬 - 成本 850萬 = 淨利 350萬)

👤 你: 清除對話
🤖 Bot: ✅ 對話記憶已清除。我們可以重新開始對話了!

💡 對話記憶說明

  • AI 會記住整個對話歷史,理解「那」、「它」等代詞
  • 支援追問和延伸討論,無需重複完整問題
  • 輸入「清除對話」、「reset」或「clear」可清除記憶
  • 1小時無活動會自動清除(節省資源)

📋 列出檔案(AI 口語化)

👤 你: 列出檔案
🤖 Bot: 我看到你上傳了 3 個檔案唷!

       首先是「會議記錄.pdf」,這是在 1月8日下午2點半上傳的。
       接著是「技術文件.docx」,是在下午3點20分傳的。
       最後一個是「報告.txt」,這個是在下午4點10分上傳的。

       需要我幫你查詢哪個檔案的內容呢?😊

💡 提示:使用 Google ADK Agent 讓 AI 用自然對話方式介紹檔案,比傳統的清單或卡片更親切!

🗑️ 刪除檔案

👤 你: 列出檔案
🤖 Bot: [顯示檔案列表,每個檔案都有刪除按鈕]

       ┌─────────────────────┐
       │ 會議記錄.pdf        │
       │ 2025-01-08 14:30    │
       │ [🗑️ 刪除檔案]      │
       └─────────────────────┘

👤 你: [點擊 🗑️ 刪除檔案]
🤖 Bot: ✅ 檔案已刪除成功!

       如需查看剩餘檔案,請點擊下方按鈕。

💡 檔案刪除說明

  • 每個檔案都有紅色的刪除按鈕
  • 刪除是永久性的,無法復原
  • 刪除後會立即從文件庫移除

🖼️ 圖片分析

👤 你: [傳送圖片]
🤖 Bot: 正在分析您的圖片,請稍候...

🤖 Bot: 📸 圖片分析結果:

       這張圖片顯示了一個現代化的辦公室空間...

👥 群組聊天使用

[在群組中]

👤 Alice: [上傳 Q1報告.pdf]
🤖 Bot: ✅ 檔案已成功上傳!
       檔案名稱:Q1報告.pdf

       現在您可以詢問我關於這個檔案的任何問題。
       📝 生成檔案摘要 | 📌 重點整理 | 📋 列出檔案

👤 Bob: 這份報告的結論是什麼?
(Bot 不回覆,因為沒有 mention)

👤 Charlie: @bot 這份報告的結論是什麼?
🤖 Bot: 根據 Q1 報告,主要結論如下:
       1. 營收成長 20%
       2. 客戶滿意度提升到 90%
       3. 新產品線表現優異
       ...

👤 Alice: @bot 列出檔案
🤖 Bot: 我看到這個群組上傳了 1 個檔案唷!

       是「Q1報告.pdf」,這是在今天下午3點上傳的。
       需要我幫你查詢這個檔案的內容嗎?😊

💡 群組使用重點

  • ✅ 上傳檔案/圖片:直接上傳,無需 mention
  • ⚠️ 查詢文件:需要 @機器人
  • ✅ 所有成員共享文件庫

🛠️ 技術架構

  • Python 3.9+
  • FastAPI - 高效能異步 Web 框架
  • LINE Messaging API - LINE Bot 介面(含 Quick Reply)
  • Google Gemini API - 文件搜尋與 AI 問答
  • Google ADK (Agent Development Kit) - 口語化檔案管理 Agent
  • Docker - 容器化部署

📦 快速開始

1️⃣ 環境準備

首先,你需要準備這些:

LINE Bot 設定

  1. LINE Developers Console 建立一個 Messaging API channel
  2. 取得你的 Channel SecretChannel Access Token

Google Gemini API

  1. Google AI Studio 建立 API Key
  2. 複製你的 API Key

2️⃣ 下載專案

git clone <你的 repo URL>
cd linebot-file-search-adk

3️⃣ 安裝套件

pip install -r requirements.txt

額外依賴:LibreOffice(用於 .doc 和 .ppt 格式轉換)

為了支援舊版 .doc 和 .ppt 檔案的自動轉換,需要安裝 LibreOffice:

# macOS
brew install --cask libreoffice

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y libreoffice libreoffice-impress

# 驗證安裝
soffice --version

💡 注意:如果未安裝 LibreOffice,.doc 和 .ppt 檔案將無法上傳,但其他格式(.docx, .pptx, .pdf 等)仍可正常使用。

4️⃣ 設定環境變數

建立 .env 檔案或直接設定環境變數:

export ChannelSecret="你的 LINE Channel Secret"
export ChannelAccessToken="你的 LINE Channel Access Token"
export GOOGLE_API_KEY="你的 Google Gemini API Key"

5️⃣ 啟動服務

uvicorn main:app --reload

服務會在 http://localhost:8000 啟動

6️⃣ 設定 Webhook

如果在本地開發,使用 ngrok 來建立公開的網址:

ngrok http 8000

然後到 LINE Developers Console,把 Webhook URL 設定為:

https://你的-ngrok-網址.ngrok.io/

🎮 使用方式

📱 在不同對話中使用

1 對 1 聊天

  • ✅ 直接發送訊息,無需 mention
  • ✅ 每個人有獨立的文件庫
  • ✅ 所有訊息都會得到回覆

群組聊天

  • 上傳檔案/圖片:直接上傳,無需 mention
  • ⚠️ 查詢文件內容:需要 @提及(mention)機器人
  • ✅ 回覆訊息會顯示在群組中
  • ✅ 所有成員共享同一個文件庫

💡 群組使用提示:在群組中查詢文件時,記得要 @機器人,例如:「@bot 這份報告的結論是什麼?」

📤 上傳檔案

文件檔案(PDF、DOCX、TXT 等):

  1. 直接在 LINE 聊天室傳送文件檔案(群組中無需 mention
  2. Bot 會回覆「正在處理您的檔案,請稍候...」
  3. 上傳完成後會顯示「✅ 檔案已成功上傳!」
  4. 現在可以開始提問關於文件的內容
    • 1對1:直接提問
    • 群組:需要 @機器人

圖片檔案(JPG、PNG 等):

  1. 直接在 LINE 聊天室傳送圖片(群組中無需 mention
  2. Bot 會回覆「正在分析您的圖片,請稍候...」
  3. 立即收到圖片分析結果
  4. 圖片不會儲存,每次都是即時分析

💬 開始提問

1 對 1 聊天(直接提問):

  • 「這份文件的重點是什麼?」
  • 「幫我整理成條列式」
  • 「第三章在講什麼?」
  • 「根據這份報告,我們應該注意什麼?」

群組聊天(需要 mention):

  • @bot 這份文件的重點是什麼?」
  • @bot 幫我整理成條列式」
  • @bot 第三章在講什麼?」
  • @bot 根據這份報告,我們應該注意什麼?」

圖片分析(直接傳圖片,無需 mention):

  • 傳送圖片後自動分析
  • 會描述圖片的內容、場景、物品、文字等
  • 無需額外提問

📋 管理已上傳的檔案

列出檔案(AI 口語化):

支援多種關鍵字來查看已上傳的文件:

  • 「列出檔案」或「列出文件」
  • 「顯示檔案」或「查看檔案」
  • 「我的檔案」或「檔案列表」
  • 英文:「list files」、「show files」、「my files」

使用方式

  • 1對1:直接輸入「列出檔案」
  • 群組:輸入「@bot 列出檔案」

Bot 會用 Google ADK Agent 以自然對話方式介紹檔案:

  • 🤖 口語化描述(而非條列式清單)
  • 📅 自動格式化上傳時間
  • 💬 友善親切的語氣
  • 🎯 智能總結(檔案多時會挑重點說明)

Quick Reply 快速操作:

上傳檔案成功後,Bot 會提供快捷按鈕:

  • 📝 生成檔案摘要 - 自動帶入檔案名稱「請幫我生成『檔名』這個檔案的摘要」
  • 📌 重點整理 - 自動帶入檔案名稱「請幫我整理『檔名』的重點」
  • 📋 列出檔案 - 查看所有已上傳的文件

💡 提示

  • Quick Reply 會自動帶入剛上傳的檔案名稱,避免多檔案時的混淆
  • 在群組中點擊 Quick Reply 後,仍需手動加上 @機器人

📁 檔案管理方式

文件檔案:

  • 1對1 聊天
    • 每個人有獨立的文件庫(user_U123456
    • 只能查詢自己上傳的檔案
    • 完全隔離,保護隱私
  • 群組聊天
    • 所有群組成員共享同一個文件庫(group_G123456
    • 任何人上傳的檔案都能被查詢
    • 注意:群組中的文件對所有成員公開
  • 文件會持續保存在 File Search Store 中

圖片檔案:

  • 不會儲存到 File Search Store
  • 每次傳送都是即時分析
  • 分析完成後圖片會自動清除

⚠️ 隱私提醒:如果需要查詢私密文件,請在 1對1 聊天中上傳,避免在群組中分享敏感資料。

🐳 Docker 部署

建立映像檔

docker build -t linebot-file-search .

啟動容器

docker run -p 8000:8000 \
  -e ChannelSecret=你的SECRET \
  -e ChannelAccessToken=你的TOKEN \
  -e GOOGLE_API_KEY=你的API_KEY \
  linebot-file-search

☁️ 部署到 Google Cloud Run

步驟 1:安裝 Google Cloud SDK

參考官方文件安裝

步驟 2:登入並設定專案

gcloud auth login
gcloud config set project 你的專案ID

步驟 3:建立並上傳 Docker 映像

gcloud builds submit --tag gcr.io/你的專案ID/linebot-file-search

步驟 4:部署到 Cloud Run

gcloud run deploy linebot-file-search \
  --image gcr.io/你的專案ID/linebot-file-search \
  --platform managed \
  --region asia-east1 \
  --allow-unauthenticated \
  --set-env-vars ChannelSecret=你的SECRET,ChannelAccessToken=你的TOKEN,GOOGLE_API_KEY=你的API_KEY

步驟 5:取得服務網址

gcloud run services describe linebot-file-search \
  --platform managed \
  --region asia-east1 \
  --format 'value(status.url)'

把這個網址設定到 LINE Bot 的 Webhook URL 就完成了!

🔒 安全性建議

不要把敏感資訊寫進程式碼! 建議使用 Google Secret Manager:

# 建立 secrets
echo -n "你的SECRET" | gcloud secrets create line-channel-secret --data-file=-
echo -n "你的TOKEN" | gcloud secrets create line-channel-token --data-file=-
echo -n "你的API_KEY" | gcloud secrets create google-api-key --data-file=-

部署時使用 secrets:

gcloud run deploy linebot-file-search \
  --image gcr.io/你的專案ID/linebot-file-search \
  --platform managed \
  --region asia-east1 \
  --allow-unauthenticated \
  --update-secrets=ChannelSecret=line-channel-secret:latest,ChannelAccessToken=line-channel-token:latest,GOOGLE_API_KEY=google-api-key:latest

📊 監控與除錯

部署後可以透過 Google Cloud Console 監控:

查看 Logs

gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=linebot-file-search" --limit 50

檢查服務狀態

直接到 Cloud Run Console 查看服務狀態、錯誤率、回應時間等指標

💡 使用小技巧

  1. 上傳多份文件:可以連續上傳多份文件,Bot 會記住所有文件並在查詢時搜尋
  2. 圖片即時分析:圖片不需要「上傳」,直接傳送就會立即分析並回覆
  3. 文件持久化:上傳的文件會持續保存在 File Search Store,可隨時查詢
  4. Quick Reply 快捷操作
    • 上傳檔案後立即使用 Quick Reply 按鈕(生成摘要、重點整理)
    • Quick Reply 會自動帶入檔案名稱,避免多檔案時混淆
    • 點擊按鈕比手動輸入更快速方便
  5. AI 口語化檔案列表
    • 輸入「列出檔案」會得到自然對話式的回應
    • AI 會用親切的語氣介紹每個檔案和上傳時間
    • 比傳統清單更友善、更易讀
  6. 支援的檔案類型
    • 文件:PDF、Word (DOC/DOCX)、PowerPoint (PPT/PPTX)、TXT、Markdown、HTML、CSV、RTF 等
    • 圖片:JPG、JPEG、PNG、GIF、WebP
    • 自動轉換
      • .doc 檔案自動轉換為 .docx(2-5秒)
      • .ppt 檔案自動轉換為 .pptx(10-30秒)
  7. Loading 動畫優化體驗 🆕:
    • 上傳檔案時自動顯示 LINE 官方 loading 動畫
    • 根據檔案類型智能調整顯示時間(圖片 15s / 文件 30s / PPT 60s)
    • 讓用戶清楚知道 Bot 正在處理中

🤔 常見問題

基本使用

Q: 為什麼我問問題時 Bot 說「您還沒有上傳任何檔案」?
A: 這個訊息是針對文件查詢。請先上傳文件檔案(PDF、DOCX 等),Bot 才能根據文件內容回答。如果您想分析圖片,請直接傳送圖片,無需上傳。

Q: 圖片和文件的處理有什麼不同?
A:

  • 文件:會上傳到 File Search Store,可以後續查詢,適合需要反覆查詢的資料
  • 圖片:即時分析後立即清除,適合快速了解圖片內容

Q: 檔案會保存多久?
A: 文件檔案會持續保存在 Google Gemini 的 File Search Store,圖片分析後會立即清除。

Q: 支援哪些語言?
A: Google Gemini 支援多種語言,包括繁體中文、簡體中文、英文、日文等。

Q: 可以處理多大的檔案?
A: 取決於 Google Gemini File API 的限制,一般文件都沒問題。圖片建議不超過 10MB。

Q: 支援舊版 .doc 格式嗎?
A: 支援!系統會自動使用 LibreOffice 將 .doc 轉換為 .docx 格式再上傳。轉換過程完全自動化,無需手動操作。如果轉換失敗(例如未安裝 LibreOffice),系統會提示您手動轉換。

Q: .doc 轉換需要多久時間?
A: 通常只需要幾秒鐘。系統會顯示「🔄 偵測到 .doc 格式,正在自動轉換為 .docx...」的訊息。檔案過大時可能需要更長時間(最多 60 秒超時限制)。

Q: 支援舊版 .ppt 格式嗎?
A: 支援!系統會自動使用 LibreOffice 將 .ppt 轉換為 .pptx 格式再上傳。PPTX 格式可直接上傳無需轉換。轉換過程完全自動化,會保留文字、圖片、表格等內容,但動畫效果可能遺失。

Q: .ppt 轉換需要多久時間?
A: PPT 檔案通常較大,轉換時間約 10-30 秒。系統會顯示「🔄 偵測到 .ppt 格式,正在自動轉換為 .pptx...」並提示預計等待時間。超大檔案(>50MB)或內容複雜時可能需要更長時間(最多 120 秒超時限制)。

對話記憶功能 🆕

Q: 對話記憶是什麼?
A: Bot 會記住你們之前的對話內容,讓你可以追問和延伸討論,不需要每次都重複完整的問題。例如問完「Q1 報告的營收是多少?」後,可以直接問「那成本呢?」,Bot 會知道你在問 Q1 報告的成本。

Q: 對話記憶會保存多久?
A: 每個用戶的對話記憶會保存 1 小時。如果 1 小時內沒有任何活動,系統會自動清除記憶以節省資源。你也可以隨時輸入「清除對話」、「reset」或「clear」來手動清除。

Q: 群組聊天的對話記憶是共享的嗎?
A: 是的。同一個群組內的所有成員共享對話記憶,任何人的提問都會被記錄。這讓團隊討論更順暢。但每個用戶在 1 對 1 聊天時有自己獨立的記憶。

Q: 如何清除對話記憶?
A: 輸入以下任一指令即可:

  • 「清除對話」
  • 「清除对话」(簡體)
  • 「reset」
  • 「clear」
  • 「重置對話」
  • 「清空對話」

Q: 對話記憶會影響費用嗎?
A: 對話記憶會讓每次 API 調用包含歷史對話,可能增加 token 使用量。但我們已設置 1 小時自動清除機制來控制成本。如果你想進一步節省費用,可以在討論完一個主題後手動清除對話。

Q: PPT 轉換會保留動畫和特效嗎?
A: 文字、圖片、表格等內容會完整保留,但動畫效果、轉場特效、嵌入影片可能會遺失。如果需要完整格式,建議使用 Microsoft PowerPoint 手動將 .ppt 另存為 .pptx 格式後再上傳。

群組使用

Q: 為什麼在群組中 Bot 不回覆我的問題?
A: 在群組聊天中,Bot 只會在被 @提及(mention)時回覆文字訊息。請確保你的訊息中有 @機器人,例如:「@bot 這份報告的結論是什麼?」

Q: 在群組中上傳檔案需要 mention 嗎?
A: 不需要!上傳檔案或圖片時不需要 mention,Bot 會自動處理。只有查詢文件內容時才需要 @機器人。

Q: 群組中上傳檔案後,為什麼我收到私訊?
A: 這個問題已經修復!現在群組中上傳檔案後,成功訊息會顯示在群組中,所有成員都看得到。

Q: 群組聊天中,其他人上傳的檔案我也能查詢嗎?
A: 可以!群組中所有成員共享同一個文件庫。但要記得 @機器人才能查詢,例如:「@bot 列出檔案」

Q: 在群組中點擊 Quick Reply 按鈕後還需要 mention 嗎?
A: 需要!Quick Reply 會自動帶入問題文字,但在群組中仍需要手動加上 @機器人。例如點擊「生成檔案摘要」後,需要改成「@bot 請幫我生成...」

Q: 群組中的文件會被其他成員看到嗎?
A: !群組中所有成員共享同一個文件庫,任何人上傳的文件都可以被查詢。如果需要查詢私密文件,請在 1對1 聊天中上傳。

功能相關

Q: Quick Reply 按鈕是什麼?
A: Quick Reply 是上傳檔案成功後出現的快捷按鈕(📝 生成檔案摘要、📌 重點整理、📋 列出檔案)。點擊按鈕會自動發送完整問題,比手動輸入更方便,且會自動帶入檔案名稱避免混淆。

Q: 為什麼列出檔案時不是顯示清單或卡片?
A: 我們使用 Google ADK Agent 讓 AI 用自然對話方式介紹檔案,而非傳統的條列式清單或卡片。這樣的呈現更友善、更像真人對話,使用者體驗更好。AI 會根據檔案數量智能調整說明方式。

Q: 如何自訂 Quick Reply 按鈕的文字?
A: 在 main.pyhandle_document_message() 函數中可以修改 Quick Reply 的設定。你可以調整按鈕的 label(顯示文字)和 text(發送內容)。

🔧 進階設定

修改 AI 模型

main.py 第 51 行可以修改使用的模型:

MODEL_NAME = "gemini-2.5-flash"  # 可改成其他 Gemini 模型

調整文件查詢的回應溫度

main.py 約第 220 行可以調整 AI 的創意程度:

temperature=0.7,  # 0.0 = 保守精確, 1.0 = 創意發散

自訂圖片分析的提示詞

main.py 約第 270 行可以修改圖片分析的提示:

contents=["請詳細描述這張圖片的內容,包括主要物品、場景、文字等資訊。", image],

可以改成:

  • "請用英文描述這張圖片" - 英文回應
  • "這張圖片中有哪些文字?" - 專注於 OCR
  • "這張圖片的主題是什麼?" - 摘要式回應

自訂 Quick Reply 按鈕

main.py 的檔案上傳成功處理部分(約第 447-452 行):

quick_reply = QuickReply(items=[
    QuickReplyButton(action=MessageAction(
        label="📝 生成檔案摘要",
        text=f"請幫我生成「{file_name}」這個檔案的摘要"
    )),
    QuickReplyButton(action=MessageAction(
        label="📌 重點整理",
        text=f"請幫我整理「{file_name}」的重點"
    )),
    QuickReplyButton(action=MessageAction(
        label="📋 列出檔案",
        text="列出檔案"
    )),
])

你可以:

  • 修改 label 來改變按鈕顯示文字
  • 修改 text 來改變點擊後發送的內容
  • 新增或移除按鈕(LINE 限制最多 13 個)
  • 使用 {file_name} 變數來自動帶入檔案名稱

自訂 FileManagerAgent 的語氣和風格

file_manager_agent/agent.py 中修改 agent instruction(約第 24-33 行):

instruction="""你是一個友善的檔案管理助手。

當使用者要求列出檔案時:
1. 使用 list_files tool 來取得檔案清單
2. 用口語化、友善的方式呈現結果
3. 不要使用條列式或表格,用自然的對話方式說明
4. 例如:「我看到你上傳了 3 個檔案唷!首先是『會議記錄.pdf』...」
5. 語氣要輕鬆、親切

回應時請用繁體中文。"""

你可以調整:

  • 語氣風格:從「親切」改為「專業」、「幽默」等
  • 語言:改為英文或其他語言
  • 呈現方式:要求 AI 用特定格式(如分類、排序等)
  • 細節程度:決定要說明到多詳細

📝 授權條款

MIT License - 歡迎自由使用、修改、分享!

🙌 貢獻

歡迎提交 Issue 或 Pull Request!

📚 相關連結

官方文件

專案文件


⭐ 如果這個專案對你有幫助,請給個 Star 支持一下!