返回 Expert 笔记
Expert Day 177

EXPERT Day 177: 金融研究 AI Agent v1 — 需求与架构设计

PRD 写作、Multi-Agent 系统设计、LangGraph 状态机、跨资产研究流程建模

2026-10-25
Phase 3 - 实战 Capstone(Day 177-180)
AIAgentLangGraphMCPRAGFinanceArchitecturePRD

日期: 2026-10-25 方向: AI 系统工程 / Multi-Agent / Financial Research 阶段: Phase 3 - 实战 Capstone(Day 177-180) 标签: #AIAgent #LangGraph #MCP #RAG #Finance #Architecture #PRD


今日目标

经过 Day 121-176 的全栈 AI 系统工程铺垫(LLM 基础、Prompt 工程、RAG、Agent、LLMOps、Eval、Safety),今天进入实战 Capstone:把过去 56 天的所有组件捏合成一个可上线的产品——金融研究 AI Agent v1

类型内容
学习PRD 写作、Multi-Agent 系统设计、LangGraph 状态机、跨资产研究流程建模
实操完成 PRD + 系统架构图 + Agent 拓扑 + 工具清单 + 技术选型 + Trade-off 分析
产出本笔记(设计文档)+ docs/FINANCE_AGENT_PROJECT.md(portfolio 级架构 paper)

写在前面:本 Capstone 不是从零开始,而是把过去 56 天每天产出的"零件"组装成一台可运转的机器:

  • Day 135-148 的 RAG(hybrid retrieval / rerank / multi-vector)
  • Day 149-162 的 Agent(ReAct / MCP / LangGraph / Memory)
  • Day 163-176 的 LLMOps(vLLM / cost / eval / observability / safety)
  • Phase 2 的金融数据系统(财报库/链上数据/新闻流)

一、产品定位与目标用户

1.1 一句话定位

「为 buyside 研究员与独立投资人服务的、能跨 TradFi 与 Crypto 的、带主动调研能力的 AI 研究助理。」

英文版本:

"An AI research copilot that bridges TradFi and Crypto, with proactive investigation capabilities, built for buyside researchers and independent investors."

1.2 目标用户画像

用户群体痛点我们提供
Buyside 研究员(小型对冲/家办)Bloomberg Terminal $24K/yr 太贵,AlphaSense 不覆盖 crypto,链上数据要单独查 Etherscan/Dune,财报抽取靠人手一个统一界面,跨 TradFi 与 Crypto,按 query 计费
独立投资人(Active Twitter trader / Substack writer)无机构资源,手动跨平台拼数据,做不出深度研究报告"雇" 一个 AI 助理 24/7 帮做 macro / single-name / onchain 研究
小型 FOF / 资产配置者需要看 RWA / DeFi 与传统资产配置组合,但缺跨资产数据视图跨资产 portfolio 复盘 + 风险预警
合规官(CCO)需要快速判断某个 crypto 标的是否合规 / 制裁Compliance agent + OFAC SDN 列表 + 链上溯源

1.3 与现有产品对比

产品核心优势短板价格
Bloomberg Terminal AI(BloombergGPT-like)数据全(500+ 数据源)、机构信誉、TradFi 标准crypto/onchain 缺失、$24K/年、不可定制$24,000/yr
AlphaSense财报/电话会议转录搜索强、AI summarization 成熟无 crypto、无主动 agent 行为$12,000+/yr
FactSet AI投行研报库、estimates 数据丰富crypto 缺失、UI 老旧$15,000+/yr
Perplexity Finance价格便宜、UI 好、网络搜索强不专业、hallucination 高、无 onchain、无深度计算$20/月
本项目(Finance Research Agent v1)crypto+TradFi 跨资产 / 内置 onchain agent / multi-agent 主动调研 / 按 query 计费TradFi 数据深度暂不及 Bloomberg、品牌弱$0.05~0.20/query 起

差异化

              Bloomberg          AlphaSense          Perplexity         OURS
TradFi深度       ★★★★★             ★★★★               ★★                 ★★★
Crypto/Onchain   ★                ★                  ★★                 ★★★★
主动Agent        ★★               ★★                 ★                  ★★★★★
跨资产桥接       ★★               ★                  ★                  ★★★★
价格友好         ★                 ★★                 ★★★★★              ★★★★

