12 KiB
12 KiB
TradingAgents 系统架构指南
📖 概述
本文档提供TradingAgents系统架构的全面概览,包括中国市场功能集成、数据库系统和多LLM支持。该架构设计注重可扩展性、可靠性和全球市场覆盖。
🏗️ 高层架构
┌─────────────────────────────────────────────────────────────────┐
│ TradingAgents 系统 │
├─────────────────────────────────────────────────────────────────┤
│ CLI界面 (市场选择 + 配置) │
├─────────────────────────────────────────────────────────────────┤
│ 多智能体框架 │
│ ├── 市场分析师 ├── 基本面分析师 │
│ ├── 新闻分析师 ├── 多空研究员 │
│ └── 交易员智能体 └── 风险管理 │
├─────────────────────────────────────────────────────────────────┤
│ 多LLM提供商层 │
│ ├── 百炼(通义千问) ├── OpenAI(GPT) │
│ ├── Google(Gemini) └── Anthropic(Claude) │
├─────────────────────────────────────────────────────────────────┤
│ 数据层 │
│ ├── 美股市场 (Yahoo Finance) │
│ ├── 中国A股 (Tushare 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调用 → 响应
支持的提供商
-
百炼(DashScope)
- 模型: qwen-turbo, qwen-plus, qwen-max, qwen-max-longcontext
- 中文语言优化
- 中国用户首选
-
OpenAI
- 模型: GPT-4o, GPT-4o-mini, o1, o3, o4-mini
- 英文内容全球标准
-
Google AI
- 模型: Gemini 2.0 Flash, Gemini 2.5 Flash
- 高级推理能力
-
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股市场:
Tushare API → 数据优化 → 缓存存储 → 智能体消费
数据流架构
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ 数据请求 │ -> │ 源路由器 │ -> │ 数据提供商 │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ 缓存管理器 │ <- │ 数据处理器 │ <- │ 原始数据 │
└─────────────────┘ └──────────────────┘ └─────────────────┘
关键文件:
tradingagents/dataflows/interface.py - 数据接口
tradingagents/dataflows/tushare_utils.py - Tushare集成
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网关: 外部服务访问
该架构为全球金融市场分析提供了强大、可扩展的基础,同时保持了未来增强和集成的灵活性。