🤖 第七章 应用实战:财报分析智能体
📄 一句话概括

前六章取回来的是结构化数据(一段 JSON),对错一算就知道;本章取回来的是【一段像人写的分析】——它没有类型错误、没有格式报错,"对不对"这件事必须换一套判据。这套判据只有四条,而它要回答的问题是:这句话,能不能指回原文的某个位置?

📝 本节和前面几节的关系

7.2.3 把要求写进了提示词(要页码、不许推断),本节就是拿那两条要求当尺子,回量它的产出。提示词和判据是同一件事的两头:写要求的时候想着怎么验,验的时候照着要求来。 与 6.4.2【取回结果判档】对照:那一节的判据是【重跑一遍能不能修好】——技术问题重试、业务问题待人。本节换成了新判据:这一条能不能指回原文。两者有一个共同点:都不看"像不像",只看"能不能验"。

一、取回来的东西变了,判据也必须变

先看清这个差别,它是本节存在的理由:

第六章(结构化结果) 本章(文字结果)
形态 JSON 字段 一段话
错的样子 缺字段、类型不对、括号不配 读起来完全正常
能不能自动判 能——格式校验器一跑就爆 不能——没有"格式"可校验
判错的方式 三层解析(直接/兜底/标异常) 四条判据(本节)

一句话:第六章的错会自己跳出来,本章的错要你主动去找。

二、四条判据

这四条按"先粗后细"排,任一条不过就往下掉一档:

# 判据 不过的含义 判档
1 有没有标注来源页码 结论悬空——人必须回原文找 需复核
2 页码在不在原文里 页码是编的 不可采信
3 数字与原文是否一致 抄错了 不可采信
4 有没有把推演写成事实 结论比原文走得远 需复核
⚠️ 第 2 条和第 4 条,是本章与前六章最不一样的两条

第 2 条:页码越具体越像真的——它编一个"(P142)",从字面看比"来源于年报"更可信。所以"编出来的页码"比"没有页码"更危险。 第 4 条:数字对、页码对,但结论是它自己下的。这是本章最贵的一类错——它不需要你说谎,它只需要你多说半句。

三、三档处置

判定结果分三档,和第六章"判档"的形态一致,但处置动作完全不同:

档 含义 处置动作
可采信 有页码、页码有效、数字对得上、只陈述不推断 直接用(仍建议抽检)
需复核 缺页码,或结论超出了原文 人回原文核这一条——这是人的活,不能被自动化掉
不可采信 页码不存在,或数字与原文不符 整条作废,回炉重跑(不是修,是重做)

注意"需复核"这一档的位置:它不是"错",是"还没验"。把"未验"和"错"分开,是这一节最重要的一个分类动作——因为它们的处置成本完全不同:一个花人三分钟,一个要重跑一整轮。

四、对账纪律(从第六章搬过来)

判定完还要做一次加法:

可采信 + 需复核 + 不可采信 = 这一轮取回的条数

对不上,就说明有结论在取回的路上丢了——它不报错,只是不见了。这和 6.4.2 那条纪律是同一条,只是那里的单位是"任务",这里的单位是"结论"。

五、⚠️ 2026 现状:这一侧的三件事

现状一:幻觉的形态是"通顺",不是"乱码"

大模型的幻觉不会以乱码的形式出现,它以语法正确、逻辑连贯、语气自然的形式出现。在财报场景里,典型三种:

现状二:同一个问题,两次答案可能不一样

生成式输出的不稳定性在这里很要命:同一个提示词跑两遍,号码可能不同。 这不是故障,是这类系统的特性——所以本章的做法是:以"能不能指回原文"为判据,而不是以"跑两遍一不一样"为判据(后者在自然语言里很难用)。

现状三:来源要分两层——你给的,和它自己搜的

这一条是实操上最容易被忽略的:

第一层:你上传的年报        →  页码标的应该是这一份
第二层:它自己搜来的网页     →  这在"浏览器"页签里能看到痕迹

如果某条数字的"来源"指向它搜来的网页,而年报里其实有——这条的可靠性要打问号(可能是版本不一致,也可能是它没读到那一块)。

📝 这条与 7.2.1 的"三个页签"是同一件事

7.2.1 讲过右侧工作空间的"浏览器"页签会留下搜索轨迹。本节就是它的用武之地:核不出页码的那几条,去那儿看一眼它到底从哪儿读的。

六、动手 Demo:结论溯源审计器

下面这个脚本把四条判据写成代码,审一份 8 条的【财报要点】。

