一個基於 LangGraph 的智能論文助手,能夠自動從 arXiv 獲取學術論文、生成中文摘要,並透過 LINE Bot 發送給使用者。
An intelligent paper assistant built with LangGraph that automatically fetches academic papers from arXiv, generates Chinese summaries, and delivers them via LINE Bot.
- 🤖 智能分類識別: 使用 GPT-4o-mini 自動分析使用者需求並決定 arXiv 論文分類
- 📚 批量論文獲取: 從 arXiv 批量抓取指定分類的最新論文
- 📝 中文摘要生成: 自動生成論文的中文摘要,方便中文使用者理解
- 📱 LINE Bot 整合: 透過 LINE Bot 以精美的 Flex Message 格式發送論文資訊
- 🔄 工作流程編排: 使用 LangGraph 管理複雜的多步驟工作流程
- 🧪 完整測試: 包含完整的測試套件確保程式品質
graph TD
A[使用者輸入] --> B[LLM 決定分類]
B --> C[從 arXiv 獲取論文]
C --> D[GPT 生成摘要]
D --> E[LINE Bot 發送]
E --> F[顯示結果]
系統使用 LangGraph 編排以下工作流程:
- decide_arxiv_category: 分析使用者輸入,決定 arXiv 分類和數量
- get_papers_by_state: 從 arXiv 抓取論文資料
- summary_paper_with_gpt: 生成中文摘要
- send_paper_info_with_line_sdk: 透過 LINE Bot 發送論文資訊
- show_paper_info: 在控制台顯示結果
- Python 3.13+
- UV package manager
- OpenAI API Key
- LINE Bot Channel Access Token
- 克隆專案
git clone <repository-url>
cd paper-langgraph-assistant- 安裝依賴
uv sync- 設定環境變數
cp .env.example .env
# 編輯 .env 檔案,填入必要的 API Keys在 .env 檔案中設定以下變數:
# OpenAI API Key (必需)
OPENAI_API_KEY=your_openai_api_key
# LINE Bot 設定 (必需)
CHANNEL_ACCESS_TOKEN=your_line_bot_channel_access_token
DESTINATION_USER_ID=your_line_user_id# 執行主程式
uv run main.py
# 測試個別功能
uv run node.py- 執行程式後,系統會提示輸入論文需求
- 用中文描述您想要的論文類型和數量,例如:
- "我想要 5 篇關於機器學習的論文"
- "幫我找 3 篇電腦視覺相關的研究"
- "取得 10 篇人工智慧領域的最新論文"
- 系統會自動:
- 判斷對應的 arXiv 分類(如 cs.AI, cs.LG, cs.CV)
- 獲取最新論文
- 生成中文摘要
- 透過 LINE Bot 發送給您
# 執行所有測試
pytest
# 執行特定測試檔案
pytest scrape_papaer_test.py
# 執行測試並顯示覆蓋率
pytest --cov=.paper-langgraph-assistant/
├── main.py # 主程式,定義 LangGraph 工作流程
├── node.py # 工作流程節點實作
├── state.py # 狀態管理
├── scrape_paper.py # arXiv 論文抓取功能
├── scrape_papaer_test.py # 測試檔案
├── pyproject.toml # 專案依賴設定
├── uv.lock # 鎖定的依賴版本
├── .env # 環境變數設定
└── README.md # 專案說明
- LangGraph (0.6.10+): 工作流程編排
- LangChain (0.3.27+): LLM 整合和提示管理
- LINE Bot SDK (3.19.1+): LINE 訊息發送
- BeautifulSoup4 (4.14.2+): 網頁爬蟲
- OpenAI: GPT 模型 API
- Pytest (8.4.2+): 測試框架
cs.AI- Artificial Intelligencecs.LG- Machine Learningcs.CV- Computer Vision and Pattern Recognitioncs.CL- Computation and Languagecs.NE- Neural and Evolutionary Computingstat.ML- Machine Learning (Statistics)- 更多分類...
- Fork 這個專案
- 建立您的功能分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 開啟一個 Pull Request
如果您遇到任何問題或有功能建議,請:
- 查看現有的 Issues
- 建立新的 Issue 描述您的問題
- 或直接提交 Pull Request