一个LangGraph实战案例:TradingAgents-Astock 12阶段分析流水线的完整代码拆解
【免费下载链接】TradingAgents-astockA股多Agent投研框架 — 适配A股数据源(龙虎榜/游资/解禁等),7位分析师基于A股规则的辩论决策,基于TradingAgents深度改造,适配大A。A-share multi-agent investment research framework — 7 AI analysts, bull/bear debate, risk assessment。项目地址: https://gitcode.com/gh_mirrors/tr/TradingAgents-astock
TradingAgents-Astock 是一个基于 LangGraph 构建的 A股多Agent投研框架:7 位 AI 分析师分工采集数据,再经质量门控、多空辩论、风控辩论,最终由组合经理输出买卖决策。本文不堆代码,带你看清这条12 阶段分析流水线在 tradingagents/graph/ 目录下的完整实现思路,是学习 LangGraph 状态图、条件边和 ToolNode 的绝佳实战样本。
一、全景:12 个阶段如何串成流水线 📊
Web 端把整条流程显式定义为 12 个阶段,源码见 web/progress.py:
| 阶段 | 名称 | 职责 |
|---|---|---|
| 1-7 | 技术分析 / 情绪 / 新闻 / 基本面 / 政策 / 游资 / 解禁 | 7 位分析师顺序执行 |
| 8 | 质量门控 | 给 7 份报告打分(A-F) |
| 9 | 多空辩论 | Bull / Bear 研究员对抗 + 研究员经理裁决 |
| 10 | 交易决策 | Trader 生成投资计划 |
| 11 | 风控评估 | 激进 / 保守 / 中性三方风险辩论 |
| 12 | 最终决策 | 组合经理输出 Buy / Hold / Sell |
上图就是整条流水线的拓扑:左侧数据源喂给分析师团队,中间 Bullish / Bearish 辩论,右侧风控小组把关,最后落到 Execution。
二、建图:setup.py 里节点与边的装配方式
核心逻辑在 tradingagents/graph/setup.py 的GraphSetup.setup_graph()。它用 LangGraph 的StateGraph(AgentState)做三件事:
- 注册节点:每位分析师注册三个节点——分析节点(如
"Market Analyst")、消息清理节点(Msg Clear Market)、工具节点(tools_market)。 - 串接顺序边:
START → 第一位分析师,分析师之间顺序传递,最后一位分析师的清理节点接Quality Gate。 - 编织条件边:分析师 → 工具节点 → 分析师自身形成回环,辩论与风控阶段则是多向条件跳转,最后
Portfolio Manager → END。
每个分析师节点背后配一个专属ToolNode,工具清单在 tradingagents/graph/trading_graph.py 的_create_tool_nodes()中定义。以游资追踪师为例,它拥有龙虎榜、北向资金、资金流向、概念板块等 9 个 A 股特色工具——这是该框架适配「大 A」规则的关键。
CLI 运行时可以在左侧面板实时看到 12 个阶段的推进状态,右侧是消息与工具调用日志:
三、条件分支:conditional_logic.py 只有 3 类判断
整条流水线的「转向」全部由 tradingagents/graph/conditional_logic.py 一个类完成,逻辑极简:
工具调用回环(7 个分析师通用):看最后一条消息有没有tool_calls——有,就去tools_xxx节点执行工具,然后回到分析师节点继续推理;没有,说明报告写完了,进清理节点。这就是 LangGraph 中 ReAct 循环的标准写法。
辩论轮数控制:should_continue_debate()检查investment_debate_state["count"] >= 2 * max_debate_rounds,达到轮数上限就交给 Research Manager 裁决,否则按「当前是谁在说」交替路由 Bull / Bear。
风控轮转:should_continue_risk_analysis()让激进 → 保守 → 中性三方循环发言,满3 * max_risk_discuss_rounds轮后进入 Portfolio Manager。
四、质量门控:代码硬检查 + LLM 复审的双层设计
tradingagents/agents/quality_gate.py 是 7 份报告进入辩论前的「质检站」,两层结构很值得借鉴:
- 第一层硬检查(纯代码):空报告直接 F;少于 200 字给 D;报告里出现「无法获取」「工具调用失败」等失败标记占比过高给 D;缺少汇总表格或含「[数据缺失]」标记降为 B / C。
- 第二层 LLM 复审:只有硬检查失败数少于 4 时才调用大模型,让「数据质量审核员」逐份打分并给出 A-F 评级和数据可信度结论;结果写入 state 的
data_quality_summary,供后续辩论阶段引用——低质量报告会明确提示「谨慎使用」。
这种「确定性检查兜底 + LLM 精评」的分层模式,比单纯让大模型自评更稳定、更省 token。
五、执行与断点续跑:trading_graph.py 的三段式生命周期
入口类 TradingAgentsGraph 把一次运行拆成三个清晰的方法:
| 方法 | 作用 |
|---|---|
prepare_graph_run() | 初始化状态、注入历史记忆上下文;开启 checkpoint 时用thread_id(股票代码+日期)恢复断点 |
_run_graph() | graph.invoke()执行整张图,debug 模式改用stream()逐节点打印 |
finalize_graph_run() | 落盘完整状态 JSON、记录决策到记忆日志、清除 checkpoint |
亮点是断点续跑:开启checkpoint_enabled后,图会用 SqliteSaver 重新编译,中断后再次运行同一标的和日期,会从最后一个成功节点继续,而不是从头烧一遍 token。
风控辩论阶段则是三方观点交锋,最终由组合经理统一裁决:
六、如何跑起来体验这条流水线 🚀
不想啃代码的话,克隆仓库后启动内置 Web UI 即可:
git clone https://gitcode.com/gh_mirrors/tr/TradingAgents-astock tradingagents-web打开http://localhost:8501,在侧边栏选 LLM 供应商,输入 6 位 A 股代码和分析日期,点击开始分析,就能实时观看 12 个阶段逐个点亮:
总结
TradingAgents-Astock 证明了 LangGraph 的一个核心范式:把复杂业务拆成无状态节点,用共享 State 传递数据,用条件边控制流转。如果你想复刻自己的多Agent工作流,建议按这个顺序读源码:setup.py 看建图 → conditional_logic.py 看分支 → quality_gate.py 看节点设计 → trading_graph.py 看生命周期管理。四份文件读完,一条生产级 LangGraph 流水线的完整骨架就装进你脑子里了。
【免费下载链接】TradingAgents-astockA股多Agent投研框架 — 适配A股数据源(龙虎榜/游资/解禁等),7位分析师基于A股规则的辩论决策,基于TradingAgents深度改造,适配大A。A-share multi-agent investment research framework — 7 AI analysts, bull/bear debate, risk assessment。项目地址: https://gitcode.com/gh_mirrors/tr/TradingAgents-astock
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考