二、PRD(产品需求文档)

2.1 用户故事(User Stories)

格式:As a [角色], I want [行为], so that [价值]

Story 1:宏观研究(Macro Research)

  • As a buyside macro 研究员
  • I want 输入"美联储 2026 年 11 月议息会议后 3 个月,2Y/10Y 期限利差与 BTC 走势的相关性",agent 自动拉 FRED + Coingecko 数据并给出结论
  • So that 我不用花 2 小时在 Bloomberg Terminal + Excel 里手动拼图

验收标准

  • 5s 内首字节响应
  • 给出相关系数 + 时间序列图 + 文字解读
  • 引用数据源 URL

Story 2:单标的深度研究(Single-name Deep Dive)

  • As a 独立投资人
  • I want 输入"分析 NVDA 最近三个季度的 GenAI 业务质地变化,对比 AMD 同口径"
  • So that 我能在 30 分钟内做完原本需要半天的研究

验收标准

  • 抽取 10-Q/10-K 中 GenAI 相关披露
  • 同口径对比(YoY revenue、segment margin)
  • 给出 PE / EV/EBITDA 对比表

Story 3:Portfolio 复盘(Portfolio Review)

  • As a FOF 资产配置者
  • I want 上传我的 portfolio CSV(含 SPX、QQQ、BTC、ETH、BUIDL),agent 给出过去 30 天归因分析
  • So that 我的月度 review 报告自动化 80%

验收标准

  • 计算各 asset class 的 contribution to return
  • 风险归因(vol contribution)
  • 自然语言总结 + 图表

Story 4:快讯监控(News Monitor)

  • As a crypto 研究员
  • I want 设置一个长期 watch:"任何关于 BlackRock BUIDL / Ondo USDY 的新闻或链上活动"
  • So that 当有关键事件发生时,我 5 分钟内收到结构化推送

验收标准

  • 后台定时 polling(5 分钟一次)
  • 新闻+链上转账双源去重
  • Webhook / Email / Telegram 推送
  • 每条事件附 4 句结构化总结:what / who / impact / source

Story 5:合规审查(Compliance Check)

  • As a 小型基金合规官
  • I want 输入一个钱包地址或代币合约,agent 给出制裁/合规风险报告
  • So that 我在 5 分钟内完成一次 due diligence 而不是 5 小时

验收标准

  • OFAC SDN 列表匹配
  • 链上溯源到 mixer / sanctioned address
  • 输出 risk score 0-100 + 详细推理链

Story 6:跨资产对比(Cross-asset Compare)

  • As a macro PM
  • I want "对比 SPX、IEF、GLD、BTC、BUIDL 这 5 个标的过去 1 年的 Sharpe / max drawdown / correlation matrix"
  • So that 我能快速建立资产配置 baseline

Story 7:财报会议解读(Earnings Call)

  • As an equity 研究员
  • I want 输入"AAPL FY26Q1 earnings call",agent 给出关键 Q&A 摘要 + 管理层 tone 变化
  • So that 我能错过 live call 但不错过 alpha

2.2 核心功能模块

模块功能描述主导 Agent依赖工具
F1. 财报解析从 10-K/10-Q/8-K 抽取数字指标,结构化为 JSONEquity Agentfinancial_data.py / RAG
F2. 链上数据查询持币地址、转账记录、合约状态、TVL、链上活动Crypto Agentonchain.py(Etherscan/Dune)
F3. 新闻监控实时新闻 + 历史新闻搜索 + sentimentMacro/Crypto Agentnews.py(Tavily/NewsAPI)
F4. 对比分析多标的同口径对比、相关性矩阵、归因Coordinatorcalc.py + viz.py
F5. 风险预警OFAC、制裁、mixer、合约漏洞、流动性枯竭Compliance Agentcompliance toolkit
F6. Portfolio 归因给定 portfolio,做 P&L attributionCoordinatorcalc.py(Brinson/Fama-French)
F7. 长期 Watch定时 polling 任务 + alert 推送Background workercron + notification

