前言
最近在折腾一个基于 LangGraph + LangChain 的多智能体股票分析系统,目标是:给一个 A 股代码,自动产出一份可以直接读的基本面研报。
踩了很多坑之后总结出 7 个角色的协作架构,这篇文章把核心设计分享出来,希望对做 AI 应用的同学有参考价值。
📌 本文为工程实现笔记,所有涉及股票的示例仅用于演示 Prompt 设计与 Agent 协作逻辑,不构成任何投资建议;文中观点基于个人实测,受样本与时间窗口影响明显。
单模型的问题
一开始我试着用 DeepSeek 一把梭,Prompt 是这样:
你是 A 股分析师,请分析贵州茅台。
结果:
- 输出 80% 是百度百科级别的"公司介绍"
- 财务数据乱编(训练截止日期之前的 2022 年数据当成 2025 年)
- 没有风险点、没有辩证、没有结构
这不是模型不行,是使用方式不对。
为什么要多智能体?
我做了一个对比实验:同一支股票,同一套数据,分别用:
| 方案 | 输出质量打分(满 10) |
|---|---|
| 单模型一把梭 | 4 |
| 9 小节结构化 Prompt | 7 |
| 多智能体协作 | 9 |
多智能体的收益主要来自三点:
- 分工降低幻觉:每个 Agent 只做一件事,注意力更集中
- 辩论提升深度:看多看空强制对立,输出对抗性论证
- 风控兜底合规:最后一层专门检查过度承诺
架构设计:7 个 Agent,4 层协作
┌─ 第 1 层:信息收集(4 并行) ─┐
│ 基本面 · 技术 · 新闻 · 情绪 │
└────────────┬───────────────┘
▼
┌─ 第 2 层:多空辩论 ──────────┐
│ 看多研究员 ⟷ 看空研究员 │
└────────────┬───────────────┘
▼
┌─ 第 3 层:决策整合 ──────────┐
│ 交易员 │
└────────────┬───────────────┘
▼
┌─ 第 4 层:合规复核 ──────────┐
│ 风控 │
└────────────┬───────────────┘
▼
研报输出
核心设计要点
1. 信息层的工具选型
四个分析师有不同的工具链:
# 伪代码示意
FUNDAMENTAL_TOOLS = [
get_financial_report, # Tushare
get_industry_peers, # AkShare
calc_valuation_metrics, # 本地计算
]
TECHNICAL_TOOLS = [
get_kline_data, # AkShare
calc_indicators, # pandas_ta
]
NEWS_TOOLS = [
fetch_recent_news, # 新闻 API
dedupe_and_summarize, # LLM 摘要
]
SENTIMENT_TOOLS = [
fetch_guba_posts, # 东方财富股吧
fetch_xueqiu_posts, # 雪球
]
关键设计原则:能用代码算的绝不让 LLM 算。
MACD、RSI、PE 分位——这些都是确定性计算,用 pandas 秒出结果,把结论丢给 LLM 解读,而不是让 LLM 算数字。
2. 多空辩论的 Prompt 设计
这是最容易踩坑的地方。很多人的第一版 Prompt 是:
请从看多和看空两个角度分析这支股票。
结果 LLM 给你一段"不温不火"的文字——既不真正看多,也不真正看空。
改进方案:两个独立角色,强制站队。
BULL_PROMPT = """
你是一个**只会看多**的研究员。
你的任务:基于以下信息,构建尽可能强的看多论证。
不要考虑反面观点,不要模棱两可,不要兼顾平衡。
你的 KPI 就是把看多论证写得漂亮。
输入信息:
{reports}
输出要求:
- 列出至少 3 条看多论据
- 每条论据必须引用具体数据
- 最后给出一个强烈看多的结论
"""
BEAR_PROMPT = """
你是一个**只会看空**的研究员。
...(与看多对称)
"""
这样逼出来的对抗观点,才真正有信息价值。
3. 交易员:不给买卖点位
交易员的输入是前面所有报告。关键 Prompt 约束:
TRADER_PROMPT = """
综合以下信息做决策:
- 4 份信息报告
- 看多论证 / 看空论证
输出要求:
1. 最终信号:看多 / 中性 / 看空
2. 最有分量的 3 条理由
3. 需要跟踪的 5 个指标(不是买卖点位)
4. ❌ 禁止输出任何具体价格建议(合规红线)
"""
这条 "禁止给买卖点" 是合规底线。
4. 风控:LLM 检查 LLM
风控 Agent 的任务是检查交易员的输出:
RISK_PROMPT = """
你是合规风控专员。请检查以下研报是否符合规范:
【检查项】
1. 是否有"一定""必涨""保证"等过度承诺词?
2. 是否遗漏重大风险点(商誉、政策、黑天鹅)?
3. 是否给了具体买卖价位?(红线)
4. 免责声明是否清晰?
【输入研报】
{trader_output}
【输出】
如发现问题,指出具体位置并返回"需重写";
无问题则返回"通过"。
"""
风控 Agent 用一个更便宜的模型就行(Qwen-Turbo 足够),目的是降本而不是推理。
工程上踩的坑
坑 1:并行调用的限流
4 个信息分析师并行时用同一个 API 会被限速。解决:模型分散——不同分析师用不同的供应商 API(DeepSeek / Qwen / GLM),自然分流。
坑 2:上下文爆炸
信息报告堆起来后 context 能到 30K+。解决:每个 Agent 输出前强制 summarize 到 500 字,原文存向量库供后续查询。
坑 3:多空辩论"同化"
辩论 3 轮后两边都变成"客观中立"。解决:每轮立场锁定,system prompt 里显式写"你只能看多,不能改口"。
坑 4:前端流式输出
整个流程串下来 3-8 分钟,用户容易弃用。解决:WebSocket + 分阶段 stream——每个 Agent 完成就推送进度,用户能看到"基本面分析师已完成 ✓"这种实时反馈。
参考实现
这套架构我们在个人项目里跑通了一版,用 DeepSeek V4 + 千问 Qwen-Plus 双模型可切换,Prompt 模板与 LangGraph 编排逻辑和本文描述一致。作为技术参考记录在 nbstockai.com,不是商业产品介绍——如果你也在搭类似系统,欢迎对照交叉验证。
总结
多智能体的本质不是"堆角色",而是把复杂任务拆成确定性子任务。每个子任务有明确的输入/输出/评估标准,LLM 就会表现得可靠得多。
这个思路可以迁移到:
- 代码审查系统(架构师/审查员/修正师/测试员)
- 文档审阅系统(事实核查/风格/术语)
- 客户支持系统(分诊/技术/话术/质检)
只要场景有多维判断 + 合规风险,多智能体都值得考虑。
想展开了解这条技术路线,可以读我另一篇笔记 多智能体架构如何做股票分析。
💬 评论区聊聊你用多智能体架构做过什么应用?
📝 本文为工程学习笔记,所涉股票代码与财务数据仅作为 Prompt 示例,不构成投资建议。
🔗 延伸阅读:AI 股票分析工具盘点 2026