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
A newer version of the Gradio SDK is available: 6.30.0
metadata
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,透過 Gradio 提供互動式 Web UI。
📖 目錄
🧠 專案簡介
本專案是 Hugging Face 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 - 類別:
GuestInfoRetrieverTool - 說明:從 Hugging Face Datasets(
agents-course/unit3-invitees)載入賓客資料,
使用 BM25 演算法 進行關鍵字檢索,回傳最相關的前 3 筆賓客資訊。 - 輸入:賓客姓名或關係(
query: str) - 輸出:包含姓名、關係、描述、Email 的文字資訊
2. 🌤 天氣查詢 (weather_info)
- 檔案:
tools.py - 類別:
WeatherInfoTool - 說明:根據指定地點回傳模擬天氣資料(Rainy / Clear / Windy + 溫度)。
目前為 Demo 用途,使用隨機產生的假資料。 - 輸入:地點名稱(
location: str) - 輸出:天氣狀況與溫度字串
3. 📊 Hub 模型統計 (hub_stats)
- 檔案:
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)
本地執行
# 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 | Agent 框架(CodeAgent + Tool 抽象層) |
| Qwen2.5-Coder-32B-Instruct | 底層大語言模型(透過 HF Inference API) |
| Gradio | Web UI 框架 |
| LangChain Community | BM25Retriever 檢索器 |
| Hugging Face Datasets | 賓客資料集載入 |
| Hugging Face Hub | 模型統計查詢 API |
| DuckDuckGo Search | 網頁搜尋引擎 |
📄 授權條款
本專案採用 Apache License 2.0 授權。