2.3 非功能需求(NFR)

维度目标测量方法
Latency(首字节 TTFT)<3s p95streaming 起手时间
Latency(端到端)<30s p95(简单 query),<120s p95(复杂多步 query)trace 总耗时
Cost<$0.10/query 中位、<$0.50/query p95Anthropic billing
Hallucination 率<5%(基于 100 条 golden test)LLM judge + 人工抽查
Tool 调用成功率>95%observability dashboard
可用性99.5% SLAuptime monitoring
数据新鲜度TradFi 价格 <15min 延迟,链上数据 <5minfreshness probe
并发100 concurrent usersload test
合规不输出投资建议;FINRA 2210 disclaimer 自动添加guardrails
PII 处理不持久化 PII;email 等做 hashPresidio scan

三、系统架构设计

3.1 总体架构图

┌──────────────────────────────────────────────────────────────────────────┐
│                            Layer 0: Client                               │
│   Web UI (Next.js)  │  Telegram Bot  │  CLI  │  REST API  │  Webhook    │
└──────────────────────────────────┬───────────────────────────────────────┘
                                   │ HTTPS / SSE streaming
┌──────────────────────────────────┴───────────────────────────────────────┐
│                       Layer 1: API Gateway                               │
│   Kong / Envoy  │  JWT auth  │  Rate limit  │  Cost meter  │  WAF       │
└──────────────────────────────────┬───────────────────────────────────────┘
                                   │
┌──────────────────────────────────┴───────────────────────────────────────┐
│                Layer 2: Guardrails (Input)                               │
│   Prompt-injection scan  │  PII redaction  │  Topic check  │  RAG ACL  │
└──────────────────────────────────┬───────────────────────────────────────┘
                                   │
┌──────────────────────────────────┴───────────────────────────────────────┐
│                  Layer 3: Orchestrator (LangGraph)                       │
│                                                                          │
│       ┌────────────────────────────────────────────────────────┐        │
│       │                Coordinator Agent                        │        │
│       │   (router + planner + final synthesizer; Opus 4.7)     │        │
│       └──────┬──────────────┬──────────────┬─────────┬─────────┘        │
│              │              │              │         │                  │
│       ┌──────▼─────┐  ┌─────▼─────┐  ┌─────▼─────┐ ┌─▼──────────┐       │
│       │ Macro Agt  │  │ Equity    │  │ Crypto    │ │ Compliance │       │
│       │ (Sonnet)   │  │ Agt(Sonnet)│  │ Agt(Sonnet)│ │ Agt(Opus)  │       │
│       └──────┬─────┘  └─────┬─────┘  └─────┬─────┘ └─────┬──────┘       │
│              └──────────────┴──────────────┴────────────┘                │
│                              │                                           │
│                       Shared State (TypedDict)                           │
└──────────────────────────────┬───────────────────────────────────────────┘
                               │ tool calls
┌──────────────────────────────┴───────────────────────────────────────────┐
│                      Layer 4: Tools (MCP Servers)                        │
│                                                                          │
│   ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐│
│   │ Financial    │  │ Onchain      │  │ News         │  │ Calc & Viz   ││
│   │ Data         │  │ Data         │  │ Stream       │  │              ││
│   │ - CapIQ      │  │ - Etherscan  │  │ - Tavily     │  │ - finance    ││
│   │ - FRED       │  │ - Dune       │  │ - NewsAPI    │  │ - matplotlib ││
│   │ - Yahoo      │  │ - Coingecko  │  │ - SeekingAlpha│ │              ││
│   │ - SEC EDGAR  │  │ - DeFiLlama  │  │              │  │              ││
│   └──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘│
└──────────────────────────────┬───────────────────────────────────────────┘
                               │
┌──────────────────────────────┴───────────────────────────────────────────┐
│                      Layer 5: RAG & Memory                               │
│   ┌────────────────┐  ┌────────────────┐  ┌──────────────────────────┐  │
│   │ Vector DB      │  │ BM25 Index     │  │ Memory                   │  │
│   │ Qdrant         │  │ Elasticsearch  │  │ - Mem0 (long-term)       │  │
│   │ Voyage finance-2│  │                │  │ - Chroma (semantic)     │  │
│   │ + Cohere rerank│  │                │  │ - Redis (session)        │  │
│   └────────────────┘  └────────────────┘  └──────────────────────────┘  │
└──────────────────────────────┬───────────────────────────────────────────┘
                               │
