AI财报分析提示词:让大模型按证据链输出可复核的财务结论
简介面向金融商贸领域投资者与财务分析师的AI财报分析提示词模板聚焦上市公司年报解读解决三大报表指标计算、同行对比与现金流诊断等高频问题。资源压缩后为单个PDF文档大小约484KB内容按分析流程编排先由资深分析师角色提示词引导整体框架再逐步提取资产负债表、利润表、现金流量表关键数据并计算速动比率、资产负债率、净资产收益率、毛利率、净利率、营收增长率和净利润增长率等指标。同时覆盖八种现金流组合识别、杜邦分析法及行业分析模板帮助读者在与ChatGPT、Kimi等AI工具对话时获得更专业、更结构化的财务分析报告。当前已有185人学习适合希望提升财报解读效率、辅助投资决策的金融从业者和投资者。1. AI财报分析提示词把一句话提问变成可复核的分析流程很多人第一次用 AI 看财报是把一份 8MB 的年报 PDF 拖进对话框然后问一句“这公司怎么样”。AI 会给你一段像模像样的经营分析用词专业、逻辑完整你甚至想直接拿去发会议材料——直到你追问一句“毛利率是怎么算出来的”它开始支支吾吾或者干脆给你一个错得离谱的数字。这不是模型笨是你的提示词没有告诉它“回答必须带出处”。AI财报分析提示词推荐本质不是给你一句万能咒语而是把角色、任务、口径、校验四个环节写进指令让模型从“猜答案”变成“按流程找答案”。这篇文章写给财务分析岗、投研岗以及所有要拿 AI 结论做投资或经营决策的从业者目标是让你手里的模型换一个也能稳定输出可复核的分析结果。同样的模型提示词换一种写法结论的可用率可能从“看看就好”变成“敢进会议纪要”。差别不在玄学就在指令是否把证据链写死了。2. 通用提示词为什么在财报分析上翻车无出处、错单位、口径乱2.1 通用提示词的三个翻车现场我拿同一份上市公司年报做过测试用三种不同的“通用提问”问同一个模型结果各有各的翻车方式。第一次提问是“帮我分析一下这家公司的盈利能力”。模型的结论是“公司盈利能力稳步提升毛利率连续三年改善”。我追问“毛利率分别是多少”它给出了三组数字。我去原始财报里一找第一年的营业收入和营业成本科目根本不在同一页它把营业成本用成了销售费用第三组数字的单位还是“千元”没换成“元”。这是典型的无出处回答听起来通顺经不起逐行核对。第二次提问是“这家公司负债高不高”。模型回答“资产负债率约 65%偿债压力较大”。这本身没错但它没区分有息负债和无息负债。这家公司恰好是下游占用上游资金比较多的零售类企业应付账款占了大头实际有息负债率只有 15%。如果把“负债高不高”直接交给它判断你会误判一家经营模式健康的公司。第三次是口径混乱。模型把“单季度营业收入”和“年初至报告期末累计营业收入”放在同一张趋势图里对比结论是“营收大幅下滑”。实际上两个口径本来就不该直接相减。这类错误最难发现因为模型给出的表格非常规整你很难第一时间意识到它把不同口径的数字拼在了一起。2.2 财报分析提示词的核心机制把“答案的证据链”写进指令大模型在财报分析上的问题本质是它的训练目标更偏向“生成连贯文本”而不是“查证精确数值”。这正是提示词工程要解决的事你要通过指令把模型从“凭印象作答”拉到“按你规定的路径找数、算数、报出处”的轨道上。这里有个关键点财报分析提示词一半是提示词工程另一半是上下文工程。如果只改提示词不给模型喂组织良好的文本效果仍然有限。我一般会先把 PDF 年报转成纯文本再对文本做简单预处理——不需要多精细但要做两件事。第一把“单位千元”“单位万元”这样的行单独摘出来放在文首提醒模型。第二给关键科目所在的行加一个自然语言锚点比如在第 23 行“营业收入”前面标注“【行23】”。这样模型在回答里能直接引用“营业收入见 行23”。当提示词要求“每个结论必须指向行号”时模型就失去了瞎编的空间。很多教程让你把“请认真分析、请仔细思考”加粗放进提示词这属于典型的安慰剂。真正起作用的指令是限定输出格式、限定数据来源、限定计算步骤。后面的章节里我会把这三类指令逐一展开。2.3 一个最小可用的分析师级提示词20 行搞定在你设计完整的三明治结构之前可以先跑一个最小版本检验模型和你的 PDF 文本是否兼容。你是会计师事务所出身的财务分析师。 任务分析我上传的财务报表文本。 规则 1. 所有结论必须引用文本中的行号格式为科目行号数值。 2. 先写计算公式再代入数字最后给结论。 3. 无法定位的数据输出“数据缺失”禁止猜测。 4. 所有金额统一换算为“元”出现“千元/万元/亿元”时在结果末尾注明原始单位。 5. 回答中只出现你确认能引用的数字。这段提示词只有五条规则但每一句都在堵一个漏洞。第 1 条把“出处”变成强制项模型很难再凭空给你一个毛利率。第 2 条强制“先公式、后代入”是让计算过程暴露在外你复查时一眼能看出它把哪个分母用错了。第 3 条允许模型承认不知道这一条极其重要很多错误回答不是因为模型坏是因为它被“必须回答”的文化绑架了。第 4 条是单位保险。第 5 条是做减法让模型宁可少说不要多说。实际用的时候注意两个参数。第一把模型温度调到 0 或接近 0也就是禁用采样随机性否则同一份财报你问两遍会得到两个略有不同的结论。第二不要把这个长文本和提示词一起放进一次超长对话优先截取“资产负债表、利润表、现金流量表、重要会计政策”这几段正文和管理层讨论可以放到第二轮再说。这样跑通之后再进入下一章搭完整提示词。3. 把财报分析提示词搭成三明治结构角色、任务与校验指令的写法3.1 三明治提示词的结构角色、任务与边界一个能稳定工作的财报分析提示词我习惯写成三层。上层是角色和边界告诉模型“你是谁、你不是谁”中层是任务清单把分析步骤拆成可执行的子任务下层是输出模板与校验规则规定结果长什么样、怎么自查。结构上像一块三明治面包是角色和校验馅料是任务。下面是一套可以直接复制的主提示词已去掉我在本地用的公司名和年份占位。ROLE: 你是深度尽调风格的财务分析师。你擅长识别财务异常而不是给管理层背书。 BOUNDARY: - 你只依据提供的财报文本作答。 - 不引用文本之外的行业传闻或市场观点。 - 不确定时明确说“不确定”并说明缺什么数据。 TASK: 1. 抽取以下科目营业收入、营业成本、销售费用、管理费用、研发费用、财务费用、净利润、扣非净利润、经营活动现金流净额、投资活动现金流净额、筹资活动现金流净额、总资产、总负债、货币资金、存货、应收账款、短期借款、长期借款。 2. 计算指标毛利率、净利率、期间费用率、研发费用率、经营现金流/净利润、资产负债率、流动比率、速动比率。 3. 对每个指标给出最近两期变动并指出变动方向。 OUTPUT: - 使用 Markdown 表格输出。 - 表格列指标 | 本报告期 | 上期/去年同期 | 变动 | 计算公式 | 数据出处(行号) CHECK: - 每一行都必须有出处。 - 出现指标恶化时写一句“需关注风险”。 - 完成后用一句话说明这份财报最值得警惕的一个疑点。注意 ROLE 里我特意写了“而不是给管理层背书”。财报文本本身是公司写的隐含立场偏乐观如果提示词不点破模型容易在通篇“稳中向好”的语境里失去判断力。BOUNDARY 是把上下文锁死在给定文本防止模型调用训练时的旧知识去补一段行业分析——那些补出来的内容看着有用实际无法验证。TASK 里的科目不是随手列的每一类都对应一个分析目的。经营现金流净额和净利润的比值是利润含金量指标短期借款和货币资金对应短期偿债压力存货和应收账款是运营效率线索。如果你只关心某一个维度可以删掉不相关的科目但代价是提示词的分析广度下降。我个人建议保留全套上下文窗口够用。3.2 利润表指令怎么写让 AI 先列公式再填数财报分析里最容易出错的是利润表因为科目多、逻辑嵌套深、还经常出现“营业总收入”“营业收入”这类让人混淆的表述。给模型的指令要落到非常细。以毛利率为例。你不能只说“计算毛利率”要让模型把公式写出来再让它从文本里找分子分母。对以下每个指标执行三步操作 第一步写出公式 第二步从提供的文本中定位分子和分母标注行号 第三步代入数值计算保留两位小数。 指标列表 - 毛利率 营业收入 - 营业成本 / 营业收入 - 净利率 净利润 / 营业收入 - 期间费用率 (销售费用 管理费用 研发费用 财务费用) / 营业收入 特别注意 - 如果文本中出现“扣非净利润”使用扣非口径计算净利率并在备注中说明。 - 财务费用可能为负数计算时按文本中的原值代入不做取绝对值处理。这段指令有两个容易被忽略的细节。第一“财务费用不做取绝对值处理”是我踩出来的坑有些公司利息收入盖过利息支出财务费用为负如果模型习惯性取绝对值算出来的期间费用率完全失真。第二扣非净利润和非经常性损益的关系模型不一定知道要从“非经常性损益明细表”里找所以你需要在任务里显式指定。类似地研发费用如果在“研发投入”里单独披露要提醒模型优先使用利润表上的“研发费用”科目而不是“研发投入总额”——这两个数经常差一个资本化研发支出的量。3.3 资产负债表与现金流指令偿债压力和经营质量的三个关键核对资产负债表和现金流量表的提示词重点不在“算”而在“选口径”。资产负债率高不等于偿债风险高模型如果只是机械地用总负债除以总资产会误伤依靠应付账款做经营杠杆的公司。我一般会在提示词里加一段“负债结构判断”指令。让模型先输出三个数总负债、有息负债、无息负债。有息负债的定义在指令里写死短期借款、长期借款、应付债券、租赁负债、一年内到期的非流动负债。无息负债近似等于总负债减有息负债。然后让模型分别计算“有息负债/总资产”和“总负债/总资产”两个都输出。这样你同时得到玄学上的“常规资产负债率”和更贴合风险的“有息负债率”。现金流量表部分关键指标是“经营活动现金流净额与净利润的比值”。但要注意现金流净额是全年累计数净利润可能包含少数股东损益两者的口径并不完全一致。常见做法是把“经营现金流净额/净利润”定义成利润含金量的近似指标要求模型在输出时备注“该比值未考虑少数股东损益与折旧摊销仅为近似判断”。这行备注能大幅减少模型把指标包装成绝对真理的倾向。下表是我常用的指标定义表也直接写进提示词里作为计算基准。一级指标公式/口径用途资产负债率总负债 / 总资产常规杠杆水平有息负债率有息负债 / 总资产真实刚性偿债压力流动比率流动资产 / 流动负债短期偿债能力近似速动比率(流动资产 - 存货) / 流动负债剔除存货积压后的偿债能力经营现金流/净利润经营活动现金流净额 / 净利润利润的现金含量近似表里的每一个口径都必须在提示词里显式说明否则各模型对“有息负债”的解释会漂移。我测过几个主流模型有的把应付账款算成有息负债有的把其他流动负债也算进去导致结果偏差很大。把口径写死是唯一可靠的解法。3.4 输出模板强制表格与“数据出处行号”规则提示词的最后一块面包是输出格式。很多模型只要进入自由发挥模式就会开始写漂亮但无法核对的段落。我的做法是强制表格化并且每一行都必须带行号引用。输出格式如下 指标 | 本报告期 | 上期/去年同期 | 变动 | 计算公式 | 数据出处 营业收入 | 元 | 元 | 上升/下降x% | 公司提供的利润表 | 行17, 行18 毛利率 | % | % | 变动x个百分点 | (行17-行19)/行17 | 行17, 行19 资产负债率 | % | % | 变动x个百分点 | 行31/行28 | 行28, 行31这个模板的好处是它把“引用数值”变成必须完成的动作。当模型被迫写下“行17、行19”时它无法继续蒙混。如果你的原始文本没有行号可以退一步要求模型引用科目名加页眉信息比如“利润表第 2 节”可校验性会下降但仍有基本约束力。这一节还有一个常见的疑问要不要让模型直接输出 JSON我认为分情况。如果下游要接数据管道JSON 自然更好如果目标是人工阅读Markdown 表格更直观。第四部分会专门讲 JSON 格式和换模型的适配问题。4. 换一个模型就得改一遍提示词上下文预算、JSON 输出与两段式接力4.1 不同模型的行为差异上下文窗口和 JSON 能力决定提示词写法没有一套提示词能在所有模型上发挥同样的效果这不完全是模型优劣问题而是行为差异。我常用的判断维度有三个上下文窗口大小、是否支持结构化输出、以及对系统角色的遵从度。上下文窗口小的模型你喂一整份年报它会直接丢中间段。识别方法很简单问它“你刚才看到的营业收入是多少”如果答不出或者明显丢了一部分说明文本超出了它的有效注意力范围。这类模型不适合单轮大文本分析适合先做一轮“抽取”把关键科目抽成短文本再进分析。支持结构化输出的模型你可以在提示词里给出完整的 JSON Schema让它输出带嵌套结构的指标集。不给 Schema 直接说“输出 JSON”它也能输出但字段命名会漂移上次叫gross_margin这次叫grossMargin下游脚本就得跟着改。不支持结构化输出的模型则用 Markdown 表格更稳解析也不难。我一般会在同一份提示词头部加一个“输出格式协商”指令写清楚“如果支持结构化输出请按以下 JSON Schema 输出指标清单否则输出 Markdown 表格”。这个指令把选择权交给模型但保留了底线。下面是 JSON Schema 片段可以放在提示词末尾。{ indicators: [ { name: 指标名称, value: 数值, unit: 元, formula: 含科目的算式, source_line: 行号或段落名, last_period_value: 上期数值 } ] }这段 Schema 一定不能省unit和source_line字段。unit字段防止单位漂移source_line字段保留追责线索。我见过不少团队把 JSON 输出跑通了但没人检查单位字段最后算出来一个差了四个数量级的“净利润”这种翻车最不值得。4.2 两阶段提示词接力先抽数后分析避免上下文拥堵用一份完整年报做分析最大的敌人是上下文预算。当你把“角色设定、任务清单、整份财报全文、输出模板”同时塞进一个请求模型很容易“忘掉”任务开头部分或者在后半段开始自由发挥。常见做法是两段式接力。第一轮只用“抽取提示词”让模型只输出关键科目数值表不做任何分析。第二轮把第一轮输出的表格当作唯一依据再套用完整的三明治提示词做分析。这样第二轮输入量大幅缩减分析质量明显上升。第一轮抽取提示词可以参考下面的写法。从下列财报文本中抽取以下科目最近两期的数值 营业收入、营业成本、销售费用、管理费用、研发费用、财务费用、净利润、扣非净利润、经营现金流净额、总资产、总负债、货币资金、存货、应收账款、短期借款、长期借款。 要求 1. 按科目输出并标明所属报告期。 2. 统一换算为元。 3. 每个数值后附来源行号。 4. 如果某项数据缺失输出“未找到”不要估算。第一轮输出的表格可能只有 30 到 50 行文本把第二轮分析的上下文压力从几万字降到几千字。这样做的另一个好处是你可以对第一轮结果做人工抽查确认模型没有看错单位、没有把合并报表和母公司报表搞混再让分析阶段基于这份校验过的数据展开。这个思路和上下文工程的要点一致上下文工程的核心不是把更多内容塞给模型而是让模型每一轮只面对它该面对的最小信息集。4.3 把三段提示词串成一个小分析流程从手写到脚本再到 agent 化当两段式跑通之后下一步是把流程固定成脚本。这和写 ai 编程提示词的道理一样把每个步骤拆细让流程而不是模型负主要责任。我一般会写一段很短的 Python 脚本把“读文本、抽数、校验、分析”几个环节串起来。下面是去掉了本地封装函数后的核心流程示意。# 流程抽数 - 生成结构化指标 - 风险分析 with open(annual_report.txt, encodingutf-8) as f: report_text f.read() # 第一轮抽取关键科目期望模型返回 JSON 数组 extract_prompt load_prompt(extract_indicators.txt) records llm_extract(extract_prompt, report_text) # 返回 list[dict] # 第一轮后的硬校验单位必须全部为“元”行号必须存在 for item in records: assert item[unit] 元, f单位异常: {item} assert item[source_line], f缺失行号: {item[name]} # 第二轮把抽取结果转成紧凑文本再交给分析提示词 analysis_prompt load_prompt(analysis_prompt.txt) format_records(records) conclusion llm_analyze(analysis_prompt) print(conclusion)代码里的assert不是摆设。单位异常和缺失行号是整个流程中最容易静默出错的两个环节脚本阶段硬性拦截能省掉后面不知道多少小时的纠错时间。如果你不想写脚本也可以直接把它手动跑两轮只是每次换财报都要重复复制粘贴容易漏步骤。再往前走一步就是把这三轮流程封装成一个最简单的 agent第一轮抽数第二轮计算指标第三轮批判审查。ai agent 在这个场景里不需要复杂的工具调用和网页搜索只需要一个固定的提示词序列加一个简单的状态检查。agent 化最大的价值不是“智能”而是可重复你不再依赖每次临时发挥的对话质量每次跑的结果都可复现、可对比、可留痕。这对财务分析这种需要留档复核的工作场景特别重要。5. AI 财报分析提示词的六个避坑点数字失真、单位陷阱、口径幻觉与审计意见擦边5.1 现象AI 编了一个毛利率而报表里根本没有这个数模型输出“毛利率 42.7%”你在原文里翻遍了利润表营业收入和营业成本都对得上但 42.7% 就是算不出来。原因是模型在回答时把“毛利率”当成一个需要生成的文本而不是需要计算的数值。它可能用了训练时见过的同行业平均值或者干脆是随机补的一个合理数字。解决提示词里强制“先写公式、后代入数字”并且要求输出“数据出处”列。如果模型写不出行号它就没法生成这个数。面对这种情况宁可让模型输出“数据缺失”也不能让它给一个光滑的假数字。这需要你在提示词里明确允许它“拒绝回答”。5.2 现象把“千元”当成“元”整个偿债能力分析反转年报里常见“单位千元”AI 如果忽略这个说明会把所有数字放大一千倍。一个实际资产负债率 60% 的公司可能会被算成负债 6 万亿的怪物。更隐蔽的情况是表格内某些行单独标注“单位万元”而表头写的是“千元”模型只认表头把这几行数值也按千元处理。解决在抽取提示词头部显式写明“文首的单位说明适用于全文如表格行内有独立单位标注以行内标注为准”。同时要求输出结果里每个数值都带unit字段。你可以在第一轮抽数后做一个自动校验把模型输出的总资产和原文本里的总资产对一遍误差超过 1% 就停下来检查单位。这一步我强烈建议做成脚本断言而不是靠肉眼。5.3 现象单季和累计口径混用营收趋势被带偏一季度财报披露的“营业收入”是年初至季末的累计数。模型如果拿一季报的数字去和年报同期数同比会得到完全错误的增长率。更常见的是模型把“单季度营业收入”和“累计营业收入”放在同一张趋势表里而你根本看不出它混了两种口径。解决在任务指令里加一条“明确区分本期单季金额与年初至报告期末累计金额进行同比时必须同口径比较”。同时在输出模板里加一个“口径”列让模型每一次对比都标明自己是单季还是累计。这样哪怕它混了你扫一眼也能发现。5.4 现象把合并报表和母公司报表混在一起算上市公司年报同时包含合并报表和母公司报表。模型如果从母公司报表里取“营业收入”又从合并报表里取“净利润”算出来的净利率毫无意义。很多年报正文的表格标题会反复出现“合并资产负债表”“母公司资产负债表”模型很容易张冠李戴。解决抽取提示词第一句就写“所有科目默认取自合并报表如使用母公司报表须在输出中单独标注”。你还可以在预处理文本时把“母公司资产负债表”整段删掉或移到附录区从源头掐断混用的可能。这个方法笨但非常有效。5.5 现象审计意见、非经常性损益说明被忽略AI 模型对数字的关注远高于文字但财报里最致命的判断往往藏在文字里。比如“带强调事项段的无保留意见”“扣非净利润为负主要依赖非经常性损益实现盈利”。如果提示词不强制模型阅读这些段落它会继续给出漂亮的指标表完全忽略财报已经亮起的红灯。解决在任务清单里显式加一个子任务写明“阅读审计意见段、非经常性损益明细表、或有事项和承诺事项段抽取所有风险提示输出为风险清单”。并把这一任务的权重提到指标体系之前。再配合一句话校验模版“如果扣非净利润与净利润差异超过 30%用单独段落说明差异来源”。这一条几乎每次都能逼出财报里最值得关注的信息。5.6 现象PDF 跨页表头错位导致数字张冠李戴很多 AI 工具的 PDF 解析对跨页表格处理很差。表头在第一页底部数据栏在第二页顶部解析后表头丢失模型把下一行数据认成上一行。更麻烦的是年报页面经常在同一页里出现多个表格的尾巴解析后混合成一段行号全部失效。解决在进入提示词之前先手动把 PDF 转成文本检查现金流量表那张跨页表是否完整如果有“续表”字样把表头补在第二段开头。如果你用的是在线对话工具直接传 PDF 也能做但我一般不建议跳过预处理。这个步骤属于血泪经验再好的提示词也救不回已经被打乱的原始数据输入端的脏数据会一路污染到分析结论而且极难被发现。6. 验证 AI 财报分析结论的三种方法交叉审计、反向提问与同环比抽查6.1 手工复算三件套毛利率、资产负债率、经营现金流/净利润拿到 AI 的分析结果后先不要急着读结论拿出计算器或 Excel 复算三个数毛利率、资产负债率、经营现金流除以净利润。这三个数覆盖了利润表、资产负债和现金流三条线任何一个算错都说明提示词里还有漏洞。复算时注意毛利率的分子必须是营业收入减营业成本不能拿“营业总收入”直接减有些企业在营业总收入里还包含利息收入等其他项目口径会变粗。如果复算结果和 AI 输出一致不要高兴太早只说明模型没算错不代表它没有用错口径。所以第二步是核对公式里的科目来源。毛利率用的营业收入到底是不是利润表的“营业收入”行经营现金流净额到底是不是合并现金流量表“经营活动产生的现金流量净额”这两步检查比单纯对数字更重要。6.2 反向提问让 AI 同时扮演审计师和分析师对质这个方法是我常用的后悔药在第一轮分析完成后追加一条提示词让同一个模型换一个角色重新审视自己的回答。现在忘记刚才的分析师身份改任审计师。 目标检验上面这份分析。 要求 1. 逐项复算所有指标指出任何一项差异。 2. 对分析师给出的来源行号进行复核不对就说不对。 3. 如果发现某个结论缺少数据出处直接标注“无依据”。 4. 输出一份修改清单每条修改都写原结论、问题、修改后结论。同一个模型切换角色后很多时候能发现自己上一轮的疏漏。这是因为换角色会重置输出风格和分析视角相当于你花一次调用时间买了一个免费的第二意见。如果条件和预算允许再用另一个不同的模型做同样的事结论交叉比对可信度会再上一个台阶。不同模型各自盲区不同两个模型同时算错同一个数的概率低很多。6.3 同环比抽查用半小时验证表锁定结论最后一层验证不需要模型参与纯人工。我给自己定的流程是取 AI 输出的关键指标表随机挑三行做同环比验证。每次验证花几分钟半小时内能覆盖主要疑点。下面是我常用的抽查表你可以直接复制成 Excel 表头使用。验证项取数来源判断标准营业收入本期数利润表正文与 AI 输出差异小于 1%毛利率变动按公式复算绝对误差小于 0.5 个百分点经营现金流净额/净利润现金流量表 利润表复算值与 AI 输出一致单位标注每行数值后全部为元或注明原始单位极值科目资产负债表前三项与原文总资产/总负债相符这套方法不复杂但每年年报季实测下来几乎每次都能抓到至少一处 AI 的疏漏。有的年报里“营业收入”和“营业收入不含其他业务收入”并排出现模型选了错的那一列有的现金流量表里“收到其他与经营活动有关的现金”被当成主营业务收入导致经营现金流虚高。这些坑不是提示词能百分之百防住的需要人盯最后一道。我现在拿到任何一份 AI 财报分析第一眼看它敢不敢标出处第二眼查单位是不是元第三眼复算那三个基础指标。这三个习惯帮我避开了大部分低级翻车。希望帮到你。本文还有配套的精品资源点击获取