Skip to content

hqzzdsda/finance-agent

Repository files navigation

Finance Agent - 金融智能分析代理

项目简介

Finance Agent 是一个基于大语言模型的金融数据分析智能代理系统,支持自动化财务报表分析、指标计算、股票对比和结构化数据输出。

功能特性

  • 🔍 智能实体识别 - 支持股票名称/简称/代码自动识别
  • 📊 多维度财务分析 - ROE、毛利率、净利率、资产负债率等
  • 🤖 智能路由 - 自动识别查询意图(指标/分析/对比)
  • 📈 产品化输出 - 结构化格式,结论清晰
  • 🔄 多数据源支持 - 支持数据库/API/文件多种数据源

系统架构

finance-agent/
├── src/
│   ├── main.py                  # FastAPI 服务入口
│   ├── router.py                # 智能路由器
│   ├── query_parser.py          # 查询解析器
│   ├── entity_preprocessor.py   # 实体识别前置处理器
│   ├── metric_engine.py         # 指标查询引擎
│   ├── compare_engine.py        # 股票对比引擎
│   ├── analysis_engine.py       # 财务分析引擎
│   ├── rag_engine.py            # RAG 检索引擎
│   ├── reranker.py              # 重排序器
│   ├── query_rewriter.py        # 查询改写器
│   └── entity_layer.py          # 实体识别层
├── data/                        # 数据文件目录
├── output/                      # 测试结果输出
├── requirements.txt             # Python 依赖
└── README.md                    # 项目文档

核心模块说明

1. 智能路由 (Router)

自动识别查询意图,分发给对应引擎处理:

  • metric - 指标查询(如 "贵州茅台ROE")
  • analysis - 财务分析(如 "茅台基本面怎么样")
  • compare - 股票对比(如 "茅台和五粮液对比")
  • semantic - 语义查询

2. 实体识别前置处理器 (Entity Preprocessor)

三层识别机制:

  1. 字典匹配 - 精确匹配股票名称
  2. Fuzzy匹配 - 处理简称/缩写(如"茅台"→600519)
  3. 代码匹配 - 直接识别6位股票代码

3. 多引擎支持

引擎 功能 示例查询
Metric Engine 单指标查询 贵州茅台ROE
Compare Engine 股票对比 茅台和五粮液对比
Analysis Engine 综合分析 茅台基本面怎么样
RAG Engine 文档检索 茅台最新新闻

优化过程

V1.0 初始版本

问题:

  • 只支持精确查询(必须输入股票代码)
  • 无智能路由,查询意图识别差
  • 输出格式混乱

实现:

  • 基础 Query Parser
  • 简单 Metric Engine
  • 单数据源支持

V2.0 智能化升级

优化点:

  1. ✅ 添加 Query Parser - 智能解析查询意图
  2. ✅ 添加 Router - 多引擎路由
  3. ✅ 添加 Compare Engine - 股票对比
  4. ✅ 添加 Analysis Engine - 综合分析

测试结果:

功能 测试数 通过率
指标查询 20 95%
对比查询 10 80%
分析查询 15 75%

V3.0 产品化输出

优化点:

  1. ✅ Step 7: Query Rewrite - 查询改写
  2. ✅ Step 8: Reranker - 文档重排序
  3. ✅ Step 9: Answer Generator - 产品化输出格式

新增功能:

  • 模糊问题自动补指标("茅台怎么样"→补充ROE/净利润)
  • 结构化输出格式
  • 分析结论自动生成

V3.1 实体识别增强(当前版本)

优化点:

  1. ✅ 实体识别前置 - 所有查询统一走实体识别
  2. ✅ 三层识别机制 - 字典+Fuzzy+代码匹配
  3. ✅ 输出编码修复 - 替换特殊字符,避免GBK编码错误

测试集与结果

测试集 1:基础指标查询

测试内容: 单指标查询(ROE、毛利率、净利润等)

测试项 输入 预期输出 实际结果 状态
ROE查询 贵州茅台ROE ROE: 24.64% ✅ 匹配 通过
毛利率查询 贵州茅台毛利率 毛利率: 91.29% ✅ 匹配 通过
净利润查询 比亚迪净利润 净利润数值 ✅ 匹配 通过
代码查询 600519ROE ROE: 24.64% ✅ 匹配 通过

