简介面向金融商贸领域投资者与财务分析师的AI财报分析提示词包专为借助大模型快速完成上市公司财报系统诊断而设计。内含单个PDF文档约484KB包含覆盖整体分析、杜邦分析法等多个维度的提示词模板并内置清晰工作流依次提取资产负债表、利润表、现金流量表关键数据计算速动比率、资产负债率、净资产收益率、营收增长率等指标结合同行对比与八种现金流组合输出企业安全性、管理层能力、盈利与成长性等判断。使用者无需掌握复杂财务建模只需按提示词逐项代入财报数据即可获得可解释的分析结果。相比零星提问这套提示词通过结构化引导帮助使用者减少漏项、提升分析深度直接套用即可降低AI财报分析的上手门槛。另有186人学习下载适合希望用AI辅助投资决策、快速掌握财报分析框架的入门及进阶用户。1. AI财报分析提示词比想象中更难先解决“正确的废话”把一份财报丢给大模型问一句“这家公司经营状况怎么样”大多数人第一次都会拿到一份措辞漂亮、但细看全是套路的分析报告营收增长、盈利能力良好、建议关注行业竞争……这类回答对决策毫无帮助因为提示词里根本没有“财务分析”该有的判定逻辑。AI财报分析提示词推荐这件事核心不是“怎么问AI”而是“怎么把财报分析的专业流程拆给模型执行”。本文会从提示词的底层失效原因讲起给出一套可复现的五模块模板、三张高频专项提示词以及我踩过并已经绕开的五类坑。适合正在做投研数据工具、财务指标自动化解读或者想用大模型辅助批量看财报的读者。先立住一个判断好提示词的标准是——你换一份财务报表进去输出的框架不变、结论可复核、数字不会编。2. 为什么通用思路做不好财报分析大模型在数字和口径上的两个坎2.1 模型不会主动校验数字先说幻觉怎么来的财报分析最怕的不是模型不懂财务而是模型把它看不懂的数字“顺理成章”地补全。大模型的本质是词元预测它擅长的是模式匹配不是精确计算。当你把一张利润表丢给它上面只写了“营业收入 100 亿、净利润 12 亿”它大概率能算出净利率 12%但如果你没有明确告诉它“只用我提供的数据不许推测”它可能顺手补出“毛利率 35%”这种从未出现过的数据而且语气极其笃定。这就是财报场景里最典型的数据幻觉不是编造整个报表而是编造一个“看起来合理的中间指标”。原因在于模型训练语料里满是各类研报和财务分析它的语言先验告诉它“分析财报就应该有毛利率、有同比增速、有评价结论”。于是当输入里缺少某些字段它就拿语料里的平均经验来填充而不是承认“数据不足”。所以提示词的第一个作用是给模型划清边界哪些数据能用哪些结论不许下。2.2 从“写报告”到“做分析”需要任务序列与判定标准第二道坎更隐蔽模型不知道什么是“好分析”。你让它“评估这家公司的偿债能力”它会罗列资产负债率、流动比率、速动比率然后给一句“整体处于合理区间”。但真实分析需要的是先计算指标再和行业中性基线比较再判断变化趋势最后指出这个指标背后的业务含义——比如流动比率从 1.8 降到 1.2未必是恶化可能只是因为公司把现金拿去扩产。模型不会主动做这四步除非你在提示词里把任务拆成明确的序列。我一般会在提示词里写明“五步分析流程”第一步校验输入数据完整性第二步计算指定指标第三步给每个指标做“行业中性”的定性判断第四步识别指标间的矛盾信号第五步输出风险与亮点。这五个步骤本质上是在模拟一个有经验的财务分析师的思考顺序。你拆得越细模型的输出越稳定越不像一篇空泛的作文。2.3 最基础的失败模板与可运行的改进版先看一个我很早期用过的失败模板几乎踩中了上面所有问题# 基础失败版本 BAD_PROMPT 帮我分析一下这家公司的财务报表 营业收入2023年100亿2022年85亿 净利润2023年12亿2022年10亿。 这家公司怎么样 这个提示词有几处硬伤没有限定只使用给定数据没有指定分析维度没有要求对比和依据没有约束输出格式。模型大概率会回答“公司经营稳健、收入和利润双增长建议关注后续是否能保持增速”——完全不能用于投资判断。改进版我至少会做三件事限定数据范围、给出分析框架、要求量化依据。一个可运行的版本如下# prompt_settings.py BETTER_PROMPT 你是一名十年经验的财务分析师。基于以下原始数据完成分析数据单位均为亿元。 禁止编造任何报表中没有的数据如果某个指标无法计算明确说“数据不足”。 原始数据 营业收入 100.0营业成本 71.5净利润 12.0 资产总计 180.5负债合计 82.3所有者权益 98.2 经营性现金流净额 8.1应收账款 15.2存货 18.7。 分析步骤 1. 计算毛利率、净利率、ROE、资产负债率、经营现金流/净利润 2. 对每个指标给出定性判断良好/一般/偏差并写一句判断依据 3. 找出数据中一个最值得警惕的信号 4. 输出要求分点列出每条不超过两行。 请直接给出分析结果。 逻辑说明这个版本把“数据边界”放在最前面并用“禁止编造”加上“无法计算就说明数据不足”双重约束降低幻觉概率。分析步骤里只要求“计算”和“定性判断”不给模型自由发挥长文的空间。参数说明这里的提示词本身没有参数但在调用接口时我会把temperature调到 0.2 以下max_tokens至少留 1024避免答案被截断。下一章会完整讲参数配套。3. 一套能直接上手的财报提示词结构五个模块与必填参数3.1 角色定位与上下文约束让模型以“报表审计业务分析”的视角工作把提示词拆成模块是我反复对比后觉得最稳的做法。整套提示词我一般分五个模块角色与边界、数据输入协议、分析框架、评分标准、输出格式。其中“角色与边界”是地基它不只是一句“你是一个分析师”还必须写明“你会被提供结构化财务数据而不是原始报告全文”。这点很重要因为很多人直接把 PDF 文本塞进去模型会照着 PDF 里的各种说辞比如管理层讨论鹦鹉学舌丢掉自己的判断。我通常这样起手角色你是一名财务分析师同时具备审计视角。你的任务不是复述数据而是从数据中发现经营趋势、异常信号和潜在风险。 边界只允许使用下方“输入数据”中的字段不允许补充任何外部信息。若数据不足明确标注“待补充数据”。把“审计视角”写进角色有两个作用一是让模型倾向于找问题而不是夸公司二是暗示它要求证据。有兴趣的读者可以把角色换成“股权投资经理”对比同一份数据输出会明显更偏好成长性和退出路径所以这个字段不要照抄要和你的使用场景绑定。3.2 输入数据协议把PDF表格转成结构化字段的固定写法财报原始数据是表格PDF 里还有一堆附注。直接粘贴进提示词有两个问题字段名混乱比如“营业收入”“营业总收入”“Revenue”同一意思三个写法以及无关注释太多稀释注意力。我一般在处理阶段就把数据转成 JSON 或键值对结构再拼进提示词。# 构造输入数据示例某公司2024年简表数据脱敏 INPUT_DATA 资产负债表总资产 230.4总负债 105.6所有者权益 124.8货币资金 28.3应收账款 35.1存货 42.6 利润表营业收入 198.5营业成本 152.3销售费用 12.8管理费用 10.2财务费用 3.1净利润 16.4归母净利润 15.8 现金流量表经营活动净现金流 21.2投资活动净现金流 -35.6筹资活动净现金流 12.9。 逻辑说明这里刻意保留了“归母净利润”和“净利润”两个字段因为实操里二者经常差在少数股东损益模型如果只会一个口径就容易出错。结构化字段的目的是让模型明确知道每项数据是“我提供的”而不是它在某个研报里见过的。参数说明字段名称务必与模型训练语料的通用财务术语一致不要用“总收入”“纯利润”这类非标表述。数值只保留一位小数减少模型在无关精度上的注意力消耗。另外建议在数据块后加一句“以上所有数值单位均为亿元”避免模型默认成万元。3.3 分析框架与量化评分从“你觉得如何”改为“按五个维度打0-5分”这是整套提示词最核心的一层。通用提问会让模型做“开放作文”而量化评分让模型做“填空题”。我的做法是指定五个维度——盈利能力、偿债能力、营运效率、现金流质量、成长性——每个维度要求模型输出 0-5 分和评分依据。评分框架请对以下五个维度分别打分0-5分5分为优秀、4分为良好、3分为一般、2分为偏差、1分为较差 - 盈利能力参考毛利率、净利率、ROE - 偿债能力参考资产负债率、流动比率、利息保障倍数 - 营运效率参考应收账款周转天数、存货周转天数、总资产周转率 - 现金流质量参考经营现金流/净利润、收现比、自由现金流 - 成长性参考营收同比增速、净利润增速、扣非净利润增速。 每个维度必须给出一个分数和两条以内的依据。若数据不足以计算某项指标该维度分数自行下调上限为3分。这段提示词还有一层隐含约束当数据不足时自动打低分这能有效阻挡模型用“行业平均”或“历史记忆”来脑补打分。实操中你会发现模型对“依据”的书写能力明显强于“打分”的能力所以评分是让输出收敛的抓手。3.4 输出格式约束用JSON固定结果方便二次程序校验做投研的人多半会把 AI 输出接进后续的自动化流程比如风控规则引擎或者数据看板。这时候“分点列条”的作文式输出完全没有用必须让模型按 JSON 返回并且字段设计要和你下游的校验逻辑对齐。输出要求严格按以下 JSON 结构返回不要输出 JSON 以外的任何内容 { data_issues: [数据完整性说明每个问题一条], metrics: { gross_margin: 计算值或null, net_margin: 计算值或null, roe: 计算值或null, debt_ratio: 计算值或null, ocf_to_net_profit: 计算值或null, receivables_turnover_days: 计算值或null, inventory_turnover_days: 计算值或null }, scores: { profitability: 0, solvency: 0, operation: 0, cashflow: 0, growth: 0 }, risk_flags: [最值得警惕的信号最多三条], bright_spots: [被低估的亮点最多两条] }逻辑说明data_issues字段是关键设计它逼着模型在出结果前先自检一遍数据。metrics里明确要求“计算值或 null”减少了模型在不确定时硬编一个数字的冲动。risk_flags和bright_spots则是把模型的注意力引向“找异常”而不是“写综述”。这段 JSON 约束如果配合良好的temperature我实测能把输出的可解析率从 70% 提升到 95% 以上。3.5 API参数配套temperature、frequency_penalty与stop序列的选择提示词写得好参数没配对一样翻车。财报分析任务我惯用的一套参数如下但不是所有场景都这么设参数推荐值说明temperature0.1~0.3越低输出越稳定财报分析不追求发散创意top_p0.3~0.6配合 temperature 压缩采样空间减少随机措辞max_tokens按模块设计复杂任务给 2048 以上太短会被截断出现半截 JSON 或缺失最后一条风险frequency_penalty0财报提示词已经有足够约束penalty 会干扰术语稳定性stop视接口而定可让模型停在“”前防止模型在 JSON 外层包 Markdown 代码块参数说明里有个经验很多模型即便提示词里写了“不要输出 JSON 以外的内容”仍然会习惯性包一层 markdown 代码块如果你的解析脚本还不支持剥离代码块就会直接报错。解决方式不是在提示词里反复强调而是把 stop 序列设置为[]让它在代码块开始前停住。4. 三张针对高频场景的专项提示词从通用模板到垂直模板4.1 业绩暴雷排查模板盯住利润表异常与应收账款激增通用模板适合例行体检但很多读者实际是为了回答一个尖锐问题“这家公司会不会暴雷”暴雷往往有预兆比如应收账款增速远超营收、扣非净利润与净利润差距拉大、经营现金流持续低于净利润。所以我做了这张专项提示词核心是“异常放大”。# 暴雷排查专项提示词 SCREENING_PROMPT 角色财务尽调分析师。任务对目标公司进行暴雷风险排查只输出风险信号不输出任何正面评价。 输入数据以下字段来自目标公司近两年年报。 营业收入2024年198.52023年152.3 归母净利润2024年15.82023年14.2 扣非归母净利润2024年9.12023年12.6 经营性现金流净额2024年2.12023年15.7 应收账款2024年35.12023年22.9 存货2024年42.62023年30.4。 排查项 1. 计算应收账款增速与营业收入增速的差值若前者大于后者15个百分点标记为红色风险 2. 计算经营现金流/归母净利润若比值低于0.8标记为“净利含金量不足” 3. 比较归母净利润与扣非归母净利润若差异超过20%说明非经常性损益贡献过大 4. 对每个标记给出“现象、可能原因、建议核实的报表附注位置”三段式输出。 输出格式JSON风险条目按严重程度降序排列。 逻辑说明给模型的不是“分析一下哪里有问题”而是三个明确的筛查规则——增速差、现金流比值、扣非差异并且把阈值都写进去了。这样做的好处是输出可以被程序直接判定模型返回一个风险条目只要它的数值计算和规则一致结论就是可复核的。参数说明阈值不是拍脑袋定的。我习惯把微信人民币拆成“15个百分点”和“0.8”这类偏保守的值因为预警宁可多报不可漏报。换行业时这几个值必须调零售业应收账款增速差阈值可以放宽到 20 个百分点以上而建筑工程类公司经营现金流常年为负这条规则反而应该关闭。4.2 现金流质量分析模板经营现金流与净利润的偏离度追踪很多人的财报分析只看利润表忽略了现金流表。一个简单的事实净利润是会计口径经营现金流是实际到账的钱二者背离超过某个范围利润表上的“利润”就只是纸面富贵。所以我做了这张现金流专项提示词它的设计重点是“跨期对比”和“偏离度分级”。角色现金流分析师。目标判断目标公司利润的“含金量”。 输入数据三年 经营现金流净额2024年8.12023年15.72022年12.3 净利润2024年16.42023年14.22022年13.1 营业收入2024年198.52023年152.32022年126.8。 分析步骤 1. 计算近三年“经营现金流/净利润”比值 2. 连续两年比值小于0.8的判定为“利润含金量持续走低” 3. 计算“收现比”销售商品收到的现金/营业收入若低于0.9提示收入确认可能偏激进 4. 结合营业收入增速判断若营收增长但经营现金流下滑给出“增长质量质疑”。 输出要求先给结论再给三年数据对比表最后列出可进一步核实的附录位置如合并现金流量表的补充资料部分。注意这个模板特意强调“三年数据”因为只看一年没法判断趋势。模型对“趋势”的判断能力很弱直接用跨期数值喂给它让它算比值比让它“分析趋势”可靠得多。收现比 0.9 这个阈值在工程项目和 ToB 大客户模式下经常失真遇到这类公司建议把口径改成“5 年累计收现比”效果完全不同。4.3 存货与营收匹配性模板帮你在快速成长的故事里找问题存货这个科目很有意思一家公司说自己在高增长存货同时飙高可能是为后续订单备货也可能是产品卖不出去积压在仓库。模型预测不了未来但提示词可以逼它做“匹配性检验”用增速差给投资者一个决策支点。任务报表科目匹配性检验。重点关注存货与营收的匹配关系。 输入数据 营业收入2024年198.52023年152.32022年126.8 存货2024年42.62023年30.42022年22.3 营业成本2024年152.32023年116.22022年86.5 存货跌价准备2024年计提0.82023年计提0.2。 逻辑链 1. 存货增速是否连续两年显著高于营收增速高于10个百分点若是标记“存货消化压力” 2. 结合营业成本变化计算存货周转天数若周转天数增加超过30天标记“周转放缓” 3. 若存货增速高同时跌价准备计提比例不升反降标记“减值计提可能不充分” 4. 对每个标记给出量化依据增速差、周转天数变化值。 输出只输出 JSON无匹配问题的科目可以给空数组。这个模板的高阶用法是不要止步于提示词本身你可以把输出的 JSON 再喂给下一轮提示词让它基于“存货消化压力”和“减值计提可能不充分”去生成具体的核实清单——比如要求补充存货构成明细原材料、在产品、库存商品和库龄表。模型做不到实地审计但它能帮你把应该问财务的问题清单自动列出来这已经是实打实的效率提升。5. 提示词上线后的踩坑记录五条能直接避开的经验5.1 模型报出“存货同比-30%”但报表根本没有该行数据幻觉怎么治现象用一张干净的资产负债表做测试模型在risk_flags里写“存货同比下滑 30%可能存在销售确认问题”但输入数据里根本没有上年存货数甚至没有营业收入。原因模型在训练语料里见过太多“存货下滑收入增长”的匹配范式即使输入没有给足数据它也会按照这个范式输出一条“正确但无中生有”的风险信号。这也是为什么只在提示词里写“禁止编造”不够因为它不是故意撒谎是语料先验在起作用。解决三层同时处理。第一层输入数据里明确标注“仅提供年末余额无上期余额”让模型知道这个口径不存在第二层提示词里加一句“任何数值比较的前提是输入中存在两个以上年度的对应字段否则该结论禁止输出”第三层把输出接入一个简单的字段校验脚本凡是risk_flags中提到的科目不在输入字段集合里自动过滤掉。三层叠加之后这类幻觉在我的测试集里基本清零。5.2 扣非净利润口径被忽略ROE算出一个错误高值现象某次分析中模型用净利润而非扣非净利润计算 ROE结果一家主业一般但靠出售资产盈利的公司被模型评为“盈利能力优秀”。原因多数模型都能写出“ROE 净利润 / 净资产”这个公式但不会主动想到“净利润”要区分“归母净利润”和“扣非归母净利润”。提示词里我写了“净利润”模型默认取利润表最后一个“净利润”字段可这个字段包含了非经常性损益。解决在指标定义模块里强制写清口径“ROE 使用归母净利润/期末归母净资产若输入有扣非归母净利润需同时输出‘扣非ROE’用于对比”。另外我用了一个更粗暴的做法提示词里直接要求“当扣非净利润与净利润差异超过 15% 时必须以扣非口径为评价基准”把判断权从模型的“理解”移到明确规则上。5.3 同一份报表两个答案temperature过高导致输出漂移现象同一个提示词、同一份数据上午跑出来“现金流质量较差”下午跑出来“现金流质量良好”二者计算指标完全一致但定性结论相反。原因检查后发现是调用时用了默认temperature0.7。财报分析这种任务不需要任何随机性0.7 的采样温度会在模型选择结论措辞时引入随机漂移尤其在“依据不足”的边缘场景模型很容易左右摇摆。解决把temperature压到 0.2 并配合top_p0.3重跑两次输出完全一致。从此我对所有财报类提示词的接头话是这个任务“只能有一个正确答案”任何想用高温度做发散分析的想法都该放在文案场景里而不是投研场景里。5.4 长文本被截断模型只看了一半报表就下结论现象把一份完整年报的“合并财务报表”部分切成文本喂进模型结果输出的risk_flags里只有负债相关信号完全没有利润表相关问题。后来发现max_tokens设了 512模型只读了前 3000 字就在回答处撞上截断后半部分现金流量表的数据根本没进入上下文。原因长上下文不是无限上下文。模型实际有效注意力范围在长文本场景下会缩水把 3 万字的报表全文一次性塞进去再要求精确计算尾部数据基本都会漏读。解决第一把输入协议改成“只提取关键三表的期末数与重要附注”控制在一千字以内再交给模型第二max_tokens至少给 2048JSON 输出本身就要吃掉大量 token第三如果必须分析长文本拆成多轮提示词第一轮只要求提取字段第二轮再做分析避免一步到位导致的截断风险。5.5 横向对比缺少行业基准确认模型把“变好”误判为“优秀”现象一家制造业公司的营收增速 8%模型给成长性打了 4 分良好。但该公司所处行业当年平均增速是 25%8% 实际上是掉队。原因模型没有任何实时行业数据它对“好”的基准来自训练语料里的模糊印象可能是互联网公司 30% 的增速也可能是传统行业 5% 的增速——它自己也不知道该用哪个。解决在提示词里把“行业基准”写成人肉关闭项“成长性评分必须参考input中提供的行业基准参数若输入中没有行业基准该维度最高只能给2分并在依据中注明‘缺少行业对比’。”没有行业基准的评分等于没评分宁可让它自己承认不知道也不要它假装知道。现在我的工作流里所有横向对比都需要人工在输入数据中显式传入基准值。这条经验直接把我输出的误判率降了一个量级。6. 把提示词变成可复核的工作流评分卡与多模型交叉验证的做法6.1 用结构化输出接一个校验脚本卡住幻觉数据JSON 格式约束最大的价值不是看起来规整而是可以接自动校验。我写了一个很轻量的脚本来做第一道过滤核心逻辑是对比模型输出的计算值是否与输入原始数据一致# validate_response.py import json def validate_metrics(input_data: dict, response_json: str): data json.loads(response_json) issues [] if data.get(roe) is not None: expected_roe round(input_data[net_profit] / input_data[equity], 4) if abs(data[roe] - expected_roe) 0.01: issues.append(fROE计算不符: 模型输出{data[roe]}, 期望{expected_roe}) return issues逻辑说明这个脚本只验证“可机械复算的指标”不判断分析结论的对错。它真正卡住的是幻觉数字——你不需要再用人眼去核对模型输出的 ROE 是不是按你的数据算的。更进一步我会把这份校验后的结果回填到一个本地 CSV 里积累上百家公司后就能做出自己的评分卡校准集。校准方法很简单拿历史上已经暴雷的公司跑一遍提示词看模型的risk_flags是否命中命中率低于 80% 说明阈值太松或阈值太严再回头调整提示词里的百分比参数。6.2 同一份数据给两个不同模型打分差异过大时自动报警单一模型的分析天然带“性格”有的乐观有的悲观有的过度发散。我现在的工作习惯是同一份结构化数据并行发给两个不同模型用同一套提示词打分然后比较五个维度的输出差异。如果某个维度分差超过 2 分说明这个维度存在“口径理解分歧”自动进入人工复核通道而不是直接采信任何一方。这个做法成本不高——财报分析不是高频实时交易批量跑几百家公司每次两次调用完全可接受。收益很实在把单模型的分析偏置暴露出来。说得更直白一点模型在“有明确指标可算”的维度分歧很小分歧大的往往是“成长性”和“现金流质量”这类需要判断的维度。知道哪个维度分歧大就知道你的提示词在哪一步还写成不够具体继续细化。6.3 我常用的一个落地习惯把每次分析结果回填校验集最后分享一个习惯——每次人工复盘模型输出时不只记录它对不对还会记录“这句话是不是模型在不知道标准答案时编的”。如果发现某个风险提示是“正确的废话”比如“建议关注应收账款回收风险”这种任何公司都能套的句子我会在提示词的risk_flags输出要求里加一条限令“只输出有具体数值证据支撑的信号禁止输出无数据指向的泛化提示。”这个动作是半年内我做的最有价值的优化。上个月跑一批模拟财务数据时模型输出了一个“存货周转天数上升 28 天”的信号我用库存明细一验证确实是2024年新产线投产导致备料增加不是滞销。当时真的有“这模型没白调”的踏实感。提示词工程不是一次写对的是靠校验集反复扇自己耳光练出来的。希望帮到你。本文还有配套的精品资源点击获取