┌──────────────────────────────┴───────────────────────────────────────────┐
│                Layer 6: Data Infrastructure                              │
│   Doc Store (S3)  │  Time-series DB (TimescaleDB)  │  Graph DB (Neo4j) │
│   Document Lake: 10-K, 10-Q, transcripts, research notes, whitepapers   │
└──────────────────────────────┬───────────────────────────────────────────┘
                               │
┌──────────────────────────────┴───────────────────────────────────────────┐
│                Layer 7: Eval & Observability                             │
│   Langfuse (traces) │ ClickHouse (logs) │ Prometheus │ Grafana          │
│   Eval harness: 100 golden cases / 30 red-team cases / weekly CI         │
└──────────────────────────────┬───────────────────────────────────────────┘
                               │
┌──────────────────────────────┴───────────────────────────────────────────┐
│                Layer 8: Safety (Output)                                  │
│   PII scrub │ Compliance disclaimer auto-insert │ Output coherence       │
└──────────────────────────────────────────────────────────────────────────┘

3.2 多 Agent 设计

为什么用多 Agent 而不是单 Agent?

详见第六章 "关键设计决策" 中的论证。简言之:专业化 + 上下文压缩 + 并行

5 个专业 Agent

Agent模型职责关键工具典型 token/调用
CoordinatorOpus 4.7路由分派、子结果汇总、最终回答无(meta)5K input / 1.5K output
Macro AgentSonnet 4.6宏观经济、利率、汇率、央行政策FRED、Yahoo、News8K / 1.5K
Equity AgentSonnet 4.6股票研究、财报解析、估值CapIQ、SEC EDGAR、Yahoo、RAG12K / 2K
Crypto AgentSonnet 4.6链上数据、DeFi、代币经济Etherscan、Dune、Coingecko、DeFiLlama10K / 2K
Compliance AgentOpus 4.7制裁、KYC/AML、合规风险OFAC SDN、链上溯源、News15K / 3K

Agent 之间的协议

  • 基础:LangGraph StateGraph,所有 agent 共享 AgentState(TypedDict)
  • 路由:Coordinator 根据 query intent 分类(NLU classifier,规则 + LLM 兜底)
  • 并行:可独立的子查询并行(asyncio.gather)
  • 冲突:如果 agents 给出冲突结论,Coordinator 用 "self-consistency vote" 选择置信度高的

3.3 工具清单(17 个)

#工具调用方数据源缓存策略成本
1get_stock_priceEquityYahoo Finance60s免费
2get_financialsEquitySEC EDGAR24h免费
3get_estimatesEquityCapIQ24h$$$$
4parse_filingEquityRAG over EDGAR永久(按 filing)$
5compute_pe_ev_ebitdaEquity/Macrocalc.py不缓存0
6get_macro_seriesMacroFRED60s免费
7get_newsMacro/CryptoTavily/NewsAPI60s$$
8get_eth_balanceCryptoEtherscan30s免费层够
9get_eth_txsCryptoEtherscan30s免费层
10query_duneCryptoDune API5min$$$
11get_token_infoCryptoCoingecko60s免费
12get_defi_tvlCryptoDeFiLlama5min免费
13check_ofac_sdnComplianceOFAC list(本地)24h免费
14trace_fundsComplianceEtherscan + 启发式5min免费
15vector_searchAllQdrant + Voyage finance-2永久(按 hash)$$
16compute_correlationAllcalc.py不缓存0
17render_chartAllmatplotlib不缓存0

3.4 数据基础设施

数据源用途接入方式成本SLA
S&P Capital IQ财务估值数据REST API$1500/月99.9%
FRED宏观时间序列REST API免费99%
Yahoo Finance实时价格yfinance lib免费95%
SEC EDGAR财报原文https + parse免费99%
Etherscan链上数据REST API$200/月 Pro99.9%
Dune Analytics复杂链上 SQLREST API$390/月 Plus99%
Coingecko Pro代币元数据REST API$129/月99.5%
DeFiLlamaTVL/协议数据REST API免费95%
TavilyLLM 友好搜索REST API$0.005/搜索99%
OFAC SDN List制裁名单XML 下载免费-
Internal Doc Lake私有研报、内部备忘S3 + Qdrant自营-

