TradingAgents/DEPLOY.md

12 KiB
Raw Blame History

TradingAgents 雲端部署指南 🚀

本指南提供將 TradingAgents 部署到雲端的完整步驟,重點介紹完全免費的部署方案

📋 目錄


🎯 免費部署方案(推薦)

最佳免費組合Vercel (Frontend) + Render (Backend)

服務 平台 免費額度 限制
Frontend Vercel 無限制 100GB 頻寬/月
Backend Render 750 小時/月 休眠機制15分鐘無活動

[!TIP] Render 的免費方案會在 15 分鐘無活動後休眠,首次訪問需要 30-60 秒喚醒。這對於測試和個人使用完全足夠!


🔧 部署前準備

1. 必要的 API 密鑰

您需要準備以下 API 密鑰:

OpenAI API Key必需

Alpha Vantage API Key必需

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 頁面添加:

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 添加:

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

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. 添加環境變數:

OPENAI_API_KEY=your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_RESULTS_DIR=/app/results
  1. 在 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. 添加環境變數:

NEXT_PUBLIC_API_URL=https://your-backend-url.railway.app
  1. 在 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 文件:

cp .env.example .env

編輯 .env,填入您的 API 密鑰:

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

environment:
  - NEXT_PUBLIC_API_URL=http://your-server-ip:8000

Step 3: 構建並啟動

# 構建鏡像
docker-compose build

# 啟動服務
docker-compose up -d

# 查看日誌
docker-compose logs -f

Step 4: 訪問應用

使用 Nginx 反向代理(可選)

為了使用域名和 HTTPS可以配置 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 證書:

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 目錄:

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 白名單:

allow_origins=[
    "https://your-frontend-url.vercel.app",
]

問題API 連接失敗

症狀:前端無法連接到後端

解決方案

  1. 檢查 NEXT_PUBLIC_API_URL 環境變數是否正確
  2. 確保後端服務正在運行
  3. 檢查後端 URL 是否可以公開訪問

Docker 問題

問題:構建失敗

症狀docker-compose build 失敗

解決方案

# 清理舊的鏡像和緩存
docker-compose down -v
docker system prune -a

# 重新構建
docker-compose build --no-cache

問題:容器無法啟動

症狀docker-compose up 後容器立即退出

解決方案

# 查看詳細日誌
docker-compose logs backend
docker-compose logs frontend

# 檢查環境變數
docker-compose config

🔑 Bring Your Own Key (BYOK) 模式

如果您希望讓用戶使用自己的 API Key而不是在服務器端配置

  1. Render 配置

    • 不要設置 OPENAI_API_KEYALPHA_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免費
  • LLMgpt-4o-mini節省成本
  • 配置
config["deep_think_llm"] = "gpt-4o-mini"
config["quick_think_llm"] = "gpt-4o-mini"
config["max_debate_rounds"] = 1

生產環境

  • 平台Vercel + Railway或 Render 付費方案)
  • LLMgpt-4o 或 o1-preview
  • 配置:使用默認配置
  • 監控:添加 Sentry 或 LogRocket

📚 相關資源


🤝 需要幫助?

如果遇到問題:

  1. 查看上面的故障排除部分
  2. 檢查 GitHub Issues
  3. 加入 Discord 社群

祝您部署順利! 🚀