| 层级 | v0.1.x | v1.0.0-preview | 升级意义 |
|---|---|---|---|
| **前端框架** | Streamlit | Vue 3 + Vite | 从原型工具升级为生产级SPA |
| **后端框架** | Streamlit | FastAPI + Uvicorn | 性能提升10倍,支持高并发 |
| **数据库** | 可选MongoDB | MongoDB + Redis | 引入Redis缓存层,降低延迟 |
| **API架构** | 单体应用 | RESTful + WebSocket | 支持实时进度推送和双向通信 |
| **部署方式** | 本地/Docker | 多架构Docker + GitHub Actions | 支持x86_64和ARM64,CI/CD自动化 |
核心设计思想:
AgentState 统一状态管理InvestDebateState 和 RiskDebateState 专用状态项目采用策略模式实现多数据源支持,核心抽象在 dataflows/interface.py:
# 统一接口示例
def get_china_stock_data_unified(ticker: str, start_date: str, end_date: str) -> str:
# 自动选择最佳数据源(Tushare → AKShare → BaoStock)
# 智能日期范围处理
# 多级缓存查询
缓存实现亮点:
AdaptiveCache 根据数据访问频率自动调整策略在 constants/data_sources.py 中定义了统一的数据源注册机制:
class DataSourceCode(str, Enum):
MONGODB = "mongodb" # 最高优先级缓存
TUSHARE = "tushare" # 专业A股数据
AKSHARE = "akshare" # 开源金融数据
YFINANCE = "yfinance" # 美股数据
# ... 更多数据源
DATA_SOURCE_REGISTRY: Dict[str, DataSourceInfo] = {
# 详细元数据配置
}
设计优势:
项目采用适配器模式实现多LLM提供商支持,核心实现在 trading_graph.py 的 create_llm_by_provider 函数:
def create_llm_by_provider(
provider: str,
model: str,
backend_url: str,
temperature: float,
max_tokens: int,
timeout: int,
api_key: str = None
):
# 统一创建LLM实例,支持10+提供商
| 提供商 | 适配器文件 | 特点 | 成本优化 |
|---|---|---|---|
| **OpenAI** | 原生支持 | Function Calling | 支持 |
| **Google AI** | [google_openai_adapter.py](tradingagents/llm_adapters/google_openai_adapter.py:1) | OpenAI兼容模式 | 支持 |
| **阿里百炼** | [dashscope_openai_adapter.py](tradingagents/llm_adapters/dashscope_openai_adapter.py:1) | 原生工具调用 | 支持 |
| **DeepSeek** | [deepseek_adapter.py](tradingagents/llm_adapters/deepseek_adapter.py:1) | Token统计 | 支持 |
| **智谱AI** | [openai_compatible_base.py](tradingagents/llm_adapters/openai_compatible_base.py:1) | GLM系列 | 支持 |
| **Anthropic** | 原生支持 | Claude系列 | 支持 |
| **SiliconFlow** | OpenAI兼容 | 模型聚合平台 | 支持 |
| **OpenRouter** | OpenAI兼容 | 统一路由 | 支持 |
| **Ollama** | OpenAI兼容 | 本地部署 | 支持 |
| **自定义** | [openai_compatible_base.py](tradingagents/llm_adapters/openai_compatible_base.py:1) | 任意OpenAI兼容API | 支持 |
核心创新:支持快速模型和深度模型来自不同提供商
# 配置示例
config = {
"quick_provider": "dashscope", # 快速思考:阿里百炼
"deep_provider": "openai", # 深度思考:OpenAI
"quick_think_llm": "qwen-turbo",
"deep_think_llm": "gpt-4"
}
优势:
项目经历了从文件配置到数据库配置的演进:
旧系统(已废弃):
config_manager.py - JSON文件存储采用 12-Factor App 原则,关键配置通过环境变量注入:
# LLM提供商配置
DASHSCOPE_API_KEY=sk-xxx
OPENAI_API_KEY=sk-xxx
GOOGLE_API_KEY=xxx
# 数据库配置
MONGODB_CONNECTION_STRING=mongodb://...
REDIS_URL=redis://...
# 功能开关
ONLINE_TOOLS_ENABLED=true
ONLINE_NEWS_ENABLED=true
REALTIME_DATA_ENABLED=false
工具系统采用插件化设计:
Toolkit 统一管理所有工具BaseProvider 抽象基类# docker-compose.yml 核心服务
services:
backend:
build:
context: .
dockerfile: Dockerfile.backend
# 支持 amd64 和 arm64
platform: linux/amd64,linux/arm64
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
# Nginx静态资源服务
mongodb:
image: mongo:4.4
# 数据持久化
redis:
image: redis:7-alpine
# 缓存服务
多架构支持:
健康检查机制:
/api/healthredis-cli pinglogging_manager.py 集中管理性能数据收集:
🔍 分析性能统计报告
========================================
📊 分析师团队
• Market Analyst 12.34秒 (35.2%)
• Fundamentals Analyst 8.56秒 (24.3%)
📊 工具调用
• tools_market 5.23秒 (14.8%)
📊 研究团队
• Bull Researcher 3.45秒 (9.8%)
• Bear Researcher 4.12秒 (11.7%)
========================================
🎯 总执行时间: 35.12秒 (0.59分钟)
📈 节点总数: 12
⏱️ 平均节点耗时: 2.93秒
🐌 最慢节点: Market Analyst (12.34秒)
⚡ 最快节点: Msg Clear Market (0.12秒)
1. 适配器模式(Adapter Pattern)
llm_adapters/ 文件dataflows/cache/adaptive.pyagents/__init__.pygraph/trading_graph.py 的 _send_progress_updateutils/logging_manager.py类型提示:全面使用 Python 3.12+ 类型提示
def get_stock_news_unified(
stock_code: str,
max_news: int = 100,
model_info: str = ""
) -> str:
...
错误处理:分级错误处理策略
"""
统一新闻获取工具
Args:
stock_code (str): 股票代码 (支持A股如000001、港股如0700.HK、美股如AAPL)
max_news (int): 最大新闻数量,默认100
model_info (str): 当前使用的模型信息,用于特殊处理
Returns:
str: 格式化的新闻内容
"""
LangGraph异步支持:
# 使用异步流式处理
async for chunk in self.graph.astream(init_agent_state):
await self._send_progress_update(chunk, progress_callback)
数据库连接池:
智能缓存预热:
# 在系统启动时预热热门股票数据
async def warmup_cache():
hot_stocks = ["000001", "600036", "AAPL", "TSLA"]
for stock in hot_stocks:
await cache.preload(stock)
缓存淘汰策略:
批处理:合并多个请求减少API调用次数
重试机制:指数退避重试策略
超时控制:可配置的超时时间,防止长时间阻塞
Token优化:智能截断和压缩长文本
安全存储:
数据隔离:
研究定位:
tradingagents/graph/trading_graph.py - 主引擎tradingagents/graph/setup.py - 工作流配置tradingagents/graph/conditional_logic.py - 条件逻辑tradingagents/agents/__init__.py - 智能体工厂tradingagents/agents/analysts/ - 分析师实现tradingagents/agents/researchers/ - 研究员实现tradingagents/agents/risk_mgmt/ - 风控实现tradingagents/dataflows/interface.py - 统一接口tradingagents/dataflows/data_source_manager.py - 数据源管理tradingagents/dataflows/cache/ - 缓存实现tradingagents/config/config_manager.py - 配置管理(已废弃)tradingagents/default_config.py - 默认配置还没有人回复