Spaces:
Sleeping
Sleeping
|
Download README.md from solnone/Unit_3_Agentic_RAG: direct link, hf CLI and curl.
- Browser
- Download file 7.51 kB
-
https://huggingface.co/spaces/solnone/Unit_3_Agentic_RAG/resolve/main/README.md
- Command line
-
hf download hf://spaces/solnone/Unit_3_Agentic_RAG/README.md
-
curl -L -o README.md https://huggingface.co/spaces/solnone/Unit_3_Agentic_RAG/resolve/main/README.md
7.51 kB
| title: AgenticRAG | |
| emoji: 🌖 | |
| colorFrom: pink | |
| colorTo: pink | |
| sdk: gradio | |
| sdk_version: 5.29.1 | |
| app_file: app.py | |
| pinned: false | |
| license: apache-2.0 | |
| # 🌖 AgenticRAG — Agentic RAG 智慧助理 | |
| > **Hugging Face Agents Course · Unit 3 — Agentic RAG** | |
| > | |
| > 結合 **Retrieval-Augmented Generation (RAG)** 與 **Agent(代理人)** 架構的智慧問答系統, | |
| > 部署於 [Hugging Face Spaces](https://huggingface.co/spaces),透過 Gradio 提供互動式 Web UI。 | |
| --- | |
| ## 📖 目錄 | |
| - [專案簡介](#-專案簡介) | |
| - [系統架構](#-系統架構) | |
| - [功能與工具](#-功能與工具) | |
| - [檔案結構](#-檔案結構) | |
| - [安裝與執行](#-安裝與執行) | |
| - [環境變數](#-環境變數) | |
| - [使用範例](#-使用範例) | |
| - [技術棧](#-技術棧) | |
| - [授權條款](#-授權條款) | |
| --- | |
| ## 🧠 專案簡介 | |
| 本專案是 [Hugging Face Agents Course](https://huggingface.co/learn/agents-course) **Unit 3** 的實作作業。 | |
| 透過 `smolagents` 框架建立一個 **CodeAgent(程式碼代理人)**,名為 **Alfred**, | |
| 它能自主判斷要使用哪些工具,並以程式碼的方式組合執行,回答使用者的各種問題。 | |
| ### 核心概念 | |
| | 概念 | 說明 | | |
| |---|---| | |
| | **Agentic RAG** | Agent 在回答問題時,先透過 Retriever 從知識庫檢索相關資料,再結合 LLM 產生答案 | | |
| | **CodeAgent** | `smolagents` 的代理人類型,會產生並執行 Python 程式碼來完成任務 | | |
| | **Planning** | Agent 每 3 步驟進行一次規劃 (`planning_interval=3`),確保多步驟推理的準確性 | | |
| --- | |
| ## 🏗 系統架構 | |
| ``` | |
| 使用者 (Gradio Web UI) | |
| │ | |
| ▼ | |
| ┌──────────────┐ | |
| │ CodeAgent │ ← Alfred(由 smolagents 驅動) | |
| │ (Qwen2.5) │ | |
| └──────┬───────┘ | |
| │ 根據問題自動選擇工具 | |
| ├──────────────────────────────┐ | |
| │ │ | |
| ┌────▼─────┐ ┌─────▼──────┐ | |
| │ 內建工具 │ │ 自訂工具 │ | |
| └──────────┘ └─────┬──────┘ | |
| │ | |
| ┌────────────┬────────────┼────────────┐ | |
| │ │ │ │ | |
| ┌─────▼─────┐ ┌───▼───┐ ┌─────▼─────┐ ┌───▼────────┐ | |
| │ GuestInfo │ │Weather│ │ HubStats │ │DuckDuckGo │ | |
| │ Retriever │ │ Info │ │ Tool │ │ Search │ | |
| └─────┬─────┘ └───────┘ └─────┬─────┘ └────────────┘ | |
| │ │ | |
| ▼ ▼ | |
| BM25 Retriever Hugging Face Hub | |
| (agents-course/ API | |
| unit3-invitees) | |
| ``` | |
| --- | |
| ## 🔧 功能與工具 | |
| ### 1. 🎭 賓客資訊檢索 (`guest_info_retriever`) | |
| - **檔案**:[`retriever.py`](retriever.py) | |
| - **類別**:`GuestInfoRetrieverTool` | |
| - **說明**:從 Hugging Face Datasets(`agents-course/unit3-invitees`)載入賓客資料, | |
| 使用 **BM25 演算法** 進行關鍵字檢索,回傳最相關的前 3 筆賓客資訊。 | |
| - **輸入**:賓客姓名或關係(`query: str`) | |
| - **輸出**:包含姓名、關係、描述、Email 的文字資訊 | |
| ### 2. 🌤 天氣查詢 (`weather_info`) | |
| - **檔案**:[`tools.py`](tools.py) | |
| - **類別**:`WeatherInfoTool` | |
| - **說明**:根據指定地點回傳模擬天氣資料(Rainy / Clear / Windy + 溫度)。 | |
| 目前為 **Demo 用途**,使用隨機產生的假資料。 | |
| - **輸入**:地點名稱(`location: str`) | |
| - **輸出**:天氣狀況與溫度字串 | |
| ### 3. 📊 Hub 模型統計 (`hub_stats`) | |
| - **檔案**:[`tools.py`](tools.py) | |
| - **類別**:`HubStatsTool` | |
| - **說明**:查詢指定作者/組織在 Hugging Face Hub 上下載量最高的模型。 | |
| - **輸入**:作者或組織名稱(`author: str`) | |
| - **輸出**:模型名稱與下載次數 | |
| ### 4. 🔍 DuckDuckGo 網頁搜尋 | |
| - **來源**:`smolagents.DuckDuckGoSearchTool`(內建工具) | |
| - **說明**:透過 DuckDuckGo 搜尋引擎進行網頁搜尋,取得即時資訊。 | |
| --- | |
| ## 📂 檔案結構 | |
| ``` | |
| Unit_3_Agentic_RAG/ | |
| ├── app.py # 主程式入口:初始化 Agent 與所有工具,啟動 Gradio UI | |
| ├── tools.py # 自訂工具:WeatherInfoTool、HubStatsTool | |
| ├── retriever.py # RAG 檢索器:GuestInfoRetrieverTool + 資料集載入 | |
| ├── requirements.txt # Python 套件依賴清單 | |
| ├── README.md # 本說明文件 | |
| ├── .gitattributes # Git LFS 設定(Hugging Face Spaces 標準配置) | |
| └── .gradio/ # Gradio 執行時快取(含 HTTPS 憑證等) | |
| ``` | |
| --- | |
| ## 🚀 安裝與執行 | |
| ### 前置需求 | |
| - Python 3.10+ | |
| - Hugging Face 帳號及 API Token(用於 `InferenceClientModel`) | |
| ### 本地執行 | |
| ```bash | |
| # 1. Clone 專案 | |
| git clone https://huggingface.co/spaces/<your-username>/AgenticRAG | |
| cd AgenticRAG | |
| # 2. 建立虛擬環境 | |
| python -m venv .venv | |
| source .venv/bin/activate # Windows: .venv\Scripts\activate | |
| # 3. 安裝依賴 | |
| pip install -r requirements.txt | |
| # 4. 設定 Hugging Face Token | |
| export HF_TOKEN=your_token_here # Windows: set HF_TOKEN=your_token_here | |
| # 5. 啟動應用程式 | |
| python app.py | |
| ``` | |
| 啟動後瀏覽器將自動開啟 Gradio 介面(預設 `http://localhost:7860`)。 | |
| ### 部署到 Hugging Face Spaces | |
| 本專案已配置 HF Spaces 所需的 YAML frontmatter(位於 `README.md` 頂部), | |
| 只需 push 至對應的 Space 倉庫即可自動部署。 | |
| --- | |
| ## 🔑 環境變數 | |
| | 變數名稱 | 說明 | 必填 | | |
| |---|---|---| | |
| | `HF_TOKEN` | Hugging Face API Token,用於呼叫推論 API 及存取資料集 | ✅ | | |
| --- | |
| ## 💬 使用範例 | |
| 在 Gradio 聊天介面中,你可以嘗試以下問題: | |
| | 問題範例 | 使用的工具 | | |
| |---|---| | |
| | `Who is Lady Whiskers?` | 🎭 Guest Info Retriever | | |
| | `What's the weather like in Paris?` | 🌤 Weather Info | | |
| | `What is the most downloaded model by meta-llama?` | 📊 Hub Stats | | |
| | `What is the latest news about AI?` | 🔍 DuckDuckGo Search | | |
| | `Find info about Dr. Adventures and check the weather in his city` | 🎭 + 🌤 (多工具組合) | | |
| --- | |
| ## 🛠 技術棧 | |
| | 技術 | 用途 | | |
| |---|---| | |
| | [smolagents](https://github.com/huggingface/smolagents) | Agent 框架(CodeAgent + Tool 抽象層) | | |
| | [Qwen2.5-Coder-32B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct) | 底層大語言模型(透過 HF Inference API) | | |
| | [Gradio](https://gradio.app/) | Web UI 框架 | | |
| | [LangChain Community](https://python.langchain.com/) | BM25Retriever 檢索器 | | |
| | [Hugging Face Datasets](https://huggingface.co/docs/datasets) | 賓客資料集載入 | | |
| | [Hugging Face Hub](https://huggingface.co/docs/huggingface_hub) | 模型統計查詢 API | | |
| | [DuckDuckGo Search](https://pypi.org/project/duckduckgo-search/) | 網頁搜尋引擎 | | |
| --- | |
| ## 📄 授權條款 | |
| 本專案採用 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 授權。 |