Fixed missing route registration that prevented the /api/collab/* endpoints from being available. The claude_deepseek_collab module was imported and implemented but not registered in the FastAPI app, causing 404 errors on all endpoints including health check, recommend, and batch-recommend. Changes: - Updated backend/app/routes/__init__.py to export claude_deepseek_collab module - Updated backend/main.py to import and register the claude_deepseek_collab router - All endpoints now properly accessible and working with real Alpha Vantage data Verified endpoints: ✅ /api/collab/health - System health check ✅ /api/collab/recommend - Single stock/forex analysis with Claude + DeepSeek ✅ /api/collab/batch-recommend - Batch analysis for multiple assets ✅ /api/collab/analyze/{symbol} - Technical signal analysis only Real data sources verified: ✅ AAPL: $275.25 (Alpha Vantage) ✅ EURUSD=X: 1.16 (ExchangeRate API) 🤖 Generated with Claude Code Co-Authored-By: Claude <[email protected]>
13 KiB
Claude × DeepSeek 协作式智能投顾系统
📋 系统架构概述
这是一个高级的 三层 AI 协作架构,结合了 Claude 4.5 的语言理解能力和 DeepSeek 的本地量化分析能力。
┌─────────────────────────────────────────────────────────────┐
│ 用户请求(前端) │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ 数据层 │ │策略层 │ │ 建议层 │
│Yahoo │ │DeepSeek │ │ Claude │
│Finance │ │ Ollama │ │OpenRouter
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
│ OHLCV 数据 │ 交易信号 │ 投资建议
│ 技术指标 │ JSON 结果 │ 结构化建议
│ │ │
└──────────────┼──────────────┘
│
┌───────────────▼───────────────┐
│ Redis 缓存层 (TTL=300s) │
└───────────────┬───────────────┘
│
┌───────────────▼───────────────┐
│ Vue3 前端组件展示 │
└───────────────────────────────┘
🏗️ 核心模块
1️⃣ 数据层 (backend/data/datasource_yahoo.py)
职责:获取多市场行情数据,计算技术指标
# 支持的市场
- 美股:AAPL, MSFT, NVDA, TSLA, etc.
- 指数:^GSPC, ^IXIC, ^DJI, ^HSI
- 贵金属:GC=F (黄金), SI=F (白银)
- 外汇:EURUSD=X, GBPUSD=X
# 提供的数据
- get_current_price(symbol) # 当前价格
- get_historical_data(symbol) # 历史行情
- get_technical_indicators(symbol) # 技术指标 (MA, RSI, MACD)
- get_market_snapshot() # 市场快照
缓存策略:内存缓存,TTL=300 秒
2️⃣ 策略层 (backend/strategy/deepseek_engine.py)
职责:执行本地量化分析,生成客观交易信号
工作流程:
Claude 生成 Prompt
↓
DeepSeek (Ollama) 执行分析
↓
返回结构化 JSON 信号
分析输出格式:
{
"signal": "BUY|SELL|HOLD",
"confidence": 0.75,
"reason": "MA5 突破 MA20,RSI 处于 45-55 中立区间,MACD 形成金叉",
"ma_signal": "看涨",
"rsi_signal": "中立",
"macd_signal": "看涨",
"risk_level": "MEDIUM",
"entry_price": 150.25,
"stop_loss": 145.00,
"take_profit": 160.00
}
关键特性:
- 支持 MA (5/20/50), RSI (14), MACD 等指标
- 生成置信度评分 (0.0-1.0)
- 风险等级评估 (LOW/MEDIUM/HIGH)
- 自动生成关键价位
3️⃣ 建议层 (backend/advisor/claude_investment_advisor.py)
职责:基于 DeepSeek 信号,通过 Claude 生成专业投资建议
核心逻辑:
DeepSeek 信号(数据)
↓
Claude 理解和解释
↓
生成自然语言建议 + 风险提示
输出格式:
{
"recommendation": "建议买入",
"summary": "技术面看涨,量化信号强劲",
"strategies": {
"aggressive": {
"action": "BUY",
"reason": "追求高收益的投资者可考虑"
},
"balanced": {
"action": "HOLD",
"reason": "等待更明确的突破信号"
},
"conservative": {
"action": "HOLD",
"reason": "保本优先的投资者暂不介入"
}
},
"entry_price": 150.25,
"stop_loss": 145.00,
"take_profit": 160.00,
"time_horizon": "medium_term",
"risks": [
"市场风险:大盘下跌可能带动下行",
"技术风险:支撑位 145.00 若被跌破将转弱",
"外部风险:关注公司财报和行业动向"
],
"confidence": 0.72
}
🔄 完整的协作流程 (API: /api/collab/recommend)
请求
curl -X POST http://localhost:8001/api/collab/recommend \
-H "Content-Type: application/json" \
-d '{"symbol": "AAPL"}'
执行流程
Step 1: 数据获取 (100-200ms)
├─ Yahoo Finance 获取当前报价
├─ 计算技术指标 (MA, RSI, MACD)
└─ 缓存数据
Step 2: DeepSeek 量化分析 (3-10 秒)
├─ Claude 生成结构化 Prompt
├─ Ollama 本地执行 DeepSeek 模型
├─ 提取和验证 JSON 结果
└─ 返回交易信号
Step 3: Claude 投资建议 (2-5 秒)
├─ 融合市场背景
├─ 调用 Claude 4.5 (via OpenRouter)
├─ 生成多风格投资建议
└─ 添加风险提示
Step 4: 结果组装和缓存
├─ 组合所有分析结果
├─ 存入 Redis (TTL=300s)
└─ 返回前端展示
响应 (完整示例)
详见 /api/collab/recommend 返回数据
📦 部署和配置
环境要求
- Docker & Docker Compose
- 磁盘空间:至少 60GB (用于 DeepSeek 33B 模型)
- 内存:最少 32GB (推荐 64GB)
- GPU 支持(可选):NVIDIA CUDA 11.8+
快速启动
# 1. 克隆项目
git clone <repo-url>
cd stock
# 2. 配置环境变量
export OPENROUTER_API_KEY="your-key-here"
export TUSHARE_TOKEN="your-token-here"
# 3. 启动服务
docker-compose up -d
# 4. 等待所有服务就绪 (2-3 分钟)
docker-compose ps
# 5. 查看日志
docker-compose logs -f backend
# 6. 验证服务
curl http://localhost:8001/api/collab/health
关键服务端口
| 服务 | 端口 | 用途 |
|---|---|---|
| Backend API | 8001 | FastAPI 应用 |
| Frontend | 8090 | Vue3 Dashboard |
| Ollama | 11434 | DeepSeek 模型 API |
| PostgreSQL | 5433 | 数据库 |
| Redis | 6380 | 缓存 |
| Adminer | 8091 | 数据库管理 |
Docker Compose 配置说明
ollama:
image: ollama/ollama:latest
volumes:
- ollama_data:/root/.ollama # 模型持久化
ports:
- "11434:11434"
# 自动下载 DeepSeek 33B 模型 (~33GB)
🚀 API 端点
主推荐端点
POST /api/collab/recommend
生成完整的投资推荐
请求:
{
"symbol": "AAPL",
"user_request": "可选的自然语言请求"
}
响应:包含 DeepSeek 信号和 Claude 建议
其他端点
POST /api/collab/analyze/{symbol}
仅获取技术指标和 DeepSeek 交易信号(不生成完整建议)
POST /api/collab/batch-recommend
批量推荐 (最多 10 个符号)
GET /api/collab/market-snapshot
获取市场快照(主要指数和热门资产)
GET /api/collab/health
系统健康检查(检查各组件状态)
POST /api/collab/clear-cache
清空推荐缓存
🎯 使用示例
JavaScript / Fetch API
async function getRecommendation(symbol) {
const response = await fetch('/api/collab/recommend', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ symbol })
});
const data = await response.json();
console.log('DeepSeek 信号:', data.deepseek_signal);
console.log('Claude 建议:', data.investment_advice);
return data;
}
// 使用
getRecommendation('AAPL').then(result => {
console.log(result);
});
Python
import httpx
import asyncio
async def get_recommendation(symbol: str):
async with httpx.AsyncClient() as client:
response = await client.post(
'http://localhost:8001/api/collab/recommend',
json={'symbol': symbol}
)
return response.json()
# 使用
result = asyncio.run(get_recommendation('MSFT'))
print(result)
🔧 故障排查
问题 1:Ollama 无法连接
# 检查 Ollama 容器状态
docker-compose logs ollama
# 等待模型下载完成 (首次启动可能需要 30+ 分钟)
docker-compose exec ollama ollama list
# 手动拉取模型
docker-compose exec ollama ollama pull deepseek-coder:33b
问题 2:Claude API 调用失败
# 验证 API Key
docker-compose exec backend env | grep OPENROUTER
# 检查网络连接
docker-compose exec backend curl https://openrouter.ai/api/v1/models
# 查看详细日志
docker-compose logs backend | grep "Claude\|OpenRouter"
问题 3:Redis 连接问题
# 检查 Redis 状态
docker-compose exec redis redis-cli ping
# 查看缓存数据
docker-compose exec redis redis-cli -a redis2025 KEYS "*recommend*"
# 清空缓存
docker-compose exec redis redis-cli -a redis2025 FLUSHDB
问题 4:推荐响应缓慢
# 监控 DeepSeek 处理时间
docker-compose logs backend | grep "analyze_technical_indicators"
# 检查 Ollama 模型加载状态
docker-compose exec ollama ollama ps
# 考虑启用 GPU 加速
# 在 docker-compose.yml 中添加 GPU 支持
📊 性能优化建议
1. 本地模型选择
DeepSeek Coder 33B (推荐)
- 大小:~33GB
- 速度:3-8 秒每次分析
- 准确度:高
DeepSeek 7B (轻量)
- 大小:~4GB
- 速度:1-2 秒
- 准确度:中等
2. GPU 加速
# docker-compose.yml 添加
ollama:
runtime: nvidia
environment:
CUDA_VISIBLE_DEVICES: "0"
# 将分析时间从 5-8 秒降至 1-2 秒
3. 缓存策略
- 短期缓存(30s):市场快照
- 中期缓存(300s):个股推荐
- 长期缓存(3600s):历史指标
4. 批量分析优化
# 使用 batch 端点处理多个符号
POST /api/collab/batch-recommend
{
"symbols": ["AAPL", "MSFT", "NVDA", "TSLA"]
}
# 并行执行分析,总时间 = max(单个分析时间)
📚 系统架构特点
✅ 完全本地化:DeepSeek 在本地 Ollama 运行,无需上传数据 ✅ 高效协作:Claude 负责理解,DeepSeek 负责计算 ✅ 结构化输出:所有结果均为 JSON,易于集成 ✅ 智能缓存:自动缓存常见查询,减少重复计算 ✅ 风险提示:每个建议都附带详细的风险分析 ✅ 多风格推荐:同时提供激进/平衡/保守三种策略 ✅ 实时更新:支持流式更新市场数据和信号
🔐 安全性考虑
-
API Key 管理
- 使用环境变量存储
- 绝不提交到代码仓库
- 定期轮换
-
数据隐私
- DeepSeek 在本地执行,数据不离开服务器
- 只有 Claude 调用需要网络连接
- 支持离线模式
-
访问控制
- 添加 API 认证层
- 限制请求频率
- 监控异常访问
📖 进阶配置
自定义 Prompt
修改 backend/utils/prompt_orchestrator.py 中的 Prompt 模板,以改变 DeepSeek 的分析行为
# 例如:调整技术指标权重
class PromptBuilder:
@staticmethod
def build_technical_recommendation_prompt(...):
# 修改这里的 Prompt
添加新的分析维度
在 backend/strategy/deepseek_engine.py 中添加新方法
async def analyze_custom_metric(self, symbol: str, custom_data: Dict):
"""自定义分析方法"""
prompt = f"根据以下自定义数据分析 {symbol}..."
return await self._call_deepseek(prompt)
集成额外数据源
扩展 backend/data/datasource_yahoo.py
class DataSourceIntegration:
def get_financial_data(self, symbol):
# 集成 SEC, Bloomberg 等数据源
pass
📞 技术支持
常见问题
Q: 首次启动要多久? A: 取决于 DeepSeek 模型下载时间(30-120 分钟,网络速度相关)
Q: 可以使用其他本地模型吗?
A: 可以,修改 deepseek_engine.py 中的 model_name 参数
Q: 分析结果可信度如何? A: DeepSeek 的 confidence 字段表示模型对该信号的置信度
Q: 支持实时流式数据吗? A: 支持,可以修改 API 返回 Server-Sent Events (SSE)
🎓 学习资源
版本:1.0.0 最后更新:2025-11-12 维护者:AI Investment Advisory Team