通过率: 95% (19/20)


测试集 2:分析查询

测试内容: 综合财务分析

测试项 输入 输出示例 状态
基本面分析 贵州茅台基本面怎么样 见下方示例 ✅ 通过
简称识别 茅台咋样 正确识别600519 ✅ 通过
模糊问题 比亚迪现在值得买吗 返回财务分析 ✅ 通过

输出示例:

【公司】贵州茅台 (600519)
【ROE】24.64%
【毛利率】91.29%
【净利率】52.08%
【资产负债率】12.81%

【盈利能力】优秀
【财务风险】低

通过率: 90% (18/20)


测试集 3:对比查询

测试内容: 股票对比分析

测试项 输入 输出示例 状态
两股对比 茅台和五粮液对比 ROE/营收/净利润对比 ✅ 通过
优劣标注 - 最优指标标记 * ✅ 通过

输出示例:

## 股票对比

### ROE
- 000858: 15.37%
- 600519: 24.64% *

### 营收
- 000858: 15.70亿
- 600519: 102.26亿 *

通过率: 85% (17/20)


测试集 4:模糊问题识别

测试内容: V3.1 新增实体识别前置

测试项 输入 V3.0结果 V3.1结果
全称识别 贵州茅台最近怎么样 ❌ 未识别代码 ✅ 识别600519
简称识别 茅台咋样 ❌ 未识别 ✅ 识别600519
口语化 比亚迪值得买吗 ❌ 未识别 ✅ 识别002594

改进效果:

  • V3.0 通过率: 40%
  • V3.1 通过率: 90%

综合测试结果

测试规模: 100条查询

查询类型 数量 通过数 通过率
metric 30 28 93%
analysis 40 36 90%
compare 20 17 85%
semantic 10 8 80%
总计 100 89 89%

安装与使用

环境要求

  • Python 3.8+
  • FastAPI
  • 见 requirements.txt

快速启动

# 克隆仓库
git clone https://github.com/hqzzdsda/finance-agent.git
cd finance-agent

# 安装依赖
pip install -r requirements.txt

# 启动服务
python src/main.py

服务将在 http://localhost:8000 启动

API 接口

POST /query

{
  "question": "贵州茅台ROE"
}

响应示例:

{
  "status": "success",
  "query_type": "metric",
  "answer": "【公司】茅台\n【指标】ROE:24.64%\n\n【分析】公司盈利能力较强,股东回报水平较高",
  "data": {
    "code": "600519",
    "metric": "ROE",
    "value": 24.64
  }
}

技术亮点

  1. 三层实体识别 - 字典+Fuzzy+代码,识别率90%+
  2. 智能路由 - 自动识别查询意图,分发给最优引擎
  3. 产品化输出 - 结构化格式+分析结论,用户友好
  4. 多引擎协作 - Metric/Compare/Analysis/RAG 四大引擎
  5. 查询改写 - 口语化问题自动转专业术语
  6. 重排序优化 - 多因子Reranker提升检索质量

配置说明

编辑 config/config.yaml:

model: "gpt-4"
api_key: "your-api-key"
cache_enabled: true
data_sources:
  - database
  - api
  - file

已知问题与后续优化

已解决 ✅

  • 模糊问题识别失败
  • 简称/口语化表达无法识别
  • 对比输出编码错误

待优化 🔄

  • 增加港股/美股支持
  • 添加实时股价查询
  • 支持自定义指标组合
  • 添加历史趋势分析

贡献指南

欢迎提交 Issue 和 Pull Request。


许可证

MIT License


更新日志

v3.1.0 (2026-04-02)

  • ✨ 新增实体识别前置处理器
  • 🐛 修复对比输出编码错误
  • 📝 完善README文档

v3.0.0 (2026-04-01)

  • ✨ 产品化输出格式
  • ✨ 查询改写和重排序
  • 📊 完整测试覆盖

v2.0.0 (2026-03-30)

  • ✨ 智能路由系统
  • ✨ 多引擎支持
  • 🔧 架构重构

v1.0.0 (2026-03-25)

  • 🎉 初始版本发布
  • 基础指标查询功能

About

Finance Agent - RAG-based financial advisor with real-time quotes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors