377 lines
12 KiB
Markdown
377 lines
12 KiB
Markdown
# TradingAgents 系统架构指南
|
||
|
||
## 📖 概述
|
||
|
||
本文档提供TradingAgents系统架构的全面概览,包括中国市场功能集成、数据库系统和多LLM支持。该架构设计注重可扩展性、可靠性和全球市场覆盖。
|
||
|
||
## 🏗️ 高层架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ TradingAgents 系统 │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ CLI界面 (市场选择 + 配置) │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ 多智能体框架 │
|
||
│ ├── 市场分析师 ├── 基本面分析师 │
|
||
│ ├── 新闻分析师 ├── 多空研究员 │
|
||
│ └── 交易员智能体 └── 风险管理 │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ 多LLM提供商层 │
|
||
│ ├── 百炼(通义千问) ├── OpenAI(GPT) │
|
||
│ ├── Google(Gemini) └── Anthropic(Claude) │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ 数据层 │
|
||
│ ├── 美股市场 (Yahoo Finance) │
|
||
│ ├── 中国A股 (通达信API) │
|
||
│ └── 财经新闻 & 社交媒体 │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ 缓存与存储层 │
|
||
│ ├── MongoDB (持久化存储) │
|
||
│ ├── Redis (高性能缓存) │
|
||
│ └── 文件缓存 (回退方案) │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 🎯 核心组件
|
||
|
||
### 1. CLI界面层
|
||
|
||
#### 市场选择系统
|
||
- **交互式市场选择**: 美股 vs 中国A股
|
||
- **格式验证**: 市场特定的股票代码验证
|
||
- **数据源路由**: 基于市场选择的自动路由
|
||
- **英文界面**: 国际化就绪
|
||
|
||
**关键文件**:
|
||
```
|
||
cli/main.py - 主CLI应用程序
|
||
cli/utils.py - 市场选择和验证工具
|
||
```
|
||
|
||
**流程**:
|
||
```
|
||
用户输入 → 市场选择 → 股票代码验证 → 数据源分配
|
||
```
|
||
|
||
### 2. 多智能体框架
|
||
|
||
#### 智能体层次结构
|
||
```
|
||
TradingAgentsGraph
|
||
├── 分析师团队
|
||
│ ├── 市场分析师 (技术分析)
|
||
│ ├── 基本面分析师 (财务分析)
|
||
│ └── 新闻分析师 (情绪分析)
|
||
├── 研究团队
|
||
│ ├── 多头研究员 (积极情绪)
|
||
│ └── 空头研究员 (风险分析)
|
||
├── 交易团队
|
||
│ ├── 交易员智能体 (决策制定)
|
||
│ └── 风险管理员 (风险评估)
|
||
└── 反思系统
|
||
└── 反思智能体 (质量控制)
|
||
```
|
||
|
||
**关键文件**:
|
||
```
|
||
tradingagents/graph/trading_graph.py - 主智能体编排
|
||
tradingagents/agents/analysts/ - 分析师实现
|
||
tradingagents/agents/researchers/ - 研究团队
|
||
tradingagents/agents/trader/ - 交易决策
|
||
```
|
||
|
||
### 3. 多LLM提供商层
|
||
|
||
#### 提供商架构
|
||
```
|
||
LLM请求 → 提供商路由器 → 特定适配器 → API调用 → 响应
|
||
```
|
||
|
||
#### 支持的提供商
|
||
1. **百炼(DashScope)**
|
||
- 模型: qwen-turbo, qwen-plus, qwen-max, qwen-max-longcontext
|
||
- 中文语言优化
|
||
- 中国用户首选
|
||
|
||
2. **OpenAI**
|
||
- 模型: GPT-4o, GPT-4o-mini, o1, o3, o4-mini
|
||
- 英文内容全球标准
|
||
|
||
3. **Google AI**
|
||
- 模型: Gemini 2.0 Flash, Gemini 2.5 Flash
|
||
- 高级推理能力
|
||
|
||
4. **Anthropic**
|
||
- 模型: Claude 3.5 Haiku, Claude 3.5 Sonnet, Claude 4
|
||
- 强大的分析能力
|
||
|
||
**关键文件**:
|
||
```
|
||
tradingagents/graph/trading_graph.py - LLM初始化
|
||
tradingagents/agents/utils/memory.py - Embedding服务
|
||
cli/utils.py - 提供商选择
|
||
```
|
||
|
||
#### 智能回退系统
|
||
```
|
||
主要提供商 (百炼)
|
||
↓ (如果不可用)
|
||
次要提供商 (OpenAI)
|
||
↓ (如果不可用)
|
||
第三提供商 (Google/Anthropic)
|
||
↓ (如果全部失败)
|
||
错误处理 & 用户通知
|
||
```
|
||
|
||
### 4. 数据层架构
|
||
|
||
#### 多市场数据源
|
||
|
||
**美股市场**:
|
||
```
|
||
Yahoo Finance API → 数据验证 → 缓存存储 → 智能体消费
|
||
```
|
||
|
||
**中国A股市场**:
|
||
```
|
||
通达信API → 数据优化 → 缓存存储 → 智能体消费
|
||
```
|
||
|
||
#### 数据流架构
|
||
```
|
||
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
||
│ 数据请求 │ -> │ 源路由器 │ -> │ 数据提供商 │
|
||
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
||
│ 缓存管理器 │ <- │ 数据处理器 │ <- │ 原始数据 │
|
||
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
||
```
|
||
|
||
**关键文件**:
|
||
```
|
||
tradingagents/dataflows/interface.py - 数据接口
|
||
tradingagents/dataflows/tdx_utils.py - 通达信集成
|
||
tradingagents/dataflows/optimized_china_data.py - 中国数据优化
|
||
tradingagents/dataflows/chinese_finance_utils.py - 中国财经工具
|
||
tradingagents/dataflows/stock_data_service.py - 统一数据服务
|
||
```
|
||
|
||
#### 支持的中国交易所
|
||
- **上海证券交易所**: 60xxxx (如 600036 - 招商银行)
|
||
- **深圳证券交易所**: 00xxxx (如 000001 - 平安银行)
|
||
- **创业板**: 30xxxx (如 300001 - 科技股)
|
||
- **科创板**: 68xxxx (如 688001 - 创新公司)
|
||
|
||
### 5. 缓存与存储层
|
||
|
||
#### 三层缓存架构
|
||
|
||
**第一层: Redis (高性能缓存)**
|
||
```
|
||
内存基础 → 亚毫秒访问 → 实时数据
|
||
```
|
||
|
||
**第二层: MongoDB (持久化存储)**
|
||
```
|
||
文档基础 → 结构化存储 → 历史数据 & 分析
|
||
```
|
||
|
||
**第三层: 文件缓存 (回退方案)**
|
||
```
|
||
文件基础 → 可靠回退 → 始终可用
|
||
```
|
||
|
||
#### 缓存管理流程
|
||
```
|
||
数据请求
|
||
↓
|
||
Redis检查 (第一层)
|
||
↓ (如果未命中)
|
||
MongoDB检查 (第二层)
|
||
↓ (如果未命中)
|
||
文件缓存检查 (第三层)
|
||
↓ (如果未命中)
|
||
外部API调用
|
||
↓
|
||
存储到所有层
|
||
```
|
||
|
||
**关键文件**:
|
||
```
|
||
tradingagents/dataflows/cache_manager.py - 缓存协调
|
||
tradingagents/dataflows/db_cache_manager.py - 数据库缓存
|
||
tradingagents/dataflows/integrated_cache.py - 集成缓存系统
|
||
tradingagents/dataflows/adaptive_cache.py - 自适应缓存策略
|
||
tradingagents/config/database_manager.py - 数据库连接
|
||
tradingagents/config/mongodb_storage.py - MongoDB操作
|
||
```
|
||
|
||
#### 数据库模式设计
|
||
|
||
**MongoDB集合**:
|
||
```
|
||
stock_data - 历史股价和成交量
|
||
analysis_results - 智能体分析输出
|
||
token_usage - LLM API使用跟踪
|
||
cache_metadata - 缓存管理信息
|
||
user_sessions - 用户交互历史
|
||
```
|
||
|
||
**Redis键模式**:
|
||
```
|
||
stock:{symbol}:{date} - 日股票数据
|
||
analysis:{symbol}:{timestamp} - 分析结果
|
||
news:{symbol}:{date} - 新闻情绪数据
|
||
cache:meta:{key} - 缓存元数据
|
||
```
|
||
|
||
## 🔄 数据流模式
|
||
|
||
### 1. 分析工作流
|
||
```
|
||
用户输入 (CLI)
|
||
↓
|
||
市场选择 & 验证
|
||
↓
|
||
数据获取 (多源)
|
||
↓
|
||
智能体分析 (多LLM)
|
||
↓
|
||
结果聚合
|
||
↓
|
||
输出生成
|
||
↓
|
||
缓存存储
|
||
```
|
||
|
||
### 2. 缓存工作流
|
||
```
|
||
数据请求
|
||
↓
|
||
缓存键生成
|
||
↓
|
||
第一层 (Redis) 检查
|
||
↓ (如果未命中)
|
||
第二层 (MongoDB) 检查
|
||
↓ (如果未命中)
|
||
第三层 (文件) 检查
|
||
↓ (如果未命中)
|
||
外部API调用
|
||
↓
|
||
多层存储
|
||
↓
|
||
响应用户
|
||
```
|
||
|
||
### 3. 错误处理工作流
|
||
```
|
||
组件故障
|
||
↓
|
||
错误检测
|
||
↓
|
||
回退激活
|
||
↓
|
||
替代路径
|
||
↓
|
||
用户通知 (如需要)
|
||
↓
|
||
优雅降级
|
||
```
|
||
|
||
## 🛡️ 可靠性与可扩展性特性
|
||
|
||
### 高可用性设计
|
||
- **多LLM回退**: 自动提供商切换
|
||
- **多层缓存**: 冗余数据存储
|
||
- **优雅降级**: 系统在功能减少的情况下继续运行
|
||
- **错误恢复**: 自动重试机制
|
||
|
||
### 可扩展性特性
|
||
- **数据库集群**: MongoDB副本集
|
||
- **缓存扩展**: Redis集群支持
|
||
- **负载均衡**: 多个API端点
|
||
- **水平扩展**: 无状态智能体设计
|
||
|
||
### 性能优化
|
||
- **智能缓存**: 自适应缓存策略
|
||
- **连接池**: 数据库连接管理
|
||
- **异步处理**: 非阻塞操作
|
||
- **数据压缩**: 高效存储格式
|
||
|
||
## 🔧 配置管理
|
||
|
||
### 基于环境的配置
|
||
```
|
||
.env文件 → 环境变量 → 运行时配置
|
||
```
|
||
|
||
### 配置层次结构
|
||
```
|
||
1. 环境变量 (.env)
|
||
2. 默认配置 (default_config.py)
|
||
3. 运行时覆盖 (main.py)
|
||
4. 动态配置 (config.py)
|
||
```
|
||
|
||
### 配置类别
|
||
- **API密钥**: LLM提供商和数据源
|
||
- **数据库设置**: MongoDB和Redis配置
|
||
- **缓存设置**: 缓存TTL和策略
|
||
- **市场设置**: 支持的市场和交易所
|
||
- **智能体设置**: 模型选择和参数
|
||
|
||
## 📊 监控与分析
|
||
|
||
### 系统指标
|
||
- **API使用**: Token消费和成本
|
||
- **缓存性能**: 命中率和响应时间
|
||
- **数据库性能**: 查询时间和存储使用
|
||
- **错误率**: 按组件的故障率
|
||
|
||
### 业务指标
|
||
- **分析质量**: 智能体性能指标
|
||
- **用户参与**: 使用模式和偏好
|
||
- **市场覆盖**: 支持的股票代码和交易所
|
||
- **响应时间**: 端到端分析持续时间
|
||
|
||
## 🚀 部署架构
|
||
|
||
### 开发环境
|
||
```
|
||
本地机器 → 文件缓存 → 单一LLM提供商 → 基础功能
|
||
```
|
||
|
||
### 生产环境
|
||
```
|
||
应用服务器 → Redis集群 → MongoDB副本集 → 多LLM → 完整功能
|
||
```
|
||
|
||
### 云部署选项
|
||
- **数据库**: MongoDB Atlas, Redis Cloud
|
||
- **应用程序**: Docker容器, Kubernetes
|
||
- **负载均衡**: 应用程序负载均衡器
|
||
- **监控**: 应用程序性能监控
|
||
|
||
## 🔮 未来架构增强
|
||
|
||
### 计划改进
|
||
- **微服务架构**: 服务分解
|
||
- **事件驱动架构**: 异步消息处理
|
||
- **机器学习管道**: 自动模型训练
|
||
- **实时流处理**: 实时市场数据处理
|
||
- **全球CDN**: 分布式缓存网络
|
||
|
||
### 扩展点
|
||
- **新市场支持**: 额外的交易所和地区
|
||
- **新LLM提供商**: 额外的AI服务
|
||
- **自定义智能体**: 用户定义的分析智能体
|
||
- **插件系统**: 第三方集成
|
||
- **API网关**: 外部服务访问
|
||
|
||
---
|
||
|
||
该架构为全球金融市场分析提供了强大、可扩展的基础,同时保持了未来增强和集成的灵活性。
|