TradingAgents-CN 研究深度五级体系实战指南:从快速分析到全面分析的统一化实现与源码解读
2026/9/12 5:33:37 网站建设 项目流程

TradingAgents-CN 研究深度五级体系实战指南:从快速分析到全面分析的统一化实现与源码解读

【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN

导读

本文档围绕 TradingAgents-CN(基于多智能体 LLM 的中文金融交易框架)中的"研究深度统一为 5 个级别"这一修复与增强工作展开。它解决了一个真实的体验割裂问题:同一套系统内,Web 界面、Frontend 界面与后端服务对"研究深度"的支持层级不一致,导致用户在不同入口看到的能力与耗时预期各不相同。读完本文,你将掌握五级研究深度的完整配置矩阵(辩论轮次、风险讨论轮次、记忆与在线工具的开关)、前后端改造的具体落点、research_depth字段在 API 链路中的流转方式,以及如何从源码层面验证与扩展这套体系。

背景:为什么需要统一为 5 个研究深度级别

在修复之前,系统内存在三套互不一致的"深度"定义:

  • Web 界面(web/):已支持 5 个级别(1-5 级);
  • Frontend 界面(frontend/):只支持 3 个级别(快速、标准、深度);
  • 后端服务(app/):同样只支持 3 个级别(快速、标准、深度)。

这种不一致带来两个直接后果:一是用户体验割裂,用户在前端看到的能力与 Web 界面不同;二是系统分析能力没有被充分利用——中间缺少了"基础"(2 级)与"全面"(5 级)两档,既没有低成本的过渡档,也没有最高规格的完整报告档。

本次修复的目标很明确:将前端与后端统一为 5 个研究深度级别,与 Web 界面保持一致,同时保证旧有的 3 个级别(快速、标准、深度)继续有效,做到向后兼容。

五级研究深度配置矩阵

统一后的 5 个级别,每个级别在"辩论轮次、风险讨论轮次、记忆、在线工具、预期耗时、适用场景"六个维度上有明确区分:

级别名称辩论轮次风险讨论记忆在线工具预期耗时适用场景
1 级快速分析1 轮1 轮2-4 分钟日常快速决策、市场概览
2 级基础分析1 轮1 轮4-6 分钟常规投资决策、基础研究
3 级标准分析1 轮2 轮6-10 分钟重要投资决策(推荐)
4 级深度分析2 轮2 轮10-15 分钟多轮辩论,深度研究
5 级全面分析3 轮3 轮15-25 分钟最全面的分析报告

注:上述耗时与文档中的初始设计值一致;实际运行中,frontend/src/views/Analysis/SingleAnalysis.vuedepthOptions已根据实际测试数据将耗时标注调整为2-5 / 3-6 / 4-8 / 6-11 / 8-16分钟,更贴近真实执行情况,两个来源可互为参照。

各级别定位说明

  • ⚡ 1 级 - 快速分析:1 轮辩论 + 1 轮风险讨论,禁用记忆与在线工具、使用缓存数据。速度最快、成本最低,适合日常市场监控、快速获取市场概况。
  • 📈 2 级 - 基础分析:1 轮辩论 + 1 轮风险讨论,启用记忆与在线工具以获取最新数据。速度较快且包含最新行情,适合常规投资决策与基础研究。
  • 🎯 3 级 - 标准分析(推荐):1 轮辩论 + 2 轮风险讨论,平衡速度与质量,性价比最高,是系统默认级别,适合重要投资决策与标准研究流程。
  • 🔍 4 级 - 深度分析:2 轮辩论 + 2 轮风险讨论,通过多轮辩论确保分析全面性,适合重大投资决策与深度研究。
  • 🏆 5 级 - 全面分析:3 轮辩论 + 3 轮风险讨论,最全面的分析、最高质量、结果最可靠,适合最重要的投资决策与完整研究报告撰写。

后端实现:数据模型与分析配置的改造

1. 数据模型层:AnalysisParameters 默认值