# -*- coding: utf-8 -*-
"""7.2.4 Demo:结论溯源审计器

四条判据:
  1. 有没有标注来源页码      —— 没有 = 悬空结论,要人回溯
  2. 页码在不在正文范围      —— 不在 = 页码是编的,整条作废
  3. 数字与原文是否一致      —— 不一致 = 抄错了,整条作废
  4. 有没有把推演写成事实    —— 有【必然/说明】这类断言 = 要人复核
"""

TOTAL_PAGE = 62        # 财报正文到 P62,之后是附注与附件

# (编号, 结论文字, 页码, 页码存在?, 数字与原文一致?, 有断言词?)
POINTS = [
    ("C1", "2025 年营业收入 174.2 亿元,同比增长 15.7%", "P42", True, True, False),
    ("C2", "毛利率 91.3%,较上年下降 0.4 个百分点", "P44", True, True, False),
    ("C3", "经营活动现金流净额 68.5 亿元,低于净利润", "P58", True, True, False),
    ("C4", "应收账款增长 32%,说明公司在放宽信用政策换取收入", "P46", True, True, True),
    ("C5", "销售费用率上升,这必然导致明年利润承压", "P49", True, True, True),
    ("C6", "资产负债率 21.4%,财务风险很低", "P53", True, True, False),
    ("C7", "存货周转天数 412 天,同比延长 38 天", "P77", False, True, False),
    ("C8", "在建工程大幅增加,未来产能将翻倍", "", True, True, True),
]


def verdict(page, page_ok, num_ok, assert_word):
    if not page:
        return "需复核", "没有来源页码——结论悬空,人必须回原文找"
    if not page_ok:
        return "不可采信", "页码 %s 超出正文范围(正文到 P%d)——页码是编的" % (page, TOTAL_PAGE)
    if not num_ok:
        return "不可采信", "数字与原文不一致——抄错了"
    if assert_word:
        return "需复核", "把推演写成了事实(用了【说明/必然】这类断言词)"
    return "可采信", "有页码、页码有效、数字对得上、只陈述不推断"

看到什么算成功(真实输出):

==============================================================================
  7.2.4 Demo:AI 给的 8 条财报要点,哪几条能直接用
==============================================================================

  判据:① 有没有标页码  ② 页码在不在正文范围  ③ 数字对不对  ④ 有没有断言
  (这份年报正文到 P62,之后的都是附注与附件)

  编号  结论(截断)                                页码    判定
  --------------------------------------------------------------------------
  C1    2025 年营业收入 174.2 亿元,同比增长 15.7…  P42     可采信
  C2    毛利率 91.3%,较上年下降 0.4 个百分点       P44     可采信
  C3    经营活动现金流净额 68.5 亿元,低于净利润    P58     可采信
  C4    应收账款增长 32%,说明公司在放宽信用政策…   P46     需复核
  C5    销售费用率上升,这必然导致明年利润承压      P49     需复核
  C6    资产负债率 21.4%,财务风险很低              P53     可采信
  C7    存货周转天数 412 天,同比延长 38 天         P77     不可采信
  C8    在建工程大幅增加,未来产能将翻倍            —       需复核

二、逐条说清楚
------------------------------------------------------------------------------
  [√] C1  2025 年营业收入 174.2 亿元,同比增长 15.7%
        有页码、页码有效、数字对得上、只陈述不推断
  [√] C2  毛利率 91.3%,较上年下降 0.4 个百分点
        有页码、页码有效、数字对得上、只陈述不推断
  [√] C3  经营活动现金流净额 68.5 亿元,低于净利润
        有页码、页码有效、数字对得上、只陈述不推断
  [!] C4  应收账款增长 32%,说明公司在放宽信用政策换取收入
        把推演写成了事实(用了【说明/必然】这类断言词)
  [!] C5  销售费用率上升,这必然导致明年利润承压
        把推演写成了事实(用了【说明/必然】这类断言词)
  [√] C6  资产负债率 21.4%,财务风险很低
        有页码、页码有效、数字对得上、只陈述不推断
  [×] C7  存货周转天数 412 天,同比延长 38 天
        页码 P77 超出正文范围(正文到 P62,之后是附注)——页码是编的
  [!] C8  在建工程大幅增加,未来产能将翻倍
        没有来源页码——结论悬空,人必须回原文找

三、汇总
------------------------------------------------------------------------------
  可采信    4 条
  需复核    3 条
  不可采信  1 条

  对账纪律:可采信 4 + 需复核 3 + 不可采信 1 = 8 ;本轮共 8 条  ✅ 对得上

