@TOC
一、引言
财务报告分析是企业运营管理、投资决策制定及风险评估的核心环节。然而,传统财务分析流程普遍存在效率瓶颈:分析师需要从PDF年报、Excel表格等多样化数据源中手动提取、清洗和整合数据,这个过程既耗时又容易出错。
基础财务指标计算、趋势分析及初步风险识别等任务涉及大量重复性操作,限制了分析师投入高价值战略性工作的时间,此外,人工分析容易受个人经验和判断影响,可能导致分析结果缺乏一致性和客观性。
近年来,人工智能技术特别是大型语言模型(LLM)与智能体(Agent)的快速发展,为解决这些挑战提供了新的技术范式。本文将介绍如何利用LazyLLM框架,构建一个专用于财务分析的Agent,实现从原始财务文件到生成结构化财务健康报告及投资风险点的端到端自动化处理。
二、LazyLLM架构简述与Agent设计
2.1、LazyLLM架构简述
LazyLLM是由商汤科技研发的一站式多Agent大模型应用开发框架,旨在为开发者提供方便、高效的环境来构建复杂的AI应用。其核心技术之一是检索增强生成(Retrieval-Augmented Generation, RAG),RAG通过引入一个外部知识库,有效地扩展了LLM的知识边界。
当用户提出一个问题时,RAG系统首先会利用用户的查询,从一个预先构建好的知识库(例如,包含公司年报、行业报告、新闻文章等的文档集合)中检索出最相关的文档片段,然后,这些检索到的文档片段会与用户的原始查询一起,作为上下文(context)输入到LLM中,最后,LLM基于这些提供的上下文信息,生成最终的回答。

通过这种方式,RAG确保了生成的内容有据可依,大大提高了回答的准确性、可靠性和时效性。在财务分析场景中,RAG技术尤为重要。例如,当分析师询问"上汽集团2024年的新能源汽车销量是多少?"时,RAG系统可以从其知识库中检索到上汽集团2024年的年度报告,并从中提取出准确的销量数据,然后由LLM生成一个清晰、准确的回答,而不是凭空猜测或给出过时的信息。

LazyLLM框架采用了高度模块化的设计,将复杂的AI应用拆解为一系列可复用、可组合的独立组件,其中核心的三个组件是检索器(Retriever)、生成器(Generator)和知识库(Knowledge Base)。这种模块化的架构极大地提升了开发的灵活性和效率。
- 首先,知识库(Knowledge Base) 是整个系统的基础,负责存储和管理用于检索的文档数据。
- 其次,检索器(Retriever)负责根据用户的查询,从知识库中高效地检索出最相关的信息。LazyLLM提供了多种检索策略,例如基于关键词的BM25检索和基于语义的向量检索,开发者可以根据具体的应用场景和数据特点,选择合适的检索算法,并配置检索返回的文档数量(top-k)等参数。
- 最后,生成器(Generator) 通常是一个大型语言模型(LLM),它负责根据检索到的信息和用户的查询,生成最终的回答。LazyLLM支持接入多种在线和离线的LLM,如OpenAI的GPT系列、智谱GLM、通义千问等。开发者可以通过简单的配置,指定使用的模型,并设计Prompt模板,以引导模型生成符合要求的、高质量的文本。
这三个核心组件通过LazyLLM提供的pipeline
等流程控制工具,可以像搭积木一样灵活地组合在一起,构建出功能强大的财务分析Agent。
2.2、财报分析Agent工作流设计蓝图
在设计之前,我们首先要弄清楚要做什么,我们的财报分析Agent的工作流设计蓝图涵盖数据输入与知识库构建、用户查询与意图识别、信息检索与数据提取、报告生成四个核心环节。

首先通过LazyLLM框架的Document模块加载PDF年报,为分析提供全面数据基础。在意图识别阶段,利用大语言模型解析用户自然语言查询,将其分解为结构化分析任务(如计算特定年份的财务指标并进行对比),并转化为JSON格式的可执行指令。
随后,基于RAG技术,Agent根据子任务生成检索查询,从知识库中精准提取所需数据,同时支持对表格和文本信息的解析与定位。最终,通过预设的Prompt模板,LLM将数据与指标整合生成结构化财务报告,涵盖盈利能力、偿债能力等多维分析,并自动识别关键风险点(如资产负债率过高、利润下滑等),形成具有专业洞察和风险评估的最终输出,全面提升财报分析的效率与深度。
三、实战:使用LazyLLM构建财务分析Agent
3.1、环境配置
为了避免不同项目之间的依赖库版本冲突,强烈建议为LazyLLM项目创建一个独立的Python虚拟环境,我这里选择使用Anaconda进行管理,首先输入conda create lazyllm创建一个新的虚拟环境,然后使用conda activate lazyllm激活环境

LazyLLM提供了多种安装方式,以适应不同的使用场景和用户需求。在仓库中提供了2种安装:源码安装和pip安装,这里采用源码安装的方式:
shell
git clone git@github.com:LazyAGI/LazyLLM.git
cd LazyLLM
pip install -r requirements.full.txt

也可以通过<font style="background-color:rgb(187,191,196);">pip</font>
进行安装,只需在命令行中运行<font style="background-color:rgb(187,191,196);">pip install lazyllm</font>
即可。
3.2、模型与数据准备
在运行项目之前,我们需要准备好模型与数据,由于本地没有比较好的算力,我这里选择了在线API的形式,首先登录:signin.sensecore.cn/,进入console.sensecore.cn/aistudio/ma...开通大模型服务,我这里开通了DeepSeek V3模型。

然后打开账号中心------AccessKey访问密钥,创建访问密钥,并将秘钥保存到本地