后端在 app/models/analysis.py 的AnalysisParameters模型中,将research_depth定义为字符串字段,默认值为"标准"(3 级),并在 docstring 中完整记录五级说明:

class AnalysisParameters(BaseModel): """分析参数模型 研究深度说明: - 快速: 1级 - 快速分析 (2-4分钟) - 基础: 2级 - 基础分析 (4-6分钟) - 标准: 3级 - 标准分析 (6-10分钟,推荐) - 深度: 4级 - 深度分析 (10-15分钟) - 全面: 5级 - 全面分析 (15-25分钟) """ market_type: str = "A股" analysis_date: Optional[datetime] = None research_depth: str = "标准" # 默认使用3级标准分析(推荐) ...

该模型同时被单股分析(SingleAnalysisRequest)、批量分析(BatchAnalysisRequest)、分析任务(AnalysisTask)与分析批次(AnalysisBatch)复用,因此research_depth一经统一,整条 API 链路自动获得一致的默认行为。

2. 服务层:create_analysis_config 的五级分支

核心改造落在 app/services/simple_analysis_service.py 的create_analysis_config()。该函数有三个值得注意的设计:

其一,输入兼容数字与中文两种形式。函数开头先将数字(1-5)或数字字符串("1"-"5")通过numeric_to_chinese映射转换为中文等级,再进入五级分支;无效值(未知字符串、非法数字、错误类型)一律回退到"标准"并输出告警日志:

numeric_to_chinese = { 1: "快速", 2: "基础", 3: "标准", 4: "深度", 5: "全面" } if isinstance(research_depth, (int, float)): research_depth = int(research_depth) if research_depth in numeric_to_chinese: chinese_depth = numeric_to_chinese[research_depth] research_depth = chinese_depth else: research_depth = "标准" elif isinstance(research_depth, str) and research_depth.isdigit(): # 字符串数字同样映射为中文等级 ...

其二,五级分支分别覆写四个关键配置项max_debate_rounds(辩论轮次)、max_risk_discuss_rounds(风险讨论轮次)、memory_enabled(记忆开关)、online_tools(在线工具开关):

if research_depth == "快速": # 1级 - 快速分析 config["max_debate_rounds"] = 1 config["max_risk_discuss_rounds"] = 1 config["memory_enabled"] = False # 禁用记忆以加速 config["online_tools"] = True # 统一使用在线工具,避免离线工具的各种问题 elif research_depth == "基础": # 2级 - 基础分析 config["max_debate_rounds"] = 1 config["max_risk_discuss_rounds"] = 1 config["memory_enabled"] = True config["online_tools"] = True elif research_depth == "标准": # 3级 - 标准分析(推荐) config["max_debate_rounds"] = 1 config["max_risk_discuss_rounds"] = 2 config["memory_enabled"] = True config["online_tools"] = True elif research_depth == "深度": # 4级 - 深度分析 config["max_debate_rounds"] = 2 config["max_risk_discuss_rounds"] = 2 config["memory_enabled"] = True config["online_tools"] = True elif research_depth == "全面": # 5级 - 全面分析 config["max_debate_rounds"] = 3 config["max_risk_discuss_rounds"] = 3 config["memory_enabled"] = True config["online_tools"] = True

需要留意一处与设计文档的差异:当前仓库源码中1 级(快速)的online_tools实际为True(注释说明"统一使用在线工具,避免离线工具的各种问题"),而文档中标注为关闭在线工具、使用缓存数据。这说明实现层面为了数据源稳定性做了一次实用化的权衡——以仓库源码为准。另外,配置组装完成后还会执行config["research_depth"] = research_depth,把最终生效的级别写回配置字典,供下游工具函数与日志读取。

其三,配置基座来自 TradingAgents 的默认配置。config = DEFAULT_CONFIG.copy()取自 tradingagents/default_config.py,其默认值max_debate_rounds=1max_risk_discuss_rounds=1online_tools由环境变量ONLINE_TOOLS_ENABLED控制——五级分支正是对这些默认值做精细化覆写。