总月度数据成本估算:约 $2500-3000/月(中等使用量)。


四、技术选型

4.1 LLM 模型组合

模型角色价格(每 MTok)用例
Claude Opus 4.7Reasoning / Coordinator / Compliance$15 input / $75 output路由决策、复杂多步推理、合规判断
Claude Sonnet 4.6Routine(Macro/Equity/Crypto)$3 / $15工具调用循环、文档抽取
Claude Haiku 4.5Cheap routes(FAQ、确认、分类)$0.80 / $4简单 NLU、cache hit 路径

Anthropic prompt caching 应用

  • 系统 prompt + tool schema:90% 折扣(缓存命中)
  • 长文档:通过 file API 上传,按 cache token 计费

成本估算(典型 query:500 tokens 输入 + 5 工具调用 + 1500 tokens 输出):

  • 不缓存:~$0.08/query
  • 缓存命中(90% off cached):~$0.02/query
  • 平均:~$0.05/query 中位

4.2 Agent Framework: LangGraph

为什么 LangGraph 而不是 CrewAI / AutoGen / LlamaIndex Agents?

框架优势劣势我们的选择
LangGraph显式状态机、cycle 支持、生产级、和 Langfuse 集成最好学习曲线、不如 CrewAI 简单✅ 选
CrewAI简单声明式、role-playing 模式好读黑盒、状态管理弱、debug 难
AutoGenMicrosoft 出品、conversation pattern 强文档跟不上、prod 案例少
LlamaIndex AgentsRAG 强agent 部分太薄❌(我们只用 LlamaIndex 做部分 RAG)
OpenAI Agents SDK简单锁 OpenAI、和 Anthropic 生态弱

LangGraph 关键能力

  1. StateGraph:用 TypedDict 显式定义 state schema
  2. Conditional edges:基于 state 动态路由
  3. Cycles:天然支持 ReAct 式循环(plan→act→observe→reflect→...)
  4. Checkpointer:state 持久化到 PostgreSQL/Redis,支持 resume
  5. Streaming:原生支持 SSE token 流
组件选择理由
EmbeddingVoyage finance-2金融领域 fine-tuned,比 OpenAI ada-002 在 FinBench 上高 12%
Vector DBQdrant自部署、support hybrid (vector + payload filter)、性能强
Sparse retrievalBM25(Elasticsearch)数字/股票代码召回率高
RerankerCohere rerank-3top-100 → top-10 重排,nDCG@10 提升 ~25%
ChunkingSemantic + section-aware财报按章节切(MD&A/Risk Factors),交易电话会按 Q&A 切

检索流程

query
  → expand (HyDE: LLM 生成假想答案再去检索)
  → BM25 top-50 + Vector top-50
  → dedupe + RRF (Reciprocal Rank Fusion)
  → Cohere rerank → top-10
  → context window assembly

4.4 Memory

工具内容TTL
SessionRedis当前对话上下文(消息历史、工具调用结果)24h
Short-term semanticChroma最近 30 天的高价值对话片段30d
Long-termMem0用户偏好、研究兴趣、portfolio 持仓永久
ProceduralPostgres"做某类研究的标准流程"模板永久

Mem0 用 LLM 主动从对话中抽取"事实",存入向量库 + 关系图。比朴素 message log 节省 90% token。

4.5 Observability

  • Langfuse:trace 可视化、prompt 版本管理、score 评估、A/B 实验
  • ClickHouse:原始事件落地,做 ad-hoc 分析
  • Prometheus:QPS、latency、error rate、cost per query
  • Grafana:dashboard

4.6 Guardrails

  • Input 层:NeMo Guardrails(topic check)+ Prompt-Guard-86M(injection 检测)
  • Output 层:Anthropic 内置 safety + 自研 compliance scrub(自动加 disclaimer)
  • PII:Microsoft Presidio(PII detection + redaction)

