AI赋能金融研报自动化生成:智能体系统架构与实现

项目概述

这是一个基于人工智能技术构建的智能体系统,专注于自动化生成高质量的金融研究报告。该项目通过多智能体协作、RAG检索增强和数据可视化等技术,实现了从用户需求解析到研报内容生成、美化、聚合的全流程自动化。

效果图:

系统架构设计

项目采用了模块化、分层设计的系统架构,整体流程如下图所示:

核心组件

  1. 用户交互层

    • 基于Dify平台构建的Web交互界面

    • 支持用户输入研报需求,如"请撰写一篇宁德时代(300750)的研报"

    • 提供研报下载功能

  2. 任务解析与调度层

    • 意图识别:理解用户需求
    • 任务拆分:将复杂任务分解为可独立执行的子任务
    • 任务调度:协调各子任务的执行顺序和资源分配
  3. 智能体执行层

    • 子任务执行Agent:负责具体数据查询和分析
    • 内容润色Agent:美化分析结果,添加图表和可视化
  4. 数据服务层

    • 集成多种金融数据API(Akshare、东方财富等)
    • 向量数据库支持知识检索
    • 数据处理和转换工具
  5. 报告生成层

    • 研报内容聚合
    • 模板填充
    • HTML/Markdown/PDF格式转换

核心功能模块详解

1. FastAPI服务接口

项目通过FastAPI框架提供了完整的REST API接口,作为系统的核心入口:

python 复制代码
# 创建FastAPI应用
app = FastAPI(title="金融研报自动化服务", version="1.0.0")

# 研报生成接口
def _gen_report(req: ExecSubTaskRequest):
    # 解析序号
    seq_no = req.sub_task_work_dir.split('-')[-1]
    # 处理模板数据
    temp_ret = handleTemplate.handle(req,seq_no)
    # 执行子任务
    sub_task_results = exec_sub_task(req)
    # 聚合研报
    agg_req = AggFinReportRequest(stock_code=req.stock_code, stock_name=req.stock_name, seq_no=seq_no)
    agg_result = agg_fin_report(agg_req)

系统提供了以下关键接口:

  • /fin/search - 金融数据查询接口
  • /fin/exec_sub_task - 执行子任务接口
  • /fin/agg_fin_report - 研报内容聚合接口
  • /fin/gen_report - 研报生成主接口
  • /fin/download_report - 研报下载接口

2. 子任务执行智能体

子任务执行智能体是系统的核心处理单元,负责根据具体任务描述获取和分析金融数据:

python 复制代码
# 创建子任务执行智能体
def ext_sub_task_agent(query_text: str) -> str:
    # 执行智能体
    try:
        response = agent_executor.invoke(
            input={"query_text": query_text},
            config={"recursion_limit": 30}
        )
        return response["output"]
    except Exception as e:
        print(f"子任务执行异常:{e}")
        return f"子任务执行异常:{str(e)}"

该智能体配备了多种工具:

  • search_interface:搜索合适的数据接口
  • execute_code:执行Python代码获取数据
  • knowledge_base_search:检索知识库
  • knowledge_base_insert:将获取的数据存入知识库

3. 内容润色智能体

润色智能体负责将原始数据转换为结构化、可视化的研报内容:

python 复制代码
def exec_beautify(stock_code: str,original_tile:str,original_text: str,sub_task_dir: str) -> str:
    # 执行润色Agent
    response = agent_executor.invoke(
        input={"original_tile": original_tile,"original_text": original_text,"sub_task_dir":sub_task_dir},
        config={"recursion_limit": 30}
    )
    return response["output"]

润色智能体的工具集包括:

  • save_to_file:保存内容到文件
  • gen_line_chart:生成折线图
  • gen_pie_chart:生成饼图
  • gen_bar_chart:生成柱状图
  • gen_plot_relative_chart:生成双序列对比图

4. 研报汇总模块

该模块负责将各个子任务生成的内容聚合为完整的研报:

python 复制代码
def agg(self, stock_code:str,stock_name:str,seq_no:str, report_root_dir:str = './report_files') -> Dict:
    # 读取所有Markdown文件,合并在一起
    report_content: str = self._get_report_files(stock_code,report_root_dir)
    # 调用大模型,聚合研报内容
    aiMessage = self.chain.invoke(input={"company_information": report_content})
    # 使用html模板文件,替换参数,生成新的html文件
    ret = self._save_to_html(stock_code=stock_code, stock_name=stock_name, seq_no=seq_no,data_dict=data_dict)
    # 提炼投资要点
    aiMessage = self.chain.invoke(input={"report_content": aiMessage.content})

5. 数据可视化模块

系统提供了丰富的数据可视化功能,支持生成各类图表:

python 复制代码
def gen_line_chart(params: Dict[str, Any]) -> str:
    # 从参数字典中提取值
    data = params.get("data", [])
    title = params.get("title")
    # 绘图
    plt.figure(figsize=(6, 4))
    x_vals, y_vals = zip(*data) if data else ([], [])
    plt.plot(x_vals, y_vals, marker='o')
    plt.title(title)
    # 保存
    plt.savefig(abs_path)
    plt.close()
    return abs_path

该模块自动处理中文字体显示问题,确保在不同操作系统环境下图表都能正确显示中文。

6. 模板处理模块

负责处理研报模板,填充数据并生成最终报告:

python 复制代码
def _handle_base_data(self, req : ExecSubTaskRequest,seq_no:str) -> Dict:
    # 收集基础数据
    sub_task_exec_result = sub_task_agent.ext_sub_task_agent(query_text=query_text)
    # 转换成json对象
    sub_task_exec_result = json.loads(sub_task_exec_result)
    # 填充到模板
    ret = self.filled_template_file(data_dict=sub_task_exec_result,
        stock_name=req.stock_name,
        stock_code=req.stock_code,
        seq_no=seq_no,
        file_name="report_template.html",
        file_dir="template")

数据查询与处理

项目集成了Akshare等金融数据API,提供丰富的数据查询能力:

python 复制代码
def gen_stock_chg_dc(self, stock_code: str, start_date: str, end_date: str) -> Dict:
    # 获取历史行情数据
    stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol=stock_code, period="daily", start_date=start_date, end_date=end_date, adjust="qfq")
    # 计算涨跌幅
    stock_zh_a_hist_df['涨跌幅'] = (stock_zh_a_hist_df['收盘'] - start_close) / start_close * 100
    return {
        "date": dates,
        "chg": stock_zh_a_hist_df['涨跌幅'].tolist()
    }

工作流程详解

  1. 用户请求处理

    • 用户通过Dify平台发起研报生成请求
    • 系统识别公司名称和股票代码
    • 将请求转发至后端FastAPI服务
  2. 任务拆分与执行

    • LLM模型将用户需求拆分为多个子任务
    • 系统为每个子任务创建工作目录
    • 依次调用子任务执行Agent处理每个子任务
    • 子任务执行Agent通过搜索接口、执行代码等方式获取数据
    • 将获取的数据存储到向量数据库中
  3. 内容润色与可视化

    • 内容润色Agent接收原始数据
    • 对数据进行结构化处理
    • 根据数据类型选择合适的图表类型进行可视化
    • 将处理后的内容保存为Markdown文件
  4. 研报聚合与生成

    • 研报汇总模块读取所有子任务生成的Markdown文件
    • 调用大模型将内容聚合为完整的研报
    • 提取投资要点和评级信息
    • 将内容填充到HTML模板,生成最终研报
  5. 用户反馈

    • 系统返回研报下载链接
    • 用户可下载生成的研报(支持HTML、PDF等格式)

技术栈与工具

