TradingAgents项目源码解析
1 源码分析

- 标准版:https://github.com/TauricResearch/TradingAgents,18.2K
star(2 个月前更新)
- 为简化内容,本文仅介绍标准版。
- 中文加强版:https://github.com/hsliuping/TradingAgents-CN,4.7K
star(一周前更新)
- 针对 A 股信息源进行调整
- 加强了新闻功能的使用
- 加强了 Docker 部署部分
- Streamlit界面
- 基于国内模型优化
1.1 数据来源
用法见:获取金融数据_总览
1.2 模型
实验中使用 o1-preview
和 gpt-4o
分别作为深度思考与快速思考的大语言模型。但测试时建议使用
o4-mini
和 gpt-4.1-mini
以节省成本,框架会发起大量 API 调用。
1.3 代码
概览:该项目由 Python 语言编写,代码 3500+ 行,分为三个主要部分:
- agent:定义了每个组和组内各成员的功能及实现,请参见具体 Prompt。
- dataflow:实现各种工具功能,如新闻抓取、信息和数据采集,以及指标计算。
- graph:构建组与成员之间的关系框架,是系统的调用入口,包含以下组件:
- ConditionalLogic:处理条件逻辑
- GraphSetup:设置和配置图结构
- Propagator:管理信息传播和状态
- Reflector:负责反思机制和记忆更新
- SignalProcessor:处理交易信号并生成最终决策
- TradingAgentsGraph:核心功能入口
1 | ├── assets 资源数据 |
- 使用的库接口都非常简便,极为用户友好,无需在细节上浪费过多时间,用起来轻松愉快。
- 新闻来源包括:FinnHub、Google 新闻、Reddit,也尝试通过 OpenAI 获取新闻信息。处理方式是:将计算的指标和收集的信息提交给大模型,由其筛选出最重要的 topN 个指标并进行解释,最后提供建议。
- 指标计算使用了 Python 的 StockStats 库。
- 记忆存储使用 ChromaDB 管理,在思考过程中每个代理都会记录,并进行嵌入。
- 接口大多与美股相关。尽管使用了 FinnHub 数据,但只是读取了之前下载的数据文件,没有真正从 FinnHub、SimFin 下载数据。调用 yfinance 库时频繁出现 429 错误,不过 GoogleNews_Utils 库依旧可用。实际使用时还需要修改。
2 依赖工具介绍
2.1 ChromaDB
ChromaDB (通常称为 Chroma )是一个开源的向量数据库,专注于存储、索引和查询向量数据,主要用于自然语言处理(NLP)和计算机视觉等领域。它提供轻量化数据存储方案,支持多模态嵌入检索,并可与大型语言模型(如 Llama3 )结合使用,实现精准文档查询。
基于 SQLite 数据库,无需复杂配置即可运行,适合中小型项目。
ChromaDB 支持这两种模式:
2.1.1 客户端 - 服务器模式(多客户端共享)
可以启动一个 ChromaDB 服务器,多个客户端连接:
# 启动 ChromaDB 服务器
1 | chroma run --host localhost --port 8000 |
# 客户端连接到服务器
1 | import chromadb |
2.1.2 嵌入式模式(单客户端,类似 SQLite)
就像当前代码中使用的方式,直接创建本地客户端:
当前代码使用的方式 - 嵌入式模式
1 | client = chromadb.Client(Settings(allow_reset=True)) |
或者指定持久化路径
1 | client = chromadb.PersistentClient(path="/path/to/chroma/data") |
2.2 LangGraph
LangGraph 是一种基于 LangChain 构建的智能体编排框架,通过状态机驱动,将 Agent 系统设计为有向图流程图。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.