OpenCode Deployer commited on
Commit
ec2e14a
·
1 Parent(s): 853b993

feat: 初始化 HuggingFace Space Docker + FastAPI 项目

Browse files

- 基于 Node.js 20 LTS + Python 3.12 的多阶段 Docker 构建
- 实现最简 FastAPI 服务(/, /health, /info 端点)
- 配置 HuggingFace Space 元数据(端口 7860)
- 添加项目管理和部署脚本
- 完整的生产配置(Gunicorn + UvicornWorker)

Files changed (11) hide show
  1. .env.example +7 -0
  2. .gitignore +60 -0
  3. .sisyphus/plans/hfbase-fastapi-implementation.md +355 -0
  4. Dockerfile +54 -0
  5. Makefile +50 -0
  6. README copy.md +10 -0
  7. README.md +42 -5
  8. app.py +40 -0
  9. push.sh +23 -0
  10. requirements.txt +3 -0
  11. setup_hf.sh +29 -0
.env.example ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # HuggingFace 配置
2
+ HF_ENDPOINT=https://hf-mirror.com
3
+ HF_TOKEN=your_token_here
4
+
5
+ # 应用配置
6
+ APP_HOST=0.0.0.0
7
+ APP_PORT=7860
.gitignore ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # macOS
7
+ .DS_Store
8
+ .AppleDouble
9
+ .LSOverride
10
+ Icon?
11
+
12
+ # Windows
13
+ Thumbs.db
14
+ ehthumbs.db
15
+ Desktop.ini
16
+
17
+ # Linux
18
+ *~
19
+
20
+ # Node.js
21
+ node_modules/
22
+ npm-debug.log*
23
+ yarn-debug.log*
24
+ yarn-error.log*
25
+
26
+ # IDE
27
+ .vscode/
28
+ .idea/
29
+ *.swp
30
+ *.swo
31
+ *~
32
+
33
+ # Logs
34
+ logs/
35
+ *.log
36
+
37
+ # Runtime data
38
+ pids/
39
+ *.pid
40
+ *.seed
41
+ *.pid.lock
42
+
43
+ # Coverage directory used by tools like istanbul
44
+ coverage/
45
+
46
+ # Docker
47
+ .dockerignore
48
+
49
+ # Environment variables
50
+ .env
51
+ .env.local
52
+ .env.development.local
53
+ .env.test.local
54
+ .env.production.local
55
+
56
+ # Temporary files
57
+ tmp/
58
+ temp/
59
+ *.tmp
60
+ *.temp
.sisyphus/plans/hfbase-fastapi-implementation.md ADDED
@@ -0,0 +1,355 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # HuggingFace Space Docker + FastAPI 项目实施计划
2
+
3
+ ## 项目概述
4
+
5
+ ### 目标
6
+ 构建基于 Node.js 20 LTS + Python 3.12 的多阶段 Docker 镜像,部署 FastAPI 最简 API 服务到 HuggingFace Spaces,使用 HuggingFace CLI 进行项目管理。
7
+
8
+ ### 技术栈
9
+ - **Node.js**: 20 LTS(用于构建阶段)
10
+ - **Python**: 3.12(运行时)
11
+ - **Web框架**: FastAPI + Uvicorn
12
+ - **生产服务器**: Gunicorn + UvicornWorker
13
+ - **部署平台**: HuggingFace Spaces (Docker SDK)
14
+ - **端口**: 7860(HuggingFace 标准)
15
+
16
+ ---
17
+
18
+ ## 工作目标
19
+
20
+ ### 核心目标
21
+ 创建一个可在 HuggingFace Spaces 上运行的 FastAPI 服务,具备基础的 API 功能和完整的部署流程。
22
+
23
+ ### 具体交付物
24
+ - `Dockerfile` - 多阶段构建配置
25
+ - `app.py` - FastAPI 应用入口
26
+ - `requirements.txt` - Python 依赖管理
27
+ - `README.md` - 更新 HuggingFace Space 元数据
28
+ - `package.json` - Node.js 构建配置(如需要)
29
+ - `.dockerignore` - Docker 构建优化
30
+
31
+ ### 完成标准
32
+ - [ ] Docker 镜像成功构建且大小合理
33
+ - [ ] FastAPI 服务在本地可正常运行
34
+ - [ ] HuggingFace CLI 可成功部署到 Spaces
35
+ - [ ] API 响应正常,文档页面可访问
36
+
37
+ ### 必须包含
38
+ - 非 root 用户安全配置
39
+ - 多阶段构建优化
40
+ - 健康检查端点 `/health`
41
+ - 基础错误处理
42
+ - HuggingFace Space 配置
43
+
44
+ ### 明确排除(Guardrails)
45
+ - 数据库集成(第一步不包含)
46
+ - 复杂的身份验证系统
47
+ - 文件上传功能
48
+ - HuggingFace 模型集成
49
+ - 前端界面构建
50
+
51
+ ---
52
+
53
+ ## 验证策略
54
+
55
+ ### 测试基础设施
56
+ - **基础设施存在**: 否
57
+ - **用户测试选择**: 手动验证
58
+ - **框架**: 基础 curl/httpie 验证
59
+
60
+ ### 手动 QA 程序
61
+ 每个任务包含详细的验证步骤:
62
+ - Docker 构建验证
63
+ - 本地服务启动验证
64
+ - API 端点响应验证
65
+ - HuggingFace 部署验证
66
+
67
+ ---
68
+
69
+ ## 任务流程
70
+
71
+ ```
72
+ 准备阶段 → 构建配置 → 应用开发 → 本地测试 → 部署配置 → 部署验证
73
+ ```
74
+
75
+ ---
76
+
77
+ ## 并行化能力
78
+
79
+ | 组 | 任务 | 原因 |
80
+ |---|---|---|
81
+ | A | 2, 3 | 独立配置文件 |
82
+
83
+ ---
84
+
85
+ ## TODOs
86
+
87
+ - [ ] 1. 创建项目基础结构和配置文件
88
+
89
+ **做什么**:
90
+ - 创建 `requirements.txt` 包含 FastAPI 和 Uvicorn
91
+ - 创建 `.dockerignore` 优化构建
92
+ - 准备基础项目目录结构
93
+
94
+ **禁止做**:
95
+ - 不要添加不必要的 Python 库
96
+ - 不要包含前端构建文件(除非明确需要)
97
+
98
+ **可并行**: 否
99
+
100
+ **参考文件**:
101
+ **模式引用**:
102
+ - 无现有模式(新项目)
103
+
104
+ **API/类型引用**:
105
+ - FastAPI 标准应用结构: `from fastapi import FastAPI`
106
+ - Uvicorn 启动模式: `uvicorn.run(app, host="0.0.0.0", port=7860)`
107
+
108
+ **文档引用**:
109
+ - HuggingFace Spaces Docker 文档: https://huggingface.co/docs/hub/spaces-sdks-docker
110
+ - FastAPI 官方教程: https://fastapi.tiangolo.com/tutorial/
111
+
112
+ **外部参考**:
113
+ - FastAPI 最小应用示例: https://fastapi.tiangolo.com/tutorial/first-steps/
114
+ - HuggingFace Space README 配置: title, emoji, colorFrom, colorTo, sdk: docker
115
+
116
+ **验收标准**:
117
+ **手动验证**:
118
+ - [ ] 创建文件: `requirements.txt`, `.dockerignore`
119
+ - [ ] `requirements.txt` 包含: `fastapi>=0.104.0`, `uvicorn[standard]>=0.24.0`
120
+ - [ ] `.dockerignore` 包含: `.git`, `README.md`, `.dockerignore`
121
+ - [ ] 文件语法验证: `cat requirements.txt` → 无错误
122
+
123
+ - [ ] 2. 创建多阶段 Dockerfile
124
+
125
+ **做什么**:
126
+ - 第一阶段: Node.js 20 LTS 环境
127
+ - 第二阶段: Python 3.12 运行时环境
128
+ - 非 root 用户配置
129
+ - 安全和性能优化
130
+
131
+ **禁止做**:
132
+ - 不要使用 `latest` 标签
133
+ - 不要以 root 用户运行应用
134
+ - 不要包含构建工具在最终镜像
135
+
136
+ **可并行**: 是(与任务 3)
137
+
138
+ **参考文件**:
139
+ **模式引用**:
140
+ - Dockerfile 多阶段构建最佳实践: 研究发现的 Node.js + Python 组合模式
141
+
142
+ **文档引用**:
143
+ - Docker 官方多阶段构建文档
144
+ - HuggingFace Spaces Docker 要求: 端口 7860,非 root 用户
145
+
146
+ **外部参考**:
147
+ - Node.js 官方 Docker 镜像: `node:20-alpine`
148
+ - Python 官方 Docker 镜像: `python:3.12-slim`
149
+ - FastAPI 生产部署模式: `gunicorn -k uvicorn.workers.UvicornWorker`
150
+
151
+ **验收标准**:
152
+ **手动验证**:
153
+ - [ ] 构建: `docker build -t hfbase-fastapi .` → 成功无错误
154
+ - [ ] 镜像大小: `docker images hfbase-fastapi` → < 1GB
155
+ - [ ] 安全检查: `docker run --rm hfbase-fastapi whoami` → 显示非 root 用户
156
+ - [ ] 端口暴露: `docker inspect hfbase-fastapi` → ExposedPort 7860
157
+
158
+ - [ ] 3. 实现 FastAPI 最简应用
159
+
160
+ **做什么**:
161
+ - 创建 `app.py` 作为应用入口
162
+ - 实现基础的 GET `/` 和 `/health` 端点
163
+ - 配置生产服务器启动命令
164
+ - 添加基础的错误处理
165
+
166
+ **禁止做**:
167
+ - 不要添加复杂的路由或业务逻辑
168
+ - 不要包含数据库连接
169
+ - 不要添加身份验证
170
+
171
+ **可并行**: 是(与任务 2)
172
+
173
+ **参考文件**:
174
+ **模式引用**:
175
+ - FastAPI 标准应用结构: `app = FastAPI()`, `@app.get("/")`
176
+
177
+ **API/类型引用**:
178
+ - FastAPI 响应模型: `from pydantic import BaseModel`
179
+ - HTTP 状态码: `from fastapi import status`
180
+
181
+ **文档引用**:
182
+ - FastAPI 第一个步骤教程
183
+ - Uvicorn 配置选项文档
184
+
185
+ **外部参考**:
186
+ - FastAPI 最小应用: `from fastapi import FastAPI; app = FastAPI()`
187
+ - Gunicorn + UvicornWorker 生产配置
188
+
189
+ **验收标准**:
190
+ **手动验证**:
191
+ - [ ] 语法检查: `python -m py_compile app.py` → 无语法错误
192
+ - [ ] 本地运行: `uvicorn app:app --host 0.0.0.0 --port 7860` → 服务启动成功
193
+ - [ ] 根端点: `curl http://localhost:7860/` → 返回 JSON 响应
194
+ - [ ] 健康检查: `curl http://localhost:7860/health` → 返回 `{"status": "ok"}`
195
+
196
+ - [ ] 4. 配置 HuggingFace Space 元数据
197
+
198
+ **做什么**:
199
+ - 更新 `README.md` 包含 HuggingFace Space 前置元数据
200
+ - 配置 `app_port: 7860`
201
+ - 设置合适的标题、表情符号和颜色
202
+ - 添加部署说明文档
203
+
204
+ **禁止做**:
205
+ - 不要移除现有的 Git LFS 配置
206
+ - 不要添加不必要的元数据字段
207
+
208
+ **可并行**: 否
209
+
210
+ **参考文件**:
211
+ **现有文件**:
212
+ - `README.md` - 当前基础配置
213
+
214
+ **文档引用**:
215
+ - HuggingFace Spaces 配置参考: https://huggingface.co/docs/hub/spaces-config-reference
216
+
217
+ **外部参考**:
218
+ - Space YAML frontmatter 格式: `title`, `emoji`, `colorFrom`, `colorTo`, `sdk`, `pinned`, `app_port`
219
+
220
+ **验收标准**:
221
+ **手动验证**:
222
+ - [ ] YAML 语法验证: `head -10 README.md` → 无语法错误
223
+ - [ ] 元数据完整: `title`, `emoji`, `colorFrom`, `colorTo`, `sdk: docker`, `app_port: 7860`
224
+ - [ ] HuggingFace 解析: 可被 HuggingFace 正确解析元数据
225
+
226
+ - [ ] 5. 设置 HuggingFace CLI 管理流程
227
+
228
+ **做什么**:
229
+ - 安装和配置 HuggingFace CLI
230
+ - 创建 Space 仓库连接
231
+ - 配置部署脚本或 Makefile
232
+ - 设置 Git 远程仓库
233
+
234
+ **禁止做**:
235
+ - 不要提交敏感信息到版本控制
236
+ - 不要使用 commit 时自动部署(除非明确要求)
237
+
238
+ **可并行**: 否
239
+
240
+ **参考文件**:
241
+ **模式引用**:
242
+ - HuggingFace CLI 标准工作流程: `huggingface-cli login`, `huggingface-cli repo create`
243
+
244
+ **文档引用**:
245
+ - HuggingFace CLI 官方文档
246
+ - Spaces 部署指南
247
+
248
+ **外部参考**:
249
+ - CLI 安装: `pip install huggingface_hub`
250
+ - 登录命令: `huggingface-cli login --token`
251
+
252
+ **验收标准**:
253
+ **手动验证**:
254
+ - [ ] CLI 安装: `huggingface-cli --version` → 显示版本号
255
+ - [ ] 登录状态: `huggingface-cli whoami` → 显示用户名
256
+ - [ ] Git 配置: `git remote -v` → 显示 huggingface 远程仓库
257
+ - [ ] Space 创建: `huggingface-cli space list` → 显示新创建的 space
258
+
259
+ - [ ] 6. 端到端部署验证
260
+
261
+ **做什么**:
262
+ - 使用 HuggingFace CLI 部署到 Spaces
263
+ - 验证线上服务正常运行
264
+ - 测试所有 API 端点
265
+ - 检查部署日志和状态
266
+
267
+ **禁止做**:
268
+ - 不要跳过任何验证步骤
269
+ - 不要在验证未通过时继续下一步
270
+
271
+ **可并行**: 否
272
+
273
+ **参考文件**:
274
+ **模式引用**:
275
+ - HuggingFace 部署流程: `git push` 触发自动构建
276
+
277
+ **文档引用**:
278
+ - HuggingFace Spaces 构建和部署文档
279
+
280
+ **验收标准**:
281
+ **手动验证**:
282
+ - [ ] 推送成功: `git push origin main` → 无错误,开始构建
283
+ - [ ] 构建状态: Spaces 页面显示 "Running" 状态
284
+ - [ ] API 可访问: 浏览器访问 space URL → 可访问
285
+ - [ ] 端点测试: `curl https://<space-url>/health` → 返回 `{"status": "ok"}`
286
+ - [ ] 文档页面: 访问 `https://<space-url>/docs` → FastAPI 文档正常显示
287
+
288
+ ---
289
+
290
+ ## 提交策略
291
+
292
+ | 任务后 | 提交消息 | 文件 | 验证 |
293
+ |--------|----------|------|------|
294
+ | 1 | `feat: add basic project configuration` | requirements.txt, .dockerignore | docker build 语法检查 |
295
+ | 2 | `feat: implement multi-stage Dockerfile` | Dockerfile | docker build 成功 |
296
+ | 3 | `feat: create minimal FastAPI application` | app.py | uvicorn 启动成功 |
297
+ | 4 | `feat: configure HuggingFace Space metadata` | README.md | YAML 语法检查 |
298
+ | 5 | `feat: setup HuggingFace CLI workflow` | Makefile/deploy.sh | CLI 登录验证 |
299
+ | 6 | `chore: complete initial deployment` | 部署配置更新 | 线上访问验证 |
300
+
301
+ ---
302
+
303
+ ## 成功标准
304
+
305
+ ### 验证命令
306
+ ```bash
307
+ # 本地验证
308
+ docker build -t hfbase-fastapi .
309
+ docker run -p 7860:7860 hfbase-fastapi
310
+ curl http://localhost:7860/health
311
+
312
+ # HuggingFace 部署验证
313
+ huggingface-cli space list
314
+ git push origin main
315
+ curl https://<space-url>/health
316
+ ```
317
+
318
+ ### 最终检查清单
319
+ - [ ] 所有 "必须包含" 功能已实现
320
+ - [ ] 所有 "明确排除" 功能未包含
321
+ - [ ] Docker 镜像大小合理
322
+ - [ ] HuggingFace Space 正常运行
323
+ - [ ] API 端点响应正确
324
+ - [ ] 安全配置(非 root 用户)正确
325
+ - [ ] CLI 管理流程可工作
326
+
327
+ ---
328
+
329
+ ## 风险和注意事项
330
+
331
+ ### 潜在问题
332
+ 1. **Node.js 多阶段构建复杂性** - 可能不需要 Node.js,需确认具体用途
333
+ 2. **HuggingFace Space 构建限制** - 可能有内存或时间限制
334
+ 3. **端口绑定冲突** - 确保 7860 端口正确暴露
335
+
336
+ ### 回滚策略
337
+ - 保持基础工作的 `requirements.txt` 简单
338
+ - 使用明确的版本号避免依赖冲突
339
+ - 保留构建成功的 Docker 镜像标签
340
+
341
+ ---
342
+
343
+ ## 后续扩展方向
344
+
345
+ ### 可能的下一步
346
+ 1. 添加更多 API 端点
347
+ 2. 集成 HuggingFace 模型
348
+ 3. 添加身份验证
349
+ 4. 数据库集成
350
+ 5. 前端界面
351
+
352
+ ### 架构考虑
353
+ - 保持当前的模块化结构
354
+ - 为后续功能预留配置空间
355
+ - 维护简单性原则
Dockerfile ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 第一阶段:Node.js 20 LTS 构建环境
2
+ FROM node:20-alpine AS node-builder
3
+
4
+ WORKDIR /app
5
+
6
+ # 如果有 Node.js 依赖,在这里安装
7
+ # COPY package*.json ./
8
+ # RUN npm ci --only=production
9
+
10
+ # 第二阶段:Python 3.12 构建环境
11
+ FROM python:3.12-slim AS python-builder
12
+
13
+ WORKDIR /app
14
+
15
+ # 安装构建依赖
16
+ RUN apt-get update && apt-get install -y \
17
+ gcc \
18
+ && rm -rf /var/lib/apt/lists/*
19
+
20
+ # 复制并安装 Python 依赖
21
+ COPY requirements.txt .
22
+ RUN pip install --no-cache-dir --user -r requirements.txt
23
+
24
+ # 第三阶段:生产运行环境
25
+ FROM python:3.12-slim AS production
26
+
27
+ # 设置环境变量
28
+ ENV PYTHONDONTWRITEBYTECODE=1 \
29
+ PYTHONUNBUFFERED=1 \
30
+ PATH="/home/user/.local/bin:$PATH"
31
+
32
+ # 创建非 root 用户
33
+ RUN useradd --create-home --shell /bin/bash user
34
+
35
+ WORKDIR /app
36
+
37
+ # 从构建阶段复制 Python 包
38
+ COPY --from=python-builder /root/.local /home/user/.local
39
+
40
+ # 复制应用代码
41
+ COPY --chown=user . .
42
+
43
+ # 切换到非 root 用户
44
+ USER user
45
+
46
+ # 暴露 HuggingFace 标准端口
47
+ EXPOSE 7860
48
+
49
+ # 健康检查
50
+ HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
51
+ CMD curl -f http://localhost:7860/health || exit 1
52
+
53
+ # 启动命令
54
+ CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "-w", "1", "-b", "0.0.0.0:7860", "app:app"]
Makefile ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .PHONY: help install build run deploy push
2
+
3
+ # 默认目标
4
+ help:
5
+ @echo "可用的 make 命令:"
6
+ @echo " make install - 安装 HuggingFace CLI"
7
+ @echo " make build - 构建 Docker 镜像"
8
+ @echo " make run - 本地运行服务"
9
+ @echo " make test - 测试 API 端点"
10
+ @echo " make deploy - 部署到 HuggingFace Spaces"
11
+ @echo " make push - 推送到 Git 仓库"
12
+
13
+ # 安装 HuggingFace CLI
14
+ install:
15
+ pip install -U "huggingface_hub[cli]"
16
+ @echo "HuggingFace CLI 安装完成!"
17
+ @echo "请运行: huggingface-cli login --token YOUR_TOKEN"
18
+
19
+ # 构建 Docker 镜像
20
+ build:
21
+ docker build -t hfbase-api .
22
+
23
+ # 本地运行服务
24
+ run:
25
+ docker run -p 7860:7860 hfbase-api
26
+
27
+ # 测试 API 端点
28
+ test:
29
+ @echo "测试根端点..."
30
+ @curl -s http://localhost:7860/ | jq .
31
+ @echo ""
32
+ @echo "测试健康检查..."
33
+ @curl -s http://localhost:7860/health | jq .
34
+ @echo ""
35
+ @echo "测试系统信息..."
36
+ @curl -s http://localhost:7860/info | jq .
37
+
38
+ # 部署到 HuggingFace Spaces(先确保已登录)
39
+ deploy:
40
+ @git status
41
+ @echo "添加文件到 Git..."
42
+ git add .
43
+ @git status
44
+ @echo "请提交并推送到 HuggingFace Space:"
45
+ @echo " git commit -m '你的提交信息'"
46
+ @echo " git push origin main"
47
+
48
+ # 推送到 Git 仓库
49
+ push:
50
+ git push origin main
README copy.md ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Hfbase
3
+ emoji: 📚
4
+ colorFrom: purple
5
+ colorTo: pink
6
+ sdk: docker
7
+ pinned: false
8
+ ---
9
+
10
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
README.md CHANGED
@@ -1,10 +1,47 @@
1
  ---
2
- title: Hfbase
3
- emoji: 📚
4
- colorFrom: purple
5
- colorTo: pink
6
  sdk: docker
 
7
  pinned: false
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Hfbase API
3
+ emoji: 🚀
4
+ colorFrom: blue
5
+ colorTo: green
6
  sdk: docker
7
+ app_port: 7860
8
  pinned: false
9
  ---
10
 
11
+ # HFBase API
12
+
13
+ 基于 Node.js 20 LTS + Python 3.12 的 FastAPI 服务,部署在 HuggingFace Spaces。
14
+
15
+ ## 技术栈
16
+
17
+ - **Node.js**: 20 LTS (多阶段构建)
18
+ - **Python**: 3.12 (运行时)
19
+ - **Web 框架**: FastAPI + Uvicorn
20
+ - **生产服务器**: Gunicorn + UvicornWorker
21
+ - **部署平台**: HuggingFace Spaces (Docker SDK)
22
+
23
+ ## API 端点
24
+
25
+ - `GET /` - 欢迎信息
26
+ - `GET /health` - 健康检查
27
+ - `GET /info` - 系统信息
28
+ - `GET /docs` - FastAPI 自动文档
29
+
30
+ ## 部署信息
31
+
32
+ 此项目配置为在 HuggingFace Spaces 上运行,使用 Docker SDK 和端口 7860。
33
+
34
+ ### 构建和部署
35
+
36
+ ```bash
37
+ # 本地测试
38
+ docker build -t hfbase-api .
39
+ docker run -p 7860:7860 hfbase-api
40
+
41
+ # 访问 API
42
+ curl http://localhost:7860/health
43
+ ```
44
+
45
+ ## 配置参考
46
+
47
+ 详细配置参考: [HuggingFace Spaces 配置文档](https://huggingface.co/docs/hub/spaces-config-reference)
app.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from fastapi.responses import JSONResponse
3
+
4
+ # 创建 FastAPI 应用实例
5
+ app = FastAPI(
6
+ title="HFBase API",
7
+ description="基于 Node.js + Python 的最简 API 服务",
8
+ version="1.0.0"
9
+ )
10
+
11
+ @app.get("/")
12
+ async def root():
13
+ """根端点,返回基本信息"""
14
+ return JSONResponse(
15
+ content={
16
+ "message": "欢迎使用 HFBase API",
17
+ "version": "1.0.0",
18
+ "status": "运行中"
19
+ }
20
+ )
21
+
22
+ @app.get("/health")
23
+ async def health_check():
24
+ """健康检查端点"""
25
+ return JSONResponse(
26
+ content={"status": "ok"},
27
+ status_code=200
28
+ )
29
+
30
+ @app.get("/info")
31
+ async def info():
32
+ """系统信息端点"""
33
+ return JSONResponse(
34
+ content={
35
+ "framework": "FastAPI",
36
+ "python_version": "3.12",
37
+ "nodejs_version": "20 LTS",
38
+ "deployment": "HuggingFace Spaces"
39
+ }
40
+ )
push.sh ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ OS_TYPE=$(uname -s)
4
+
5
+ case "$OS_TYPE" in
6
+ Darwin*)
7
+ echo "当前系统是 macOS。"
8
+ ssh-add ~/.ssh/id_ed25519_airsltd_mac
9
+ ;;
10
+ Linux*)
11
+ echo "当前系统是 Linux。"
12
+ ;;
13
+ CYGWIN*|MINGW*|MSYS*)
14
+ echo "当前系统是 Windows。"
15
+ ;;
16
+ *)
17
+ echo "未知的系统: $OS_TYPE"
18
+ ;;
19
+ esac
20
+ git add .
21
+ git commit -m "update"
22
+ git push
23
+
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ fastapi>=0.104.0
2
+ uvicorn[standard]>=0.24.0
3
+ gunicorn>=21.0.0
setup_hf.sh ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # HuggingFace CLI 设置脚本
3
+
4
+ # 设置镜像源
5
+ export HF_ENDPOINT="https://hf-mirror.com"
6
+
7
+ # 安装 HuggingFace CLI
8
+ echo "安装 HuggingFace CLI..."
9
+ pip install -U "huggingface_hub[cli]"
10
+
11
+ # 检查安装
12
+ echo "验证安装..."
13
+ huggingface-cli --version
14
+
15
+ # 提示登录
16
+ echo ""
17
+ echo "========================================="
18
+ echo "HuggingFace CLI 已安装完成!"
19
+ echo "========================================="
20
+ echo ""
21
+ echo "请使用以下命令登录:"
22
+ echo "huggingface-cli login --token YOUR_TOKEN"
23
+ echo ""
24
+ echo "获取 token: https://huggingface.co/settings/tokens"
25
+ echo ""
26
+ echo "登录后,可以使用以下命令管理 Space:"
27
+ echo " - huggingface-cli space list # 列出所有 Spaces"
28
+ echo " - huggingface-cli repo type space # 创建新的 Space"
29
+ echo ""