类别 技术/工具 用途 来源
后端框架 FastAPI 提供REST API接口 fin_api.py
LLM模型 DeepSeek、阿里云模型 任务拆分、内容生成与聚合 llm_model.py
智能体框架 LangChain 构建智能体系统 sub_task_agent.py
金融数据源 Akshare 获取金融市场数据 query_data.py
向量数据库 Milvus 知识存储与检索 milvus_tool.py
数据可视化 Matplotlib 生成各类图表 chart_tool.py
前端平台 Dify 用户交互界面 金融报告自动化生成.yml

系统评估与优化

项目采用了"大模型即评委"的评估模式,对生成的研报进行多维度评估:

评估指标 智能体生成研报 财经网站下载研报
内容准确性与数据可靠性 8.5 9.2
逻辑结构与论证深度 7.0 8.5
金融专业知识应用 8.0 8.0
清晰度与可读性 9.0 9.5
风险提示与客观性 8.5 9.0
总分 8.2 8.8

评估结果显示,系统生成的研报在清晰度与可读性方面表现优异,但在逻辑结构和论证深度方面还有提升空间。

关键创新点

  1. 多智能体协作架构:通过子任务拆分和多智能体协作,实现了复杂金融研报的模块化生成

  2. 工具增强智能体:智能体配备了丰富的工具集,能够执行代码、搜索接口、生成图表等复杂操作

  3. RAG检索增强:结合向量数据库实现知识存储和检索,提高了研报内容的准确性和相关性

  4. 自动数据可视化:根据数据类型自动选择合适的图表类型,生成直观、专业的数据可视化内容

  5. 完整的工作流:实现了从用户需求到研报生成、美化、聚合、下载的全流程自动化

未来进化方向

  1. 提升研报质量:优化智能体的推理能力,提高研报的逻辑结构和论证深度

  2. 扩展数据源:整合更多金融数据源,丰富研报内容的广度和深度

  3. 增强可视化能力:支持更多类型的图表和交互式可视化效果

  4. 个性化定制:支持用户根据自身需求定制研报结构和内容重点

  5. 实时更新机制:实现研报内容的实时更新,提高研报的时效性

总结

该项目通过人工智能技术,特别是大语言模型和智能体系统,实现了金融研报的自动化生成。系统采用模块化设计,具备良好的可扩展性和灵活性,能够生成高质量、图文并茂的金融研究报告。在某些方面还有提升空间,为金融研究工作提供了强大的辅助工具。

通过自动化生成研报,该系统能够大幅提高金融研究人员的工作效率,降低研究成本,同时保证研报的专业性和准确性。随着技术的不断发展和完善,这类智能系统有望在金融研究、投资决策等领域发挥越来越重要的作用。

上一篇《智能体赋能金融多模态报告自动化生成:技术原理与实现流程全解析

开源代码库

相关推荐
架构师日志2 小时前
Google开源框架LangExtract实践(1)——Docker部署,免费、低碳、无需GPU、多种大模型灵活切换,绝对可用!
人工智能
嘀咕博客2 小时前
MiniMax - 稀宇科技推出的AI智能助手
人工智能·科技·ai工具
九章云极AladdinEdu2 小时前
深度学习优化器进化史:从SGD到AdamW的原理与选择
linux·服务器·开发语言·网络·人工智能·深度学习·gpu算力
dlraba8022 小时前
Python 实战:票据图像自动矫正技术拆解与落地教程
人工智能·opencv·计算机视觉
过河卒_zh15667662 小时前
9.13AI简报丨哈佛医学院开源AI模型,Genspark推出AI浏览器
人工智能·算法·microsoft·aigc·算法备案·生成合成类算法备案
程序员ken2 小时前
深入理解大语言模型(5)-关于token
人工智能·语言模型·自然语言处理
Codebee2 小时前
OneCode 移动套件多平台适配详细报告
前端·人工智能
sinat_286945193 小时前
Case-Based Reasoning用于RAG
人工智能·算法·chatgpt
许泽宇的技术分享3 小时前
AI时代的内容创作革命:深度解析xiaohongshu-mcp项目的技术创新与实战价值
人工智能