| # Hugging Face Spaces 免费部署指南 | |
| 本指南演示如何将 RLDT 的 Gradio 前端零成本发布到 **Hugging Face Spaces**,并使用 Hugging Face Inference 免费额度作为 LLM 后端。 | |
| ## 1. 目录与关键文件 | |
| - `app.py`:Spaces 的入口脚本,直接调用现有的 `create_gradio_interface()` 并在 `PORT`(Spaces 自动注入)上启动,无需命令行参数。 | |
| - `requirements.txt`:Python 依赖列表,Spaces 会自动安装。 | |
| - `RL0910/enhanced_chat_ui.py`:主界面与业务逻辑,保持不变。 | |
| > 如果需要自带示例模型,可将模型权重放在仓库的 `output/models/` 下或在启动脚本中下载。 | |
| ## 2. 准备 Hugging Face 账号与 Token | |
| 1. 访问 https://huggingface.co/settings/tokens 创建 **Write** 权限的 Access Token。 | |
| 2. 复制 Token,稍后在 Space 中配置为 `HUGGINGFACEHUB_API_TOKEN`。Hugging Face Inference 免费额度足以支撑轻量对话演示。 | |
| ## 3. 创建 Space | |
| 1. 在 Hugging Face 主页点击 **New Space**。 | |
| 2. 选择模板 **Gradio**(`app.py` 会被自动识别)。 | |
| 3. 选择 **Public**(免费额度)或 **Private**(需 Pro)。 | |
| 4. 创建完成后,获取 Space 的 Git 远程地址(形如 `https://huggingface.co/spaces/<org>/<space-name>`)。 | |
| ## 4. 推送代码到 Space | |
| 在本地或 CI 中执行: | |
| ```bash | |
| # 1) 克隆当前仓库并进入目录 | |
| cd /path/to/RLDT | |
| # 2) 添加 Space 作为远程 | |
| git remote add space https://huggingface.co/spaces/<org>/<space-name> | |
| # 3) 推送 main 分支(或当前分支) | |
| git push space main | |
| ``` | |
| 推送完成后,Spaces 会自动构建:安装依赖 → 运行 `app.py` → 暴露页面。 | |
| ## 5. 配置环境变量(LLM 走 Hugging Face Inference) | |
| 在 Space 页面打开 **Settings → Variables and secrets**,添加: | |
| - `HUGGINGFACEHUB_API_TOKEN`:步骤 2 获取的 Token。 | |
| - 可选: | |
| - `HUGGINGFACE_MODEL`(默认 `meta-llama/Meta-Llama-3-8B-Instruct`) | |
| - `HUGGINGFACE_TASK`(默认 `text-generation`) | |
| - `HUGGINGFACE_TEMPERATURE`、`HUGGINGFACE_MAX_TOKENS` | |
| - 如需其它云端模型,也可设置 `GOOGLE_API_KEY`、`COHERE_API_KEY`、`ANTHROPIC_API_KEY` 等,优先级在 `RL0910/agent_graph.py` 中定义。 | |
| > 无需显式设置端口,Spaces 会自动注入 `PORT` 环境变量,`app.py` 会读取并绑定到 `0.0.0.0`。 | |
| ## 6. 数据与模型的放置方式 | |
| - **轻量演示**:直接使用内置虚拟数据生成流程,无需上传文件。 | |
| - **自带模型/数据**: | |
| - 将模型权重放入仓库(小体积)并随代码推送;或 | |
| - 在 `app.py` 中添加启动时的下载逻辑(如从 `hf://` 或公开 URL);或 | |
| - 在 Space 的 **Persistent storage**(启用后)中手动上传,再在代码中读取 `/data` 路径。 | |
| - 若使用本地训练功能,请在 **Variables and secrets** 中设置: | |
| - `DYNAMICS_MODEL_PATH`、`OUTCOME_MODEL_PATH`、`Q_NETWORK_PATH` | |
| - `DATA_DIR`(数据或导出报告目录) | |
| ## 7. 验证部署 | |
| - 等待构建完成后,点击 Space 页面右上角的 **App**,应显示 RLDT 的多标签 Gradio 界面。 | |
| - 打开 “Chat with DRIVE Agent” 输入指令,确认能返回由 Hugging Face Inference 提供的回复。 | |
| - 查看 **Logs**(左侧栏)可排查依赖安装或模型加载问题。 | |
| ## 8. 常见问题 | |
| - **构建超时/内存不足**:优先使用虚拟数据与远程 LLM,避免在免费套餐加载过大的本地模型。 | |
| - **LLM 无响应**:确认 `HUGGINGFACEHUB_API_TOKEN` 和 `HUGGINGFACE_MODEL` 配置正确,或尝试更小的模型(如 `mistralai/Mistral-7B-Instruct-v0.2`)。 | |
| - **端口相关错误**:无需手动指定端口,确保未在代码中硬编码端口;`app.py` 已读取 `PORT`。 | |
| 部署完成后即可分享 Space 链接给他人免费体验,无需自建服务器。 | |