五、关键设计决策与 Trade-off

决策 1:单 Agent vs 多 Agent — 选多 Agent

背景:金融研究是跨领域的,一个用户问题可能涉及宏观、个股、链上、合规多个领域。

选项 A:单大 Agent

  • 优势:实现简单、上下文连续、不用管 agent 间通信
  • 劣势:
    • 上下文爆炸:所有工具 schema(100+)都塞进 system prompt → 5K+ token 起步
    • 专业性弱:没有 prompt 针对宏观 vs 链上做精细化
    • 难以并行:一个 query 串行调用 10 个工具 → 30s+

选项 B:多 Agent(最终选)

  • 优势:
    • 专业化:每个 agent 有定制 prompt + 工具子集(每个 <30 tools)
    • 并行:Macro Agent 和 Crypto Agent 可同时跑
    • 可独立 eval:每个子 agent 有自己的 golden test
    • 成本可控:路由到 Sonnet/Haiku,只有 Coordinator 用 Opus
  • 劣势:
    • 实现复杂度高
    • Coordinator 是单点
    • 需要 schema 同步

结论:选 B。复杂度由 LangGraph 框架承担,且过去 56 天的训练给了我们足够能力。

决策 2:LangGraph vs CrewAI — 选 LangGraph

参考 4.2。核心理由:

  • 生产可观测性:LangGraph + Langfuse = 一等公民集成
  • 状态机的可调试性:CrewAI 的 role-playing 模式在生产环境难以 debug
  • 灵活性:cycle / conditional 边可以在金融场景做"先查事实再决策"的多轮循环

决策 3:RAG vs 长上下文 — 选 Hybrid(默认 RAG,复杂 query 走长上下文)

背景:Claude Opus 4.7 支持 1M context。一个 10-K 文档约 100K tokens,理论可全文塞入。

选项 A:纯 RAG

  • 优势:成本低、latency 快
  • 劣势:召回不全可能漏关键信息

选项 B:纯长上下文

  • 优势:无召回风险、能做全局 reasoning
  • 劣势:100K context 输入约 $1.5(Sonnet)单次成本,且 latency 高(first token 5s+)

选项 C:Hybrid(最终选)

  • 默认走 RAG(top-10 chunks)
  • 当 RAG confidence < threshold(chunk relevance score 低)或 query 涉及全局推理(如"分析整份 10-K 的风险因素"),fallback 到长上下文
  • 启用 Anthropic prompt caching:长上下文文档缓存后下次调用 90% 折扣

决策 4:Local LLM vs Cloud LLM — 选全 Cloud

背景:是否自部署 Llama 4 / Qwen 3 / DeepSeek-V4?

选项 A:全 Cloud(Anthropic)

  • 优势:模型质量最高、运维零、合规省心(SOC 2 / HIPAA)
  • 劣势:vendor lock-in、cost 长期高

选项 B:Hybrid(routine 用 self-host,reasoning 用 Anthropic)

  • 优势:long-term 成本下降
  • 劣势:维护 GPU 集群(H100 4 卡 ~$30K/月 spot)、调优 vLLM、监控、SLA 自负

选项 C:全 self-host

  • 优势:极致成本控制
  • 劣势:金融场景质量风险大

结论:v1 选 A。当 MAU > 10K / 月成本 > $30K 时,再做 Hybrid 迁移评估。

决策 5:Tool Schema — 选 MCP(Model Context Protocol)

背景:工具如何描述给 agent?

选项 A:framework-native(LangGraph @tool 装饰器)

  • 优势:简单、和框架紧耦合
  • 劣势:不能跨 agent 复用、不能跨语言

选项 B:MCP(最终选)

  • 优势:
    • Anthropic 标准协议
    • 工具可独立部署为 MCP server(Python / TypeScript / Go)
    • 团队可独立维护(金融数据 team 维护 financial_data MCP server)
    • 工具升级不影响 agent 代码
  • 劣势:
    • 多一层网络(本地 stdio / 远端 HTTP)
    • 调试复杂度上升

结论:选 B。把工具看作 microservices。

