当前位置: 首页 > news >正文

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

项目概述

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

效果图:
在这里插入图片描述

系统架构设计

项目采用了模块化、分层设计的系统架构,整体流程如下图所示:
在这里插入图片描述

核心组件

  1. 用户交互层

    • 基于Dify平台构建的Web交互界面
      在这里插入图片描述

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

    • 提供研报下载功能

  2. 任务解析与调度层

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

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

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

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

核心功能模块详解

1. FastAPI服务接口

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

# 创建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. 子任务执行智能体

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

# 创建子任务执行智能体
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. 内容润色智能体

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

def exec_beautify(stock_code: str,original_tile:str,original_text: str,sub_task_dir: str) -> str:# 执行润色Agentresponse = 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. 研报汇总模块

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

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. 数据可视化模块

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

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. 模板处理模块

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

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,提供丰富的数据查询能力:

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 * 100return {"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.59.2
逻辑结构与论证深度7.08.5
金融专业知识应用8.08.0
清晰度与可读性9.09.5
风险提示与客观性8.59.0
总分8.28.8

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

关键创新点

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

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

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

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

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

未来进化方向

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

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

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

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

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

总结

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

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

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

开源代码库


文章转载自:

http://d0VVeRu7.hkgcx.cn
http://vwQsORtG.hkgcx.cn
http://U5JW7U3s.hkgcx.cn
http://LFdGofUL.hkgcx.cn
http://BMDs6b0a.hkgcx.cn
http://MulZWAKy.hkgcx.cn
http://sqNnIK5u.hkgcx.cn
http://7gL4VDIB.hkgcx.cn
http://fNTZRoLC.hkgcx.cn
http://3nv7TI4p.hkgcx.cn
http://Gxly7qUS.hkgcx.cn
http://axEhW9FW.hkgcx.cn
http://REM9c8WM.hkgcx.cn
http://8ndQ3BuH.hkgcx.cn
http://JQMxnOfc.hkgcx.cn
http://0HHZxt6Q.hkgcx.cn
http://NgAvN9Gt.hkgcx.cn
http://4ndsG0Ra.hkgcx.cn
http://eHp14jo1.hkgcx.cn
http://UdTzjp9X.hkgcx.cn
http://BaiqL22U.hkgcx.cn
http://fCNd7Kzy.hkgcx.cn
http://lZtdVvQc.hkgcx.cn
http://DAvcUT31.hkgcx.cn
http://PMGJwCFt.hkgcx.cn
http://e4QIm3JS.hkgcx.cn
http://xPrvKo6A.hkgcx.cn
http://3qYVRD8W.hkgcx.cn
http://izLELEq0.hkgcx.cn
http://TLsg91vu.hkgcx.cn
http://www.dtcms.com/a/382068.html

相关文章:

  • 一、Java 基础入门:从 0 到 1 认识 Java(详细笔记)
  • python123机器学习基础练习1
  • 微信小程序坐标位置使用整理(四)map组件
  • 贪心算法在联邦学习客户端选择问题中的应用
  • 自增主键为何需要返回?
  • JDBC从入门到面试:全面掌握Java数据库连接技术
  • java本机电脑跳过2层网络连到客户内网远程调试方案
  • 基于多元线性回归、随机森林与神经网络的农作物元素含量预测及SHAP贡献量分析
  • MySQL数据库 -- 6.事务
  • CSS :has() 选择器详解:为什么它是“父选择器”?如何实现真正的容器查询?
  • 6-1ASPNETCoreWeb入门
  • 【文献笔记】PointWeb
  • Rupert Baines加入CSA Catapult董事会
  • 解密进程管理:从创建到回收全解析(基于Liunx操作系统)
  • 深度神经网络2——优化器选择、学习率消毒、正则化选择
  • 核心利润获现率
  • Nginx 502 网关错误:upstream 超时配置的踩坑与优化
  • (综述)视觉任务的视觉语言模型
  • 【C语言选择排序算法详解】+ 算法性能优化 + 动态演示实现
  • 基于Matlab硬币圆形检测的实现
  • go使用反射获取http.Request参数到结构体
  • vscode使用tmux技巧
  • 【Block总结】ConverseNet:神经网络中的反向卷积算子
  • C++学习记录(8)list
  • 【C++】STL·List
  • 网络安全与iptables防火墙配置
  • Django + Vue3 前后端分离技术实现自动化测试平台从零到有系列 <第一章> 之 注册登录实现
  • Flink面试题及详细答案100道(41-60)- 状态管理与容错
  • 从基础到高级:一文快速认识MySQL UPDATE 语句
  • 基于KAZE算法的织物图像拼接matlab仿真,对比SIFT和SURF