TradingAgents/DEPLOY.md

489 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TradingAgents 雲端部署指南 🚀
本指南提供將 TradingAgents 部署到雲端的完整步驟,**重點介紹完全免費的部署方案**。
## 📋 目錄
- [免費部署方案(推薦)](#免費部署方案推薦)
- [部署前準備](#部署前準備)
- [方案 1: Vercel + Render (完全免費)](#方案-1-vercel--render-完全免費)
- [方案 2: Railway (免費額度)](#方案-2-railway-免費額度)
- [方案 3: Docker Compose (自有伺服器)](#方案-3-docker-compose-自有伺服器)
- [環境變數配置](#環境變數配置)
- [故障排除](#故障排除)
---
## 🎯 免費部署方案(推薦)
### 最佳免費組合Vercel (Frontend) + Render (Backend)
| 服務 | 平台 | 免費額度 | 限制 |
|------|------|----------|------|
| **Frontend** | Vercel | 無限制 | 100GB 頻寬/月 |
| **Backend** | Render | 750 小時/月 | 休眠機制15分鐘無活動 |
> [!TIP]
> Render 的免費方案會在 15 分鐘無活動後休眠,首次訪問需要 30-60 秒喚醒。這對於測試和個人使用完全足夠!
---
## 🔧 部署前準備
### 1. 必要的 API 密鑰
您需要準備以下 API 密鑰:
#### OpenAI API Key必需
- 註冊https://platform.openai.com/
- 獲取 API Keyhttps://platform.openai.com/api-keys
- 費用:按使用量計費(建議使用 gpt-4o-mini 節省成本)
#### Alpha Vantage API Key必需
- 註冊https://www.alphavantage.co/support/#api-key
- **完全免費**TradingAgents 用戶享有 60 請求/分鐘
### 2. GitHub 帳號
所有免費部署方案都需要 GitHub 帳號來連接代碼倉庫。
---
## 🎨 方案 1: Vercel + Render (完全免費)
這是**最推薦的免費方案**,前端和後端分別部署。
### Step 1: 部署 Backend 到 Render
#### 1.1 準備代碼
確保您的代碼已推送到 GitHub。
#### 1.2 創建 Render 帳號
訪問 https://render.com/ 並使用 GitHub 登入。
#### 1.3 創建新的 Web Service
1. 點擊 "New +" → "Web Service"
2. 連接您的 GitHub 倉庫
3. 配置如下:
```
Name: tradingagents-backend
Region: Singapore (或最近的區域)
Branch: main
Root Directory: backend
Runtime: Python 3
Build Command: pip install -r requirements.txt
Start Command: uvicorn app.main:app --host 0.0.0.0 --port $PORT
```
#### 1.4 設置環境變數
在 Render 的 Environment 頁面添加:
```bash
OPENAI_API_KEY=your_openai_api_key_here
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key_here
TRADINGAGENTS_RESULTS_DIR=/opt/render/project/src/results
PYTHON_VERSION=3.11
```
#### 1.5 選擇免費方案
- Instance Type: **Free**
- 點擊 "Create Web Service"
部署需要 5-10 分鐘。完成後,您會獲得一個 URL例如
```
https://tradingagents-backend.onrender.com
```
### Step 2: 部署 Frontend 到 Vercel
#### 2.1 創建 Vercel 帳號
訪問 https://vercel.com/ 並使用 GitHub 登入。
#### 2.2 導入項目
1. 點擊 "Add New..." → "Project"
2. 選擇您的 GitHub 倉庫
3. 配置如下:
```
Framework Preset: Next.js
Root Directory: frontend
Build Command: npm run build
Output Directory: .next
Install Command: npm install
```
#### 2.3 設置環境變數
在 Environment Variables 添加:
```bash
NEXT_PUBLIC_API_URL=https://tradingagents-backend.onrender.com
```
> [!IMPORTANT]
> 將 `tradingagents-backend.onrender.com` 替換為您在 Step 1 獲得的實際 Render URL。
#### 2.4 部署
點擊 "Deploy",等待 2-3 分鐘。完成後,您會獲得一個 URL例如
```
https://tradingagents.vercel.app
```
### Step 3: 更新 Backend CORS 設置
為了讓前端能夠訪問後端,需要更新 Backend 的 CORS 配置。
編輯 `backend/app/main.py`,找到 CORS 配置部分,添加您的 Vercel URL
```python
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:3000",
"https://tradingagents.vercel.app", # 添加您的 Vercel URL
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
```
提交並推送更改Render 會自動重新部署。
### ✅ 完成!
訪問您的 Vercel URL應用程式現在已經在線上運行了
---
## 🚂 方案 2: Railway (免費額度)
Railway 提供 $5 免費額度/月,可以同時部署前後端。
### Step 1: 創建 Railway 帳號
訪問 https://railway.app/ 並使用 GitHub 登入。
### Step 2: 創建新項目
1. 點擊 "New Project"
2. 選擇 "Deploy from GitHub repo"
3. 選擇您的倉庫
### Step 3: 添加服務
#### 3.1 添加 Backend 服務
1. 點擊 "New Service" → "GitHub Repo"
2. 配置:
- Root Directory: `backend`
- Build Command: `pip install -r requirements.txt`
- Start Command: `uvicorn app.main:app --host 0.0.0.0 --port $PORT`
3. 添加環境變數:
```bash
OPENAI_API_KEY=your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_RESULTS_DIR=/app/results
```
4. 在 Settings → Networking 中生成一個公開域名
#### 3.2 添加 Frontend 服務
1. 點擊 "New Service" → "GitHub Repo"
2. 配置:
- Root Directory: `frontend`
- Build Command: `npm install && npm run build`
- Start Command: `npm start`
3. 添加環境變數:
```bash
NEXT_PUBLIC_API_URL=https://your-backend-url.railway.app
```
4. 在 Settings → Networking 中生成一個公開域名
### ✅ 完成!
兩個服務都會自動部署,您可以通過生成的域名訪問。
> [!WARNING]
> Railway 免費額度為 $5/月,通常可以運行約 500 小時。超出後需要付費。
---
## 🐳 方案 3: Docker Compose (自有伺服器)
如果您有自己的 VPS如 DigitalOcean、Linode、AWS EC2 等),可以使用 Docker Compose。
### 前置要求
- 安裝 Docker 和 Docker Compose
- 至少 2GB RAM
- 開放端口 80 和 443
### Step 1: 準備環境變數
創建 `.env` 文件:
```bash
cp .env.example .env
```
編輯 `.env`,填入您的 API 密鑰:
```bash
OPENAI_API_KEY=your_openai_api_key
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key
TRADINGAGENTS_RESULTS_DIR=/app/results
```
### Step 2: 修改 docker-compose.yml
確保 frontend 的環境變數指向正確的後端 URL
```yaml
environment:
- NEXT_PUBLIC_API_URL=http://your-server-ip:8000
```
### Step 3: 構建並啟動
```bash
# 構建鏡像
docker-compose build
# 啟動服務
docker-compose up -d
# 查看日誌
docker-compose logs -f
```
### Step 4: 訪問應用
- Frontend: http://your-server-ip:3000
- Backend API: http://your-server-ip:8000
### 使用 Nginx 反向代理(可選)
為了使用域名和 HTTPS可以配置 Nginx
```nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /api {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
使用 Certbot 獲取免費 SSL 證書:
```bash
sudo certbot --nginx -d yourdomain.com
```
---
## 🔐 環境變數配置
### Backend 環境變數
| 變數名 | 必需 | 說明 | 範例 |
|--------|------|------|------|
| `OPENAI_API_KEY` | ✅ | OpenAI API 密鑰 | `sk-...` |
| `ALPHA_VANTAGE_API_KEY` | ✅ | Alpha Vantage API 密鑰 | `YOUR_KEY` |
| `TRADINGAGENTS_RESULTS_DIR` | ⚠️ | 結果存儲目錄 | `/app/results` |
| `PYTHON_VERSION` | ❌ | Python 版本Render | `3.11` |
### Frontend 環境變數
| 變數名 | 必需 | 說明 | 範例 |
|--------|------|------|------|
| `NEXT_PUBLIC_API_URL` | ✅ | Backend API URL | `https://api.yourdomain.com` |
> [!CAUTION]
> 永遠不要在前端代碼中硬編碼 API 密鑰!所有敏感信息應該在後端處理。
---
## 🔧 故障排除
### Backend 問題
#### 問題Render 服務休眠
**症狀**:首次訪問需要等待 30-60 秒
**解決方案**
- 這是 Render 免費方案的正常行為
- 可以使用 UptimeRobot 等服務定期 ping 您的 API 保持喚醒
- 或升級到付費方案($7/月)
#### 問題ModuleNotFoundError
**症狀**:找不到 `tradingagents` 模組
**解決方案**
確保 `backend/Dockerfile` 正確複製了 tradingagents 目錄:
```dockerfile
COPY ../tradingagents ./tradingagents
```
#### 問題API 速率限制
**症狀**Alpha Vantage 返回 429 錯誤
**解決方案**
- 確認使用的是 TradingAgents 專用 API key60 req/min
- 或在 `tradingagents/default_config.py` 中切換到其他數據源
### Frontend 問題
#### 問題CORS 錯誤
**症狀**:瀏覽器控制台顯示 CORS 錯誤
**解決方案**
`backend/app/main.py` 中添加您的前端 URL 到 CORS 白名單:
```python
allow_origins=[
"https://your-frontend-url.vercel.app",
]
```
#### 問題API 連接失敗
**症狀**:前端無法連接到後端
**解決方案**
1. 檢查 `NEXT_PUBLIC_API_URL` 環境變數是否正確
2. 確保後端服務正在運行
3. 檢查後端 URL 是否可以公開訪問
### Docker 問題
#### 問題:構建失敗
**症狀**`docker-compose build` 失敗
**解決方案**
```bash
# 清理舊的鏡像和緩存
docker-compose down -v
docker system prune -a
# 重新構建
docker-compose build --no-cache
```
#### 問題:容器無法啟動
**症狀**`docker-compose up` 後容器立即退出
**解決方案**
```bash
# 查看詳細日誌
docker-compose logs backend
docker-compose logs frontend
# 檢查環境變數
docker-compose config
```
---
## 🔑 Bring Your Own Key (BYOK) 模式
如果您希望讓用戶使用自己的 API Key而不是在服務器端配置
1. **Render 配置**
- 不要設置 `OPENAI_API_KEY``ALPHA_VANTAGE_API_KEY` 環境變數
- 或者將它們設置為空值
2. **前端行為**
- 應用程式會檢測到沒有預設 Key
- 用戶在執行分析時,界面會要求輸入他們自己的 API Key
- Key 僅用於當次請求,不會存儲在服務器上
這對於公開演示或讓社群使用您的部署版本非常有用,您無需為他人的使用付費。
---
## 📊 成本估算
### 完全免費方案Vercel + Render
| 項目 | 成本 |
|------|------|
| Frontend (Vercel) | **$0** |
| Backend (Render) | **$0** |
| Alpha Vantage API | **$0** |
| OpenAI API | 按使用量(建議使用 gpt-4o-mini |
**預估 OpenAI 成本**
- 使用 `gpt-4o-mini`:約 $0.01-0.05 每次交易分析
- 每天 10 次分析:約 $3-15/月
### Railway 方案
| 項目 | 成本 |
|------|------|
| Railway 免費額度 | $5/月(免費) |
| 超出後 | $0.000231/GB-s |
| OpenAI API | 按使用量 |
---
## 🎯 推薦配置
### 個人測試使用
- **平台**Vercel + Render免費
- **LLM**gpt-4o-mini節省成本
- **配置**
```python
config["deep_think_llm"] = "gpt-4o-mini"
config["quick_think_llm"] = "gpt-4o-mini"
config["max_debate_rounds"] = 1
```
### 生產環境
- **平台**Vercel + Railway或 Render 付費方案)
- **LLM**gpt-4o 或 o1-preview
- **配置**:使用默認配置
- **監控**:添加 Sentry 或 LogRocket
---
## 📚 相關資源
- [Vercel 文檔](https://vercel.com/docs)
- [Render 文檔](https://render.com/docs)
- [Railway 文檔](https://docs.railway.app/)
- [TradingAgents GitHub](https://github.com/TauricResearch/TradingAgents)
- [Alpha Vantage API](https://www.alphavantage.co/documentation/)
---
## 🤝 需要幫助?
如果遇到問題:
1. 查看上面的[故障排除](#故障排除)部分
2. 檢查 GitHub Issues
3. 加入 [Discord 社群](https://discord.com/invite/hk9PGKShPK)
---
**祝您部署順利!** 🚀