决策 6:State 持久化 — 选 Postgres + Redis

  • Postgres:长期 state(用户偏好、watch list、历史 query)
  • Redis:session state(24h TTL)、rate limit、cache

决策 7:合规 disclaimer 自动添加策略

背景:FINRA Rule 2210 要求所有面向 retail 的 communication 包含 disclaimer。

实现

  • Output guardrail 层在每次 final response 前自动追加:

    "Disclaimer: This information is for research purposes only and does not constitute investment advice. Past performance is not indicative of future results."

  • 当响应包含 buy/sell 等明确建议词时,触发额外 review
  • 对 institutional users(API key tier=B),可关闭 disclaimer

决策 8:Eval 频率 — 选每次 PR + 每日 + 每周三层

  • 每次 PR:30 条 deterministic test(运行 < 5min)
  • 每日:100 条 golden test(运行 < 30min,cost ~$5)
  • 每周:30 条 red-team adversarial test + LLM judge(cost ~$15)

六、风险与缓解

#风险概率影响缓解
1Hallucination:编造数字极高1) 强制每个数字必须有 tool call 来源 2) Output guardrail 校验数字是否在 trace 中出现 3) Eval 100 case 持续监控
2数据 stale(Bloomberg 还慢一拍)1) 时间戳显式标注 2) Crypto 数据 5min 刷新 3) 在 UI 显示数据 freshness
3Cost 失控(用户 abuse、bug 死循环)1) 每用户日 cost cap($5/day)2) Per-query token cap(input 50K / output 5K)3) Loop detection(同 tool 连续调用 5+ 次报警)
4Prompt injection1) Input scan(Prompt-Guard-86M)2) Tool 输出 sandboxing(不允许 user content 直接进 system role)3) 关键操作 confirmation
5合规风险(被认为提供投资建议)极高1) 全局 disclaimer 2) 黑名单 phrases ("you should buy / sell") 3) FINRA 律师季度 review prompt
6数据泄漏(用户 portfolio 进 LLM 训练)极高1) Anthropic zero-retention 协议(enterprise)2) PII redaction 3) 自托管 vector DB
7API 依赖故障(Etherscan 宕机)1) Circuit breaker 2) Fallback(Etherscan 挂了 fallback Alchemy)3) Graceful degradation(告诉用户该数据暂不可用)
8OFAC list 更新滞后极高1) 每日定时拉取 OFAC SDN XML 2) Hash 校验 3) Audit log

七、MVP 范围与迭代路径

Stage 1: MVP(Day 178 完成)

范围

  • ✅ Coordinator + 3 个 agent(Equity / Crypto / Compliance)
  • ✅ 8 个核心工具(财报、链上、新闻、计算)
  • ✅ RAG over SEC EDGAR(仅 SP500 公司)
  • ✅ 基础 guardrails(input scan + disclaimer)
  • ✅ CLI + REST API(无 Web UI)
  • ✅ 30 条 golden test
  • ❌ 无长期 watch / 无 portfolio 归因 / 无可视化

目标 metric

  • 30 条 golden test pass rate > 80%
  • 中位 latency < 30s
  • 中位 cost < $0.10/query

Stage 2: Beta(v1.1, +30 天)

    • Macro Agent + 5 个新工具(FRED、Coingecko Pro、Dune)
    • Long-term watch + Telegram bot
    • Portfolio attribution
    • 100 条 golden test 全量
    • Web UI(Next.js)
    • Anthropic prompt caching 全面启用

Stage 3: GA(v1.5, +90 天)

    • 多语言(中文版 prompt 全套)
    • 多租户 + RBAC
    • Self-host fallback(DeepSeek-V4 routine 路径)
    • LoRA fine-tune 财报抽取专用模型
    • SOC 2 Type 1

八、Repository 结构(MVP)

