告别 Excel 熬夜:用 LazyLLM 框架轻松构建自动化财报分析 Agent
现在是 2026 年 2 月 22 日凌晨的华沙,很多人还在为季度/年度财报手动抠 Excel 表格、算比率、写分析总结而熬夜。
今天我们用 LazyLLM(商汤开源的低代码多 Agent 框架)来彻底解放双手:构建一个自动化财报分析 Agent,它能:
- 读取 PDF/Excel 财报文件(或从邮箱/企业网盘拉取)
- 提取关键财务数据(资产负债表、利润表、现金流量表)
- 计算常见财务指标(毛利率、ROE、流动比率、速动比率、负债率等)
- 对比多期/竞品数据
- 生成结构化分析报告(Markdown / Word / PPT 格式)
- 支持自然语言提问(如“为什么本季度净利润下降了?”)
整个流程用 不到 50 行核心代码 就能跑起来,LazyLLM 的低代码 + 多 Agent 特性让它特别适合这类“半结构化数据 + 分析 + 报告生成”的场景。
为什么选 LazyLLM 而不是 LangChain / CrewAI / AutoGen?
| 维度 | LazyLLM | LangChain / CrewAI 等传统框架 | 为什么对财报 Agent 友好? |
|---|---|---|---|
| 代码量 | 极低(10–50 行常见) | 中等~高 | 财务人员/分析师也能快速改 |
| Agent 编排 | 内置 Pipeline + Agent + Tool | 需要手动组合 | 财报分析天然是多步:提取 → 计算 → 分析 → 报告 |
| 工具集成 | 支持 MCP、文件、数据库、代码执行 | 需自己写大量 Tool | 轻松接入 PDF 解析、Excel、财务计算库 |
| 模型无关 | 支持 OpenAI / 通义 / DeepSeek 等 | 类似 | 国内模型性价比高,财报中文理解更好 |
| 部署难度 | 一行启动 Web / CLI / API | 需额外配置 | 给老板/同事一个网页或命令行工具即可 |
快速上手:环境准备(5 分钟)
# 推荐 python 3.10–3.11
pip install lazyllm[all] # 包含 agent-advanced,支持 MCP 等
pip install pandas openpyxl PyPDF2 python-docx python-pptx # 财报常用依赖
# 如果要用国内模型,推荐安装 ollama 或通义 dashscope sdk
核心代码:一个完整的财报分析 Agent(复制粘贴就能跑)
import lazyllm
from lazyllm import pipeline, agent, tool, Document, finetune
import pandas as pd
from pathlib import Path
import json
# ── 工具1:读取并解析财报文件(PDF / Excel)
@tool()
def extract_financial_data(file_path: str) -> str:
"""从 PDF 或 Excel 财报中提取表格数据,返回 JSON 格式"""
path = Path(file_path)
if path.suffix.lower() == '.pdf':
# 简单示例:实际可换用 pdfplumber / tabula-py / marker 等更强工具
from PyPDF2 import PdfReader
reader = PdfReader(path)
text = "\n".join(page.extract_text() for page in reader.pages if page.extract_text())
# 这里实际项目中建议用 LLM 结构化提取,或专用财务 OCR
return json.dumps({"raw_text": text[:2000], "note": "需进一步结构化"})
elif path.suffix.lower() in ['.xlsx', '.xls']:
df_dict = pd.read_excel(path, sheet_name=None)
return json.dumps({sheet: df.to_dict(orient='records') for sheet, df in df_dict.items()})
return json.dumps({"error": "不支持的文件格式"})
# ── 工具2:计算财务指标
@tool()
def calculate_financial_ratios(data_json: str) -> str:
"""输入提取的财务数据 JSON,计算常见比率并返回报告"""
try:
data = json.loads(data_json)
# 假设已提取关键字段(实际可更智能)
if '利润表' in data:
profit = pd.DataFrame(data['利润表'])
revenue = profit.get('营业收入', [0])[0]
cost = profit.get('营业成本', [0])[0]
gross_profit = revenue - cost
gross_margin = gross_profit / revenue if revenue else 0
return f"""
毛利率:{gross_margin:.2%}
毛利额:{gross_profit:,.2f} 元
(更多指标:ROE、流动比率等可继续扩展)
"""
return "数据格式不完整,无法计算"
except Exception as e:
return f"计算出错:{str(e)}"
# ── 工具3:生成分析报告(用 LLM 润色)
report_prompt = """
你是一位资深财务分析师。根据以下数据和计算结果,生成一份专业、简洁的财报分析报告(300-500字)。
重点包括:
1. 核心财务指标亮点与异常
2. 同比/环比变化原因推断
3. 经营风险与建议
数据:{data}
"""
# ── 组装 Pipeline + Agent
data_extractor = lazyllm.pipeline(extract_financial_data)
analyzer = lazyllm.agent(
tools=[calculate_financial_ratios],
llm=lazyllm.llm.chat('deepseek-chat'), # 或 openai / qwen 等
prompt="你是一个财报分析专家。用户会给你财报文件路径,先提取数据,然后计算指标,最后写报告。"
)
reporter = lazyllm.pipeline(
lazyllm.llm.chat('deepseek-chat', system_prompt=report_prompt)
)
# 完整工作流
财报分析链 = lazyllm.pipeline(
data_extractor >> analyzer >> reporter
)
# ── 启动 Web 界面(老板/同事最爱)
app = lazyllm.Application(财报分析链)
app.run() # 默认 http://localhost:port ,输入文件路径或拖文件即可
扩展方向(让它更强)
- 接入真实财报提取
- 用 marker-pdf / unstructured / pdfplumber 替换简单 PyPDF2
- 或直接用 MCP Server + 亮数据 / 企业网盘工具拉取最新财报
- 多期对比 & 竞品分析
- 加一个工具:
compare_periods(period1_json, period2_json) - 或接入 Wind / Choice / 东财数据接口(需合规)
- 支持自然语言交互
lazyllm.agent(tools=[extract_financial_data, calculate_financial_ratios], auto=True)
# 用户问:“帮我分析这份年报的盈利能力” → 自动调用工具链
- 输出格式升级
- 用 python-pptx / docx 生成带图表的 PPT/Word
- 加 matplotlib/seaborn 自动画柱状图、趋势线
- 定时自动化
- 用 APScheduler / cron 每周一早自动跑最新财报 → 推送到企业微信/邮箱
避坑指南(财报 Agent 专属)
- 数据准确性第一:永远不要完全信任 LLM 提取的数字 → 必须有规则校验(如合计校验、借贷平衡)
- 隐私与合规:财报敏感,建议本地部署模型 + 本地文件处理
- Token 消耗:长财报 PDF 容易爆 token → 先用工具切表/摘要,再喂给 LLM
- 模型选择:中文财报推荐 DeepSeek、Qwen2.5、Claude-3.5(数值理解强)
用 LazyLLM,你真的可以把周末的 Excel 地狱变成“周一早上一杯咖啡看报告”的幸福。
想看更详细的代码(含 PPT 生成、多文件对比、MCP 拉取财报)?
或者你有具体的财报格式/公司?贴上来,我帮你定制~
早安,华沙的金融战士们!今天别再熬夜抠表了~