CLIProxyAPIPlus / DEPLOYMENT.md
kines9661's picture
Upload 11 files
6cace42 verified
# 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) 文件。