finance_agent/
├── pyproject.toml
├── config.yaml
├── .env.example
├── README.md
├── docker-compose.yml
├── src/
│   ├── __init__.py
│   ├── orchestrator.py            # LangGraph state machine
│   ├── settings.py
│   ├── agents/
│   │   ├── coordinator.py
│   │   ├── macro.py
│   │   ├── equity.py
│   │   ├── crypto.py
│   │   └── compliance.py
│   ├── tools/
│   │   ├── financial_data.py
│   │   ├── onchain.py
│   │   ├── news.py
│   │   ├── calc.py
│   │   └── viz.py
│   ├── rag/
│   │   ├── embedder.py
│   │   ├── retriever.py
│   │   └── reranker.py
│   ├── memory/
│   │   ├── session.py
│   │   └── longterm.py
│   ├── guardrails/
│   │   └── safety.py
│   ├── eval/
│   │   ├── golden.py
│   │   └── runner.py
│   ├── observability/
│   │   └── langfuse_setup.py
│   └── api/
│       ├── server.py
│       └── cli.py
├── prompts/
│   ├── coordinator.md
│   ├── equity.md
│   ├── crypto.md
│   ├── compliance.md
│   └── macro.md
└── tests/
    ├── test_orchestrator.py
    ├── test_tools.py
    └── golden/
        └── cases.jsonl

九、面试题(围绕本设计)

Q1:为什么用 LangGraph 而不是直接写 if/else 调度?

:LangGraph 提供 (1) 显式状态 schema,便于演化;(2) 内置 checkpointer 支持中断恢复;(3) 与 Langfuse 一等集成;(4) 原生支持 cycle,金融场景常需"查事实→反思→再查"。手写 if/else 在 3 个 agent 后会失控,而且 trace 不规范。

Q2:Coordinator 是单点吗?怎么做高可用?

:Coordinator 是逻辑上单点,但物理上是无状态的。state 持久化在 Postgres,多实例 Coordinator 通过 Redis 锁竞争 task。LangGraph 的 checkpointer 让 task resumption 几乎免费。

Q3:怎么防止 agent 进入死循环?

:三层防御:(1) max_iterations=15 硬上限;(2) 同 tool 连续调用 5+ 次触发报警;(3) Cost cap(per query input 50K / output 5K tokens)。死循环命中任一即终止 + 返回 partial result。

Q4:RAG 召回不到关键信息怎么办?

:Hybrid retrieval(BM25 + Vector + RRF + Rerank)已经把 nDCG@10 拉到 0.85+。再失败的话有两层兜底:(1) HyDE query expansion 重检索;(2) confidence < 0.5 时 fallback 到长上下文(Anthropic prompt caching 摊薄成本)。

Q5:金融领域 hallucination 危害极大,怎么保证?

:四层防御:

  1. 结构化输出:所有数字必须 cite tool call output(trace 校验)
  2. LLM judge:每次 final response 用 Opus 做 self-check("该 response 中数字是否都能在 trace 中找到来源?")
  3. 每日 100 case golden test,hallucination rate 阈值 5%,超阈值阻止部署
  4. disclaimer + 用户教育:"this is research, not advice"

十、明日预告(Day 178)

明天进入实现,把今天的设计落地:

  • LangGraph StateGraph 完整代码
  • 5 个 agent 的实现
  • 17 个工具的可运行版本
  • RAG hybrid retrieval 代码
  • 30 条 golden test
  • 一个端到端 demo("分析 BlackRock BUIDL 最近一周的链上活动并对比传统货币基金")

代码量预计 1500+ 行 Python。


速查表

关键决策一览

维度选择一句话理由
Agent 拓扑多 Agent专业化 + 并行 + 可独立 eval
FrameworkLangGraph状态机 + Langfuse 集成
LLMOpus 4.7 + Sonnet 4.6 + Haiku 4.5按场景 routing
RAGHybrid (BM25+Voyage+Rerank)nDCG@10 0.85+
Tool 协议MCP解耦 + 跨语言
MemoryMem0 + Chroma + Redis三层
ObservabilityLangfuse + ClickHouse + Grafana一等公民
Eval三层(PR / 日 / 周)hallucination < 5%
HostingCloud(Anthropic)v1 不自建 GPU

关键数字

  • Latency 目标:TTFT < 3s p95、E2E < 30s p95
  • Cost 目标:< $0.10/query 中位
  • Hallucination:< 5%
  • 数据成本:~$2500/月
  • LLM 成本:约 $0.05/query 平均(含 caching)

下一站 → Day 178:实现与代码