3. 底层原理:轮次如何驱动图执行

研究深度的轮次参数最终作用于交易图(TradingAgents Graph)的条件路由逻辑。在 tradingagents/graph/conditional_logic.py 中,ConditionalLogic接收max_debate_roundsmax_risk_discuss_rounds

def __init__(self, max_debate_rounds=1, max_risk_discuss_rounds=1): self.max_debate_rounds = max_debate_rounds self.max_risk_discuss_rounds = max_risk_discuss_rounds
  • 投资辩论的终止条件:max_count = 2 * self.max_debate_rounds,即"每轮双人发言 × 轮数"(should_continue_debate);
  • 风险讨论的终止条件:max_count = 3 * self.max_risk_discuss_rounds,即"每轮三方发言 × 轮数"(should_continue_risk_analysis)。

由此可见,research_depth选择 5 级(3 轮辩论)时,投资辩论最多进行 6 次发言;选择 1 级时则只有 2 次发言——这正是各级别耗时差异的根本来源。可以推断,轮次越多、发言次数越多,LLM 调用次数与 Token 消耗随之线性增长,这也是"成本优化"设计意图的底层依据。

前端实现:单股分析与批量分析的选项改造

1. SingleAnalysis.vue:5 个深度卡片

frontend/src/views/Analysis/SingleAnalysis.vue 定义了 5 个深度选项(当前仓库的耗时已按实测数据微调):

// 深度选项(5个级别,基于实际测试数据更新) const depthOptions = [ { icon: '⚡', name: '1级 - 快速分析', description: '基础数据概览,快速决策', time: '2-5分钟' }, { icon: '📈', name: '2级 - 基础分析', description: '常规投资决策', time: '3-6分钟' }, { icon: '🎯', name: '3级 - 标准分析', description: '技术+基本面,推荐', time: '4-8分钟' }, { icon: '🔍', name: '4级 - 深度分析', description: '多轮辩论,深度研究', time: '6-11分钟' }, { icon: '🏆', name: '5级 - 全面分析', description: '最全面的分析报告', time: '8-16分钟' } ]

页面渲染为可点击的卡片式选择器(.depth-selector/.depth-option),选中态通过analysisForm.researchDepth === index + 1判断;表单默认值researchDepth: 3(在onMounted中会从用户偏好加载覆盖)。提交分析时,通过getDepthDescription(analysisForm.researchDepth)将数字级别转换为中文值(1-5分别对应快速/基础/标准/深度/全面)写入请求的research_depth字段。此外,页面还内置"模型推荐"联动:checkModelSuitability()依据所选级别调用recommendModels(depthName),为快速模型与深度模型给出配套建议。

2. BatchAnalysis.vue:5 个下拉选项

批量分析页面 frontend/src/views/Analysis/BatchAnalysis.vue 将深度做成下拉选择,选项值与文档保持一致:

<el-form-item label="分析深度"> <el-select v-model="batchForm.depth" placeholder="选择深度" size="large" style="width: 100%"> <el-option label="⚡ 1级 - 快速分析 (2-4分钟/只)" value="1" /> <el-option label="📈 2级 - 基础分析 (4-6分钟/只)" value="2" /> <el-option label="🎯 3级 - 标准分析 (6-10分钟/只,推荐)" value="3" /> <el-option label="🔍 4级 - 深度分析 (10-15分钟/只)" value="4" /> <el-option label="🏆 5级 - 全面分析 (15-25分钟/只)" value="5" /> </el-select> </el-form-item>

注意此处下拉绑定的是数字字符串"1"-"5"),直接以research_depth: batchForm.depth提交——得益于后端create_analysis_config对字符串数字的兼容处理,数字值会被自动映射为对应中文等级,前后端协议因此保持宽松一致。批量页同样会在onMounted中从用户偏好(userPrefs.default_depth)加载默认深度。

3. 类型定义:types/analysis.ts

frontend/src/types/analysis.ts 将research_depth收敛为五值联合类型,作为前端 TypeScript 侧的类型约束:

// 分析参数 export interface AnalysisParameters { market_type: 'A股' | '美股' | '港股' analysis_date?: string research_depth: '快速' | '基础' | '标准' | '深度' | '全面' selected_analysts: string[] custom_prompt?: string include_charts: boolean language: 'zh-CN' | 'en-US' }

影响范围与兼容性

本次改动覆盖的文件(与仓库现状一致):

前端

  • frontend/src/views/Analysis/SingleAnalysis.vue— 单股分析页面(5 个深度卡片 + 模型推荐联动)
  • frontend/src/views/Analysis/BatchAnalysis.vue— 批量分析页面(5 个下拉选项)
  • frontend/src/views/Analysis/index.vue— 分析首页
  • frontend/src/types/analysis.ts— 类型定义

后端

  • app/models/analysis.pyAnalysisParameters数据模型(默认"标准"
  • app/services/simple_analysis_service.pycreate_analysis_config五级分支

兼容性要点

  • 向后兼容:旧的 3 个级别(快速、标准、深度)仍然有效;
  • 新增 2 个级别:"基础"(2 级)与"全面"(5 级);
  • 默认值统一为"标准"(3 级),且前端数字输入与后端中文映射双向兼容。

使用建议:按场景选择级别

使用场景推荐级别理由
日常市场监控1-2 级快速获取市场概况,成本低
常规投资决策2-3 级平衡速度和质量
重要投资决策3-4 级确保分析质量,多轮辩论
重大资金投入4-5 级最全面的风险评估
研究报告撰写4-5 级需要详细的分析内容

迁移指南

对于现有用户

  • 之前使用"快速" → 对应现在的 1 级;
  • 之前使用"标准" → 对应现在的 3 级(推荐);
  • 之前使用"深度" → 对应现在的 4 级;
  • 新增"基础"(2 级)与"全面"(5 级)可选用。

对于开发者

  • 前端发送的research_depth字段取值为:"快速"|"基础"|"标准"|"深度"|"全面"(或数字"1"-"5",后端自动映射);
  • 后端接收并处理这 5 个值,无效输入回退到"标准"
  • 默认值统一为"标准",前端默认选中 3 级。

测试与验证

前端测试:单股分析页面显示 5 个深度选项;批量分析页面显示 5 个深度选项;默认选中"标准"(3 级);每个选项显示正确的图标、名称、描述与预期耗时。

后端测试:接收 5 个不同的research_depth值;正确配置辩论轮次与风险讨论轮次;正确启用/禁用记忆与在线工具;默认值为"标准"

集成测试:提交不同深度级别的分析任务;验证实际执行的配置是否正确;验证耗时是否符合预期;验证分析质量是否符合级别要求。

仓库中已有对应类型的验证用例可作参考,例如 tests/test_api_analysis.py 以"快速"级别提交单股分析 API 请求(并只选择market分析师以缩短测试链路),tests/test_300750_final.py 则直接以research_depth = '标准'构造DEFAULT_CONFIG副本后初始化工具包,均验证了research_depth从请求到执行配置的贯通。此外,app/routers/analysis.py 中任务状态与结果查询接口均会回读research_depth字段(历史记录缺失时回退为"快速"),说明该字段同时被持久化用于结果展示与追溯。

总结

研究深度五级体系是 TradingAgents-CN 中"统一体验"与"精细控制"结合的典型改动:它让 Web、Frontend、后端三方对"分析深度"的理解完全对齐,以 6 个可量化维度(辩论轮次、风险讨论轮次、记忆、在线工具、耗时、适用场景)为每个级别建立清晰边界,并通过默认值回退、数字/中文双输入兼容、历史记录回读等手段保证向后兼容与鲁棒性。对于使用者,它提供了从 2 分钟快览到 25 分钟深度报告的成本-质量梯度;对于开发者,其"模型层默认值 + 服务层配置分支 + 前端选项枚举"的分层改造模式,也适合作为同类参数体系(如市场类型、分析师组合)扩展的参考模板。

【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询