然后在本地,打开终端,输入以下指令,将刚刚拿到的API key设置为环境变量,
shell
set LAZYLLM_SENSENOVA_API_KEY="********"
set LAZYLLM_SENSENOVA_SECRET_KEY="******"

至此,就能成功通过在线API访问平台的模型了!
下一步,我们需要准备高质量的数据。知识库方面,我们引入第三方金融数据平台和研究机构所提供的分析资料作为知识库,例如东方财富网、同花顺、雪球等平台发布的个股研报、行业研报、策略报告、宏观分析和资深专家解读等材料。这些资源通常会对原始财务数据进行整合、加工与可视化处理,并提供多角度的洞察与评价,有助于增强分析的深度与广度,为财务评估和决策支持提供更全面的参考依据,我们将其下载并整理到本地待用。

3.3、工作流编排
完成环境、 模型和数据准备后,下面我们开始编排工作流,整个工作流采用数据流驱动架构,将端到端的分析流程解耦为文档加载、检索增强、上下文构建和生成四个逻辑阶段。
文档加载阶段通过Document组件封装原始财报数据的预处理和向量化,为后续检索奠定基础;检索阶段使用Retriever组件基于中文语义相似度从文档库中精准提取最相关的文本片段。上下文格式化阶段通过lambda函数将检索结果与用户查询动态组合。生成阶段通过OnlineChatModule集成大语言模型,并结合专门设计的结构化中文提示词模板,将财务分析任务转化为条件文本生成。
另外,这里提示词需要明确定义AI作为专业财务分析助手的身份和功能,建立专业语境和职责边界,这种角色锚定方法有效引导模型进入特定领域思维模式,核心任务上将复杂的财报分析任务系统性地拆解为财务健康度分析和投资风险识别两大维度,每个维度下又进一步细化为多个分析子项,设计上采用了明确的章节标记和编号体系,为模型提供了清晰的内容组织框架。
完整代码如下所示:
shell
import lazyllm
from lazyllm import bind
# 文档加载 - 修改为财报数据路径
documents = lazyllm.Document(dataset_path="/path/to/financial_reports") # 请替换为实际的财报数据路径
# 修改prompt为中文财报分析专用提示
prompt = '你是一名专业的财务分析AI助手,专门从事上市公司年报的深度分析。\
你的核心任务是实现从原始年报文档到生成结构化财务健康报告及投资风险点的端到端自动化处理。\
\n\n请按照以下结构化框架进行分析:\
\n\n## 财务健康度分析报告\
\n### 1. 盈利能力分析\
- 营业收入及增长率\
- 净利润及净利率\
- 毛利率和营业利润率趋势\
- ROE和ROA指标\
\n### 2. 偿债能力分析\
- 资产负债率\
- 流动比率和速动比率\
- 利息保障倍数\
\n### 3. 运营效率分析\
- 应收账款周转率\
- 存货周转率\
- 总资产周转率\
\n### 4. 现金流分析\
- 经营活动现金流净额\
- 自由现金流\
- 现金流与利润匹配度\
\n\n## 投资风险点识别\
### 1. 财务风险\
- 债务风险指标\
- 流动性风险\
- 盈利能力下滑风险\
\n### 2. 经营风险\
- 行业竞争风险\
- 客户集中度风险\
- 供应链风险\
\n### 3. 市场风险\
- 估值水平分析\
- 同业比较风险\
\n\n请基于提供的年报文档内容,自动提取关键财务数据,计算相关比率指标,\
生成专业的结构化分析报告,并明确指出潜在的投资风险点。报告要求数据准确、\
分析深入、风险识别全面。'
with lazyllm.pipeline() as ppl:
# 检索组件定义
ppl.retriever = lazyllm.Retriever(doc=documents, group_name="CoarseChunk", similarity="bm25_chinese", topk=3)
ppl.formatter = (lambda nodes, query: {"query": query, "context_str": "".join([node.get_content() for node in nodes])}) | bind(query=ppl.input)
# 生成组件定义
ppl.llm = lazyllm.OnlineChatModule().prompt(lazyllm.ChatPrompter(instruction=prompt, extra_keys=['context_str']))
lazyllm.WebModule(ppl, port=23466).start().wait()
输入python demo.py即可运行,运行后代码会自动提示对应的网址和端口号,这里是127.0.0.1:23466

启动后如下所示:

3.4、结果展示
在本案例中,我们选择以上海汽车集团股份有限公司(简称"上汽集团",股票代码:600104)为例来分析其年报状况。我们可以从上东方财富下载其2024年的年度报告PDF文件,pdf包含了合并资产负债表、合并利润表、合并现金流量表等核心财务报表,以及详细的附注说明。

四、总结
LazyLLM在单一公司财务报告分析中的应用潜力远不止于此。未来,我们可以将这一技术范式扩展到更广泛的金融场景中。例如,可以构建一个投资组合分析Agent,它能够同时分析多个持仓股票的财务状况,并结合市场行情数据,生成整个投资组合的风险评估和优化建议。还可以开发一个信贷审批Agent,通过分析企业的财务报表、征信报告以及行业数据,自动评估其信贷风险,并给出审批建议。此外,保险理赔分析、金融欺诈检测等领域,也都可以通过构建专门的Agent,实现流程的自动化和智能化,从而大幅提升效率和准确性。
- 更多案例分享可关注公众号:LazyLLM 即可获取

五、更多资源附件
资源名称 | 资源链接 |
---|---|
bilibili官方课程链接 | www.bilibili.com/video/BV1kS... |
Github 仓库链接&帮助文档 | github.com/LazyAGI/Laz... |
LazyLLM环境配置说明 | docs.lazyllm.ai/zh-cn/stabl... |