Spaces:
Sleeping
Sleeping
File size: 7,484 Bytes
c1a43bf 6cace42 c1a43bf 6cace42 c1a43bf 6cace42 c1a43bf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 | # CLI Proxy API Plus - Hugging Face Spaces 部署指南
本文檔提供完整的 Hugging Face Spaces 部署步驟說明。
## 📋 目錄
1. [前置需求](#前置需求)
2. [構建 Go 二進制](#構建-go-二進制)
3. [快速部署](#快速部署)
4. [配置 Secrets](#配置-secrets)
5. [使用說明](#使用說明)
6. [常見問題](#常見問題)
---
## 前置需求
### 必需項目
1. **Hugging Face 帳號**
- 註冊地址: https://huggingface.co/join
- 建議啟用兩步驗證以保護帳號安全
2. **Go 編譯環境**(用於構建二進制)
- Go 1.26 或更高版本
- 下載地址: https://go.dev/dl/
3. **AI 服務提供商帳號**(至少需要一個)
- [Anthropic Claude](https://console.anthropic.com/)
- [Google AI Studio](https://aistudio.google.com/)
- [GitHub Copilot](https://github.com/features/copilot)
- [AWS Kiro](https://aws.amazon.com/)
### 可選項目
- 自定義域名(可在 HF Spaces 設置中配置)
---
## 構建 Go 二進制
**重要**:HF Spaces Dockerfile 需要預先構建的 Go 二進制文件。
### 步驟 1:克隆專案
```bash
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
```
### 步驟 2:構建 Linux 二進制
**Linux/macOS:**
```bash
GOOS=linux GOARCH=amd64 go build -o hf-spaces/CLIProxyAPIPlus ./cmd/server/
```
**Windows (PowerShell):**
```powershell
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o hf-spaces/CLIProxyAPIPlus ./cmd/server/
```
### 步驟 3:驗證構建
```bash
ls -la hf-spaces/CLIProxyAPIPlus
# 應該顯示一個約 20-30MB 的可執行文件
```
---
## 快速部署
### 方法一:從模板創建(推薦)
1. **Fork 或 Clone 本項目到您的 HF 帳號**
```bash
# 使用 Git
git clone https://huggingface.co/spaces/YOUR_USERNAME/cli-proxy-api-plus
```
2. **創建新的 Space**
- 前往 https://huggingface.co/new-space
- 選擇 **Docker** 作為 SDK
- 設置 Space 名稱(例如:`cli-proxy-api-plus`)
- 選擇可見性(Public 或 Private)
3. **上傳文件**
將 `hf-spaces/` 目錄下的所有文件上傳到 Space 根目錄:
- `Dockerfile`
- `supervisord.conf`
- `requirements.txt`
- `entrypoint.sh`
- `README.md`
- `streamlit_app/` 目錄
### 方法二:使用 Git 推送
1. **創建 Space 後,克隆到本地**
```bash
git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
cd YOUR_SPACE_NAME
```
2. **複製文件**
```bash
# 從本項目複製 hf-spaces 內容
cp -r /path/to/CLIProxyAPIPlus-main/hf-spaces/* .
```
3. **提交並推送**
```bash
git add .
git commit -m "Initial deployment"
git push
```
4. **等待構建完成**
HF Spaces 會自動開始構建 Docker 映像,通常需要 5-10 分鐘。
---
## 配置 Secrets
### 為什麼需要 Secrets?
Secrets 用於安全地存儲敏感信息,如 API 密鑰、OAuth 憑證等。這些信息不會出現在代碼中,確保安全性。
### 如何設置 Secrets
1. **進入 Space 設置頁面**
- 打開您的 Space 頁面
- 點擊右上角 **Settings** 標籤
2. **找到 Variables and Secrets 區塊**
- 滾動到 **Variables and secrets** 部分
- 點擊 **New secret**
3. **添加以下 Secrets**
#### 基礎配置
| Secret 名稱 | 說明 | 範例值 |
|------------|------|--------|
| `SERVER_PORT` | Go API 服務器端口 | `8317` |
| `LOG_LEVEL` | 日誌級別 | `info` |
#### Claude 配置
| Secret 名稱 | 說明 | 取得方式 |
|------------|------|----------|
| `CLAUDE_API_KEY` | Anthropic API Key | [Anthropic Console](https://console.anthropic.com/) |
| `CLAUDE_CLIENT_ID` | OAuth Client ID | OAuth 應用註冊 |
| `CLAUDE_CLIENT_SECRET` | OAuth Client Secret | OAuth 應用註冊 |
#### Gemini 配置
| Secret 名稱 | 說明 | 取得方式 |
|------------|------|----------|
| `GEMINI_API_KEY` | Google AI API Key | [Google AI Studio](https://aistudio.google.com/app/apikey) |
#### GitHub Copilot 配置
| Secret 名稱 | 說明 |
|------------|------|
| `GITHUB_CLIENT_ID` | GitHub OAuth App Client ID |
| `GITHUB_CLIENT_SECRET` | GitHub OAuth App Client Secret |
#### Kiro 配置
| Secret 名稱 | 說明 |
|------------|------|
| `AWS_ACCESS_KEY_ID` | AWS Access Key |
| `AWS_SECRET_ACCESS_KEY` | AWS Secret Key |
| `AWS_REGION` | AWS 區域(如 `us-east-1`) |
### OAuth 回調 URL 設置
在配置 OAuth 應用時,需要設置正確的回調 URL:
```
https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/oauth/callback/{provider}
```
例如:
- Claude: `https://john-cli-proxy.hf.space/oauth/callback/claude`
- Gemini: `https://john-cli-proxy.hf.space/oauth/callback/gemini`
- GitHub: `https://john-cli-proxy.hf.space/oauth/callback/github`
---
## 使用說明
### 訪問應用
部署完成後,您可以通過以下 URL 訪問:
```
https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space
```
### 主要功能
#### 1. 首頁(Dashboard)
- 查看 API 服務狀態
- 查看可用的 AI 提供商
- 快速導航到各功能頁面
#### 2. 💬 Chat 頁面
- 測試 API 端點
- 選擇不同的 AI 模型
- 發送測試請求
- 查看響應結果
#### 3. 🔑 Auth 頁面
- 管理 OAuth 登錄
- 查看 API 密鑰狀態
- 刷新認證令牌
#### 4. 📊 Stats 頁面
- 查看使用統計
- 請求次數圖表
- Token 使用量
- 模型分佈
#### 5. ⚙️ Settings 頁面
- 服務器配置
- 提供商設置
- 日誌查看
### API 端點
Go API 服務器運行在內部端口 8317,Streamlit 會代理請求:
```
# OpenAI 兼容端點
POST /v1/chat/completions
POST /v1/models
# Claude 端點
POST /v1/messages
# 管理端點
GET /api/status
GET /api/models
```
---
## 常見問題
### Q: 構建失敗怎麼辦?
**A:** 檢查以下項目:
1. 確保 `Dockerfile` 在根目錄
2. 檢查 `requirements.txt` 格式是否正確
3. 查看 Build Logs 中的錯誤信息
### Q: 應用無法啟動?
**A:** 可能原因:
1. Secrets 未正確配置
2. 端口衝突(HF Spaces 要求使用 7860)
3. 依賴安裝失敗
### Q: API 請求失敗?
**A:** 檢查:
1. API 密鑰是否有效
2. OAuth 令牌是否過期
3. 網絡連接是否正常
### Q: 如何更新應用?
**A:**
```bash
git pull origin main
git push
```
HF Spaces 會自動重新構建。
### Q: 如何查看日誌?
**A:**
1. 進入 Space 頁面
2. 點擊 **Logs** 標籤
3. 查看實時日誌輸出
### Q: 資源限制?
**A:** HF Spaces 免費版有以下限制:
- CPU: 2 vCPU
- 內存: 16GB
- 存儲: 臨時存儲(重啟後清除)
如需更多資源,可考慮升級到 GPU Space 或使用 HF Enterprise。
---
## 進階配置
### 自定義域名
1. 進入 Space Settings
2. 找到 **Custom Domain** 區塊
3. 輸入您的域名並按照指示配置 DNS
### 持久化存儲
HF Spaces 預設使用臨時存儲。如需持久化:
1. 使用 HF Datasets 存儲配置
2. 或使用外部數據庫(如 PostgreSQL)
### 擴展功能
您可以通過修改 `streamlit_app/` 中的文件來擴展功能:
- 添加新的頁面:在 `pages/` 目錄創建新文件
- 修改主題:編輯 `.streamlit/config.toml`
- 添加新功能:修改 `app.py`
---
## 技術支持
如有問題,請:
1. 查閱 [GitHub Issues](https://github.com/router-for-me/CLIProxyAPI/issues)
2. 在 HF Space 上開啟 Discussion
3. 聯繫維護者
---
## 授權
本項目採用 MIT 授權條款。詳見 [LICENSE](../LICENSE) 文件。
|