# 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调用 → 响应 ``` #### 支持的提供商 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股市场**: ``` 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网关**: 外部服务访问 --- 该架构为全球金融市场分析提供了强大、可扩展的基础,同时保持了未来增强和集成的灵活性。