Spaces:
Sleeping
Sleeping
| # 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) 文件。 | |