四、读结果
------------------------------------------------------------------------------
  ① 八条里有 4 条能直接用——这已经是很高的比例了。
     真实的初稿里,带页码的比例通常比这低得多。
  ② 两条最危险的都不是【数字错】,而是【结论比原文走得远】:
     C4 的【说明公司在放宽信用政策】和 C5 的【必然导致利润承压】——
     数字都对,页码也对,但从数字到结论这一步,是人走的,不是原文写的。
  ③ 这就是本章和前六章最不一样的一条:【错】不一定长得像错。
     识别单填错会当场爆;这里两条最像分析的结论,恰好是两条要打回重写的。
  ④ C7 那条也值得看一眼——页码 P77 超出了正文范围(只到 P62)。
     页码越具体越像真的,所以【编出来的页码】比【没页码】更危险。

==============================================================================

读结果:

30 秒实验

随意找一句 AI 写的、关于某家公司的分析(新闻、研报摘要、你自己跑的结果都行),做一件事:

用手指点住那句话里的每一个数字,问:这个数从哪来的?

结论:"能不能回查"这件事,用手就能试出来——这一节整套判据,本质就是把"用手指点"这个动作写成规则。

常见误区

  1. 【它写得这么顺,应该没错】——"顺"是它的默认风格,不是可信度证据。 Demo 里 C4、C5 是全场读起来最像分析的两条,恰好是两条要打回的。
  2. 【页码都有了,肯定没问题】——要看页码"在不在"和"对不对"。 C7 给出的是一个超出正文范围的具体页码——编出来的页码比没有页码更危险。
  3. 【有推演很正常,分析不就是要有观点吗】——那是"你的观点"该出现的地方,不是它的。 本章要它做的是整理(把事实摆清楚),观点由人加。它替你加观点,你连"这是谁的想法"都分不清。
  4. 【跑第二遍对一下,两遍一样就行】——生成式输出的不稳定性,让这个办法不可靠。 判据要用"能不能指回原文",而不是"跑两遍一不一样"。
自测三问(点开对答案) 1. **本章取回结果为什么不能沿用第六章那套校验?四条判据是怎么排的?** **不能沿用的原因**:第六章取回的是 JSON 字段——**有格式可校验**(缺字段、类型错、括号不配,一律能自动爆)。本章取回的是**一段通顺的自然语言**,它没有类型、没有必填字段,**"像不像"这个标准在自然语言里几乎失效**(写得好的幻觉,比写得差的事实更像真的)。 **四条判据按"先粗后细"排**:① **有没有页码**(最粗,缺了直接"需复核");② **页码在不在正文范围**(编的 → 不可采信);③ **数字与原文是否一致**(抄错 → 不可采信);④ **有没有把推演写成事实**(断言 → 需复核)。 **一条不过就往下掉一档**——**这样排序的好处是:最省力的检查放在最前面,先把"悬空的"挑出去。** 2. **为什么说"需复核"和"不可采信"必须分开?处置成本差在哪?** **"需复核"=还没验**(缺页码,或结论超出原文)——处置动作是**人回原文核这一条**,成本约几分钟。 **"不可采信"=已经确定是错的**(页码编的,或数字对不上)——处置动作是**整条作废、回炉重跑**,成本是一整轮。 **混在一起的后果**:如果都当"可疑"处理,就会**用重跑的成本去处理只需要核一眼的条目**——**结果是既不经济,又会把"其实没错"的条目一起丢掉。** **这个分类动作的价值就在这**:**把"未验"和"错"分开,人力的花法才准确。** 3. **"来源分两层"是什么意思?为什么它对核验很重要?** **第一层是你上传的年报**——**页码标的应该是它**,因为这份文件是你为结论负责的基础素材。 **第二层是它自己搜来的网页**——痕迹在右侧工作空间的**"浏览器"页签**里。 **为什么重要**:**同一句话,来源层级不同,可靠性完全不同。** 如果某条数字的来源是它搜来的网页,而年报里其实也有这一项——说明**它可能没读到那一块,或者读到了不同版本**,**这条的可靠性要打问号**。 **实操上的用法**:**核不出页码的那几条,去"浏览器"页签看一眼它到底从哪儿读的**——这一步经常能直接解释"为什么这条没页码"。 **本节的三句话可以带走**:**① 结构化结果的错会自己跳出来,文字结果的错要你去找;② "需复核"不是"错",把"未验"和"错"分开,人力的花法才准确;③ 页码越具体越像真的——编出来的页码,比没有页码更危险。**

相关笔记