3 min read483 words
投资研究多 Agent 系统设计
Finance
Finance
技术栈:LangChain / LangGraph(编排)、OpenAI/DeepSeek/Claude/Qwen 等大模型(可切换)、向量数据库、金融数据源。
目标:让多个专业化 AI Agent 协同完成「从研究课题 → 数据采集 → 多维分析 → 交叉验证 → 结构化研报」的全流程。
1. 概述与目标
1.1 想解决的问题
传统投研流程中,研究员需要人工完成信息采集、财报阅读、舆情监控、估值测算、合规校对等大量工作。本系统把这些能力拆分为职责单一的专用 Agent,由一个 Supervisor(监督者) 统一编排,让它们像投研团队一样分工协作。
1.2 核心目标
| 维度 | 目标 |
|---|---|
| 效率 | 把单份研报初稿的生产时间从「天级」压缩到「分钟级」 |
| 深度 | 覆盖宏观、基本面、技术面、舆情、风控等多维视角,避免单一模型盲区 |
| 可信 | 每个结论必须带引用来源,经事实核查 + 人工审批后才输出 |
| 可演进 | Agent、工具、数据源、模型均可插拔替换;每次运行可复现、可评估 |
1.3 设计原则
- 单一职责:每个 Agent 只做一类事,便于评测、调试与替换。
- 状态显式化:所有中间结论写入共享 State(LangGraph),可断点、可观测、可人工介入。
- 人机协同:关键节点(风险项、评级、结论)设人工审批检查点(Human-in-the-loop)。
- 引用溯源:消灭「无来源判断」,一切事实主张必须可回溯。
- 合规优先:数据授权、信息隔离、免责声明内建于风控 Agent。
2. 总体架构
2.1 架构总览(分层)
┌──────────────────────────────────────────────────────────────────────────────┐ │ ① 应用层 Web 研报工作台 · REST/SSE API · 研报门户/消息分发 │ └───────────────────────────────────▲───────────────────────────────────────────┘ │ 研究课题/指令(下发) ┌───────────────────────────────────┴───────────────────────────────────────────┐ │ ② 编排层 LangGraph Supervisor:任务规划 / 路由 / 汇总 / 审批 │ │ 共享状态 StateGraph + Checkpointer(断点续跑 + 人工介入) │ └───────────────────────────────────┬───────────────────────────────────────────┘ │ 子任务派发(并行/串行) ┌───────────────────────────────────┴───────────────────────────────────────────┐ │ ③ 多 Agent 层 │ │ 宏观·行业 │ 基本面·财务 │ 技术面 │ 舆情·情绪 │ 深度研究 │ 量化·因子 │ 风控·合规 │ 研报生成 │ └───────────────────────────────────┬───────────────────────────────────────────┘ │ 调用能力 ┌───────────────────────────────────┴───────────────────────────────────────────┐ │ ④ 能力层 工具集 Toolset · RAG 知识检索 · 记忆 Memory · 沙箱代码执行 │ └───────────────────────────────────┬───────────────────────────────────────────┘ │ 数据读取 ┌───────────────────────────────────┴───────────────────────────────────────────┐ │ ⑤ 数据层 行情/财务/公告 · 新闻/舆情 · 宏观/另类 · 研报知识库(向量+图) │ └───────────────────────────────────┬───────────────────────────────────────────┘ │ ┌───────────────────────────────────┴───────────────────────────────────────────┐ │ ⑥ 基础设施 模型网关 LLM Gateway · 向量库 · 消息队列 · 可观测性 · 权限/合规审计 │ └──────────────────────────────────────────────────────────────────────────────┘
2.2 Mermaid 架构图
flowchart TB subgraph L1["① 应用层"] UI["Web 研报工作台 / REST·SSE API / 研报门户"] end subgraph L2["② 编排层(LangGraph)"] SUP["Supervisor 智能体<br/>任务规划·路由·汇总·审批"] ST["共享状态 StateGraph + Checkpointer"] end subgraph L3["③ 多 Agent 层"] A1["宏观·行业"] A2["基本面·财务"] A3["技术面"] A4["舆情·情绪"] A5["深度研究"] A6["量化·因子"] A7["风控·合规"] A8["研报生成"] end subgraph L4["④ 能力层"] T["工具集 Toolset"] RG["RAG 知识检索"] M["记忆 Memory"] CD["沙箱代码执行"] end subgraph L5["⑤ 数据层"] D1["行情·财务·公告"] D2["新闻·舆情"] D3["宏观·另类"] D4["研报知识库 向量+图"] end subgraph L6["⑥ 基础设施"] GW["模型网关 LLM Gateway"] V["向量数据库"] OBS["可观测性 Langfuse/LangSmith"] AUTH["权限 / 合规审计"] end UI --> SUP SUP <--> ST SUP --> A1 & A2 & A3 & A4 A1 & A2 & A3 & A4 --> A5 A5 --> A6 A5 --> A7 A6 & A7 --> A8 A1 & A2 & A3 & A4 & A5 --> T & RG T --> D1 & D2 & D3 & D4 RG --> D4 T --> GW
3. 多 Agent 编排模式
选型:「Supervisor + 层次化团队(Hierarchical Teams)」,用
langgraph
的 StateGraph
+ Send
API 实现并行派发,用 interrupt
实现人机协同。
- 为什么不用纯 Peer-to-Peer(AutoGen 风格):投研流程有明确先后依赖(先采集分析、后交叉验证、再成稿),独立 Agent 自由对话会导致不可控的上下文膨胀与结论漂移。
- 为什么不用单一大模型的 ReAct:单一 Agent 承担全部工具会陷入「工具过多、指令冲突、长上下文失控」。
- Supervisor 职责:解析课题 → 拆解子任务 → 决定谁来做、并行还是串行 → 收集各 Agent 的 Findings → 裁决冲突 → 触发风控与人工审批 → 交给研报生成 Agent 成稿。
┌─────────────────┐ 用户课题 ───▶ │ Supervisor │ └────────┬────────┘ ┌──────────┬─────────┼───────────┬─────────┐ ▼ ▼ ▼ ▼ ▼ 宏观·行业 基本面·财务 技术面 舆情·情绪 (并行) └──────────┴─────────┼───────────┴─────────┘ ▼ 深度研究 Agent(汇聚初稿) ┌──────┴──────┐ ▼ ▼ 量化·因子 风控·合规(事实核查/风险/合规) └──────┬──────┘ ▼ 研报生成 Agent ▼ 人工审批 checkpoints ▼ 发布 / 通知
4. 各 Agent 详细设计
| Agent | 职责 | 关键工具 | 输入 → 输出 |
|---|---|---|---|
| Supervisor(编排) | 课题解析、任务分解、路由、冲突裁决、触发审批 | 路由、State 读写 | 课题 → 任务队列 / 最终研报骨架 |
| 宏观·行业 Agent | GDP/CPI/PMI/利率等宏观周期、行业景气度、政策解读、产业链 | 宏观数据 API、搜索、研报 RAG | 课题 → 宏观与行业分析节点 |
| 基本面·财务 Agent | 三大报表分析、财务比率、盈利预测、估值(DCF/PE/PB/PEG) | 财务数据、公告、计算器、沙箱、DCF 建模 | 财务数据 → 财务健康度与估值 |
| 技术面 Agent | K 线/均线/量价、MACD/RSI/布林/KDJ、形态与支撑压力、资金流 | 行情 API、图表生成 | 行情 → 技术信号与点位 |
| 舆情·情绪 Agent | 新闻/社交/研报情绪打分、事件驱动(回购/增减持/评级变动) | 新闻·舆情 API、情感模型、RAG | 文本流 → 情绪与事件评分 |
| 深度研究 Agent | 商业模式、竞争格局、管理层、股东变动、调研/电话会纪要精读 | 文档解析、RAG、搜索 | 上游结论 → 个股深度画像 |
| 量化·因子 Agent | 多因子建模、回测、相关性、组合优化 | 回测引擎、沙箱代码 | 因子数据 → 量化信号 |
| 风控·合规 Agent | 波动率/最大回撤/VaR/集中度,事实核查、信息披露、利益冲突、免责 | 规则引擎、事实核查、RAG | 各节点 → 风险与合规清单 |
| 研报生成 Agent | 汇总成结构化研报(摘要/逻辑/财务/风险/估值/评级),插图表、带引用 | 模板、图表、沙箱、RAG | 全部 Findings → 成稿 |
每个 Agent 的 Prompt 骨架(通用约定):
- 角色设定 + 能力边界(「你只能…,不要越界输出评级结论」)
- 可用工具清单及调用规范
- 输出格式 JSON Schema({ finding, evidence, sources[], confidence, risks })
- 强制「无确凿来源则标注为存疑」的规则
5. 工具层设计
| 工具 | 说明 | 典型接口/来源 |
|---|---|---|
| 行情/财务数据 | 日线、财务三大报表、估值指标 | Tushare Pro / AKShare / Wind / 聚宽 / Alpha Vantage |
| 公告/财报 | 巨潮、SEC EDGAR 披露文件抓取与解析 | 官方披露 + 文档解析(pdf/word/表格抽取) |
| 新闻/舆情 | 实时新闻、社交、研报情绪 | 新闻 API / 爬虫 + 情感模型 |
| 宏观/另类数据 | 宏观指标、行业数据、资金流、席位 | 统计/行业数据库 |
| 搜索 | 补充性互联网检索 | Tavily / SerpAPI / Bing |
| 知识检索(RAG) | 历史研报、调研纪要、投研笔记 | 向量库 + BM25 混合检索 |
| 计算/建模 | 财务模型、DCF、指标计算 | 隔离沙箱(Python) |
| 回测 | 因子/策略回测与绩效统计 | 回测引擎 |
| 图表生成 | K 线、财务趋势、估值区间图 | 绘图库导出 PNG |
工具统一封装为 LangChain
Tool
(带 name/description/JSON args schema),并接入统一调用审计日志。
6. 知识 / 记忆 / RAG
- 检索增强(RAG):历史研报、公告、调研纪要、投研笔记 → 切块 → 向量化(embedding)→ 存入向量库 + 倒排索引;查询时做混合检索 + rerank,返回带文档编号的引用。
- 短期记忆:本次任务上下文存放在 LangGraph State;对话历史用 LangChain Memory。
- 长期记忆:跨任务的「研究偏好」「已核实事实库」「指标口径字典」存向量库/图库,供后续任务复用。
- 图结构:股票-行业-供应链-股东关联关系存图数据库(如 Neo4j),支撑产业链传导分析。
7. 关键数据流(一次典型任务)
sequenceDiagram participant U as 用户 participant S as Supervisor participant M as 宏观·基本面·技术·舆情(并行) participant D as 深度研究 participant R as 风控/合规 participant G as 研报生成 participant H as 人工审批 U->>S: 提交课题「XX 公司投资价值分析」 S->>S: 拆解子任务 + 生成计划 par 并行调研 S->>M: 派发 4 个分析任务 M->>M: 调用工具(数据+RAG)产出 Findings(带引用) end M-->>S: 返回各维度 Findings S->>D: 汇总初稿,深度研究补全商业模式/风险 D-->>S: 深度画像 S->>R: 事实核查 + 风险/合规校验 R-->>S: 风险清单 / 存疑项(不通过则回退重查) S->>G: 成稿(结构化 + 图表 + 引用) G-->>S: 研报草稿 S->>H: 人工审批检查点 H-->>S: 通过/修改意见 S->>U: 发布研报 + 通知
8. 状态管理(LangGraph State)
一份任务的核心共享状态(
TypedDict
):
class ResearchState(TypedDict, total=False): topic: str # 研究课题 plan: list[SubTask] # 任务分解 findings: list[Finding] # 各 Agent 结论(带 sources/confidence) tool_log: list[ToolCall] # 工具调用审计 report_draft: str # 研报草稿 risk_checks: list[RiskItem]# 风险与合规项 citations: list[Citation] # 引用溯源 approval: str # pending / approved / revise
- 使用 Checkpointer(如 Postgres/SqliteSaver)实现断点续跑与人工介入(interrupt暂停等待审批)。
- SendAPI 实现「1 → N 并行派发,再汇聚」。
9. 技术栈清单
| 层 | 选型 |
|---|---|
| 编排 | LangGraph(StateGraph / Send / checkpointer / interrupt) |
| 模型 | LLM Gateway:OpenAI / DeepSeek / Claude / Qwen / 开源模型(vLLM 自托管),按任务选模型 |
| 框架 | LangChain(Agent、Tool、Memory、Retriever) |
| 向量库 | pgvector / Milvus / Chroma;倒排 BM25 用于混合检索 |
| 图库 | Neo4j(产业链/股东/供应链) |
| 数据源 | Tushare Pro / AKShare / Wind / 聚宽 / Alpha Vantage / 新闻 API / 巨潮 / SEC EDGAR |
| 解析 | 文档解析(PDF/Word/表格抽取,规则 + LLM 结构化) |
| 沙箱 | 隔离 Python 执行环境(e2b / Docker / Firecracker) |
| 可观测性 | Langfuse / LangSmith + OpenTelemetry(Trace、Token 用量、成本、延迟) |
| 队列/缓存 | Redis(缓存 + 轻量队列)、Kafka/RabbitMQ(任务流) |
| 存储 | PostgreSQL(业务/状态/审计)、对象存储(研报/图表产物) |
| 前端 | Next.js + React(研报工作台,SSE 流式展示过程) |
10. 落地规划(分阶段路线图)
阶段 0 —— 地基与数据(约 1–2 周)
- 内容:梳理合规边界与数据授权;接入数据源(行情/财务/公告/新闻);搭建 LLM Gateway、统一模型调用层、可观测性(Langfuse)、统一配置与密钥管理。
- 交付物:可运行的数据采集任务 + 单 Agent 演示(新闻摘要 + 财务摘要)。
- 验收:数据每日稳定更新,单 Agent 端到端输出带引用的摘要;全链路 Trace 可查。
阶段 1 —— 多 Agent 骨架(约 3–4 周)
- 内容:搭建 Supervisor + 4 个核心 Agent(宏观·行业 / 基本面·财务 / 技术面 / 舆情·情绪);RAG 知识库(历史研报、公告);共享 State + 并行派发;输出结构化初稿。
- 交付物:多 Agent 编排 MVP,一份课题 → 多维分析初稿。
- 验收:同一课题能稳定并行产出 4 类 Findings 并自动汇总成大纲,引用可点击溯源。
阶段 2 —— 深度研究 + 风控闭环(约 2–3 周)
- 内容:加入深度研究 Agent、风控·合规 Agent、研报生成 Agent;实现事实核查、引用溯源、Human-in-the-loop 审批;研报模板与图表插入。
- 交付物:可发布的完整研报草稿(含风险清单 + 免责声明)。
- 验收:存疑项会被强制拦截进入人工审批;研报结构完整、引用齐全。
阶段 3 —— 量化与反馈回路(约 2–3 周)
- 内容:量化·因子 Agent(回测/估值区间)、图表自动生成、用户反馈(采纳/修改)回流优化 Prompt 与知识库;研报发布与订阅通知。
- 交付物:带估值区间与回测附件的成体系研报;反馈闭环。
- 验收:用户可一键生成含图表/模型的完整报告;反馈数据进入评测集。
阶段 4 —— 规模化与合规增强(持续)
- 内容:多租户与权限隔离、风控/合规审计增强、成本优化(缓存、小模型路由、结果缓存)、评估体系(研报质量自动评测 + 对真实走势的长期跟踪校准)。
- 交付物:生产级平台 + 自动化评估看板。
- 验收:研报质量指标(引用准确率、专家评分)持续提升,单位成本持续下降。
里程碑总览(示意):
周0 周2 周6 周9 周12 → ├─ 阶段0 ─┤├─── 阶段1 ───┤├── 阶段2 ──┤├── 阶段3 ──┤├── 阶段4(持续) ── 地基/数据 4核心Agent+ 深度+风控+ 量化+反馈 规模化/合规/评估 Supervisor 成稿+审批
11. 风险与应对
| 风险 | 表现 | 应对 |
|---|---|---|
| 幻觉/事实错误 | 编造财务数据、张冠李戴 | 强制引用溯源、事实核查 Agent、置信度打分、低置信降级为人工 |
| 数据质量与延迟 | 数据源口径不一、行情延迟 | 数据血缘与口径字典、实时/延迟数据分层、入库校验 |
| 合规风险 | 未经授权数据、内幕/误导性结论 | 数据授权清单、风控规则引擎、免责声明、人工审批 |
| 成本失控 | Token 用量大、重复调用 | 结果缓存、小模型路由、按任务选模型、预算告警 |
| 上下文膨胀 | 长任务上下文失控 | 任务拆分、摘要压缩、向量检索替代全文塞入 |
| 不可复现/难排障 | 结果漂移,难定位错误 Agent | 全程 Trace、State checkpoints、版本化 Prompt 与评测 |
12. 未来演进
- 多角色评论型 Agent:多头/空头 Agent 辩论式交叉验证,收敛出更稳健结论。
- 实时事件驱动:公告/新闻触发自动研报更新与预警推送。
- 组合视角:从单标的扩展到组合层面的权重、相关性、行业暴露优化。
- 自我评估与进化:用研报对后续真实走势的拟合度作为长期奖励信号,迭代 Prompt 与知识库。