AI 合同审查实战:法务 Agent 漏掉 3 处风险点后,我们重写了校准红线

我们把 AI 引入了合同初筛,速度提升非常明显:一份 42 页的采购合同,从人工 3.5 小时压缩到 18 分钟出初筛报告,法务团队的瓶颈一下子松了。但两个月后的一次事故让我们重新校准了整条红线——那份报告漏掉了三处风险点,其中一处涉及不可撤销的排他条款,一份合同金额 1,200 万的授权协议。

这篇文章不讲”AI 多厉害”,讲我们之后做了什么:怎么划出必须人审的区域、怎么把模型的”内部规则幻觉”打掉、以及一套真正能跑的混合流程。

一、事故复盘:那 3 处漏报是怎么发生的

先看漏报的性质,这比漏报率更重要:

风险点 所在位置 模型为什么没抓到 后果等级
排他性条款被默认勾选 附件 B 第 4 页附表,非正文 检索时只索引了正文,附表被当作低优先级跳过 极高(1,200 万独家授权)
责任上限措辞前后不一致 第 9 条正文 vs 第 27 条冲突条款 两处分开看都”合理”,模型没有做全局一致性校验 高(赔付敞口 5 倍差)
终止通知期限是 5 个工作日而非 30 天 小字段,6pt 字号 抽取置信度低于阈值被过滤,未报”不确定” 中(流程延误)

三处漏报,三种完全不同的失效模式,这决定了不能用一个开关解决:

  • 第一处是覆盖问题——模型没读到,不是读不懂。这是工程问题。
  • 第二处是能力边界问题——模型读到了每一处,但”全文一致性”这种跨条款推理超出了它的可靠范围。
  • 第三处是最危险的沉默失败——模型不确定,但没有说”我不确定”,而是安静地过滤掉了。

第三类在法务场景里是零容忍的。一个诚实的”这条我没把握”没有任何代价,一个沉默的漏报可能值 1,200 万。

二、内部规则幻觉:42% 是怎么来的

第二个发现更普遍。我们最初在 prompt 里写了”按公司法务手册审查”,模型就开始频繁引用”根据公司法务手册第 X 条……”。我们并没有这本手册,或者至少不是它引用的那个版本。

在 200 份无参考合同的自由审查测试里,疑似虚构内部规则的引用占 42%。常见形态包括:编造一个不存在的条款编号、把行业通行惯例说成”公司规定”、把上家客户的模板条款误记为”我们的标准”。

这类幻觉比知识型幻觉更隐蔽,因为它引用的是一个”内部权威”,人类审查员更容易直接采信。它污染的不是事实,是审查依据本身。

我们做了三件事把它压下来:

  1. 把内部规则从 prompt 里搬进检索库,并且要求逐条附来源。如果一条判断引用了内部规则,必须给出规则原文 ID。检索不到的,模型必须回答”无内部规则依据,按外部通行标准/需人工确认”。
  2. 禁止条款编号不存在化。生成后跑一个校验:所有”第 X 条”必须和原文条款编号对得上,对不上的直接标记为疑似幻觉,进人工队列。
  3. 把”公司规定”改成”据调用方提供的规则库”。一个小措辞变化,加了一个前提声明,模型凭空断言”公司规定”的比例从 42% 降到 6%。

三、我们的校准红线:哪些必须人审

事故后的核心改动,是给 Agent 划定一个”不许自己下结论”的区域。现在的规则是一张表,直接写在流程配置里:

审查项 Agent 可自主 必须人工 理由
格式完整性(签字页、附件齐否) 是 — 确定性判断,无歧义
标准法务表述比对(如”不可抗力”定义) 是 — 模板匹配,可校验
付款账期、违约金比例等数值抽取 是(需附条款 ID) 超阈值时 超过内部红线(如违约金 > 20%)必须上人
排他性、独家、不可撤销等定性判断 否 是 敞口极大且措辞多变,模型不可作为唯一依据
全文一致性校验(条款间冲突) 提示风险 最终认定 跨条款推理超出可靠边界
责任上限、赔偿封顶 否 是 一处漏报即重大损失
表格/附件内嵌条款 提取并提示”已覆盖” 抽样复核(≥30%) 第一处漏报正来自此处

配套两条工程硬约束,比表更重要:

  • 禁止静默过滤。任何字段如果抽取置信度低于阈值,输出必须是”未确认:{字段名}”,而不是空白。空白会被下游当成”没问题”。
  • 每一条风险提示必须能定位到原文。不给条款 ID 的风险提示不允许出现在报告里。这一条直接消灭了大部分幻觉引用。

四、可复用的混合流程

定型的流水线是四段,Agent 只占其中一段的辅助位:

1. [确定性] 预处理层
   - 全文索引:正文 + 附件 + 表格 + 页脚,分层标记
   - 条款切分:编号、层级、字符大小写(小字段高风险标记)
   - 硬规则扫描:关键词+正则("独家"、"不可撤销"、"排他"…)必命中人工
2. [Agent] 初筛层
   - 仅输出:风险项列表(含条款 ID、原文摘录、依据来源)
   - 输出受限 schema,禁止自由解释、禁止引用无 ID 规则
   - 一条"不确定清单"必须非空或显式声明"全部已确认"
3. [确定性] 校验层
   - 引用一致性:所有条款 ID 存在于原文
   - 阈值断言:违约金/责任上限等按红线复核
   - 完整性:合同要素字段无一处于"未确认"却未出现在人工队列
4. [人工] 定点审查
   - 只看 Agent 标红 + 不确定性字段 + 硬规则命中项
   - 抽样复核附表/表格类条款 ≥30%

改造后的数据:初筛仍保持 90% 的提速,但风险点漏报从 3/32 降到 0/47(两个半月跟踪),人工定点审查时长占总时长比例约 22%——省下来的时间是真实的,但省的方式是把人的注意力挪到了该看的地方。

有个反直觉的发现:加了这些约束后,模型的”风险提示数量”反而下降了 31%。之前它报的一大堆”潜在风险”里,多数是无法定位到原文的空泛提示。报告变短了,但每一条都能落地追查,这比一个长篇风险列表有用。

五、什么场景可以更放手

不是所有合同都值得上这套。按金额和敞口分级:

  • 低敞口、模板化、金额小(如标准 NDA、小额采购):Agent 全权 + 1% 抽检即可,不必上全套。
  • 中敞口、有少量非标条款:Agent 初筛 + 人工定点,本文方案的原型。
  • 高敞口、独家/不可撤销/涉 IP 转让:Agent 只做预处理和信息提取,定性判断 100% 人工, Agent 不许做”是否可接受”的结论。

AI 在合同里的正确位置是”一个读过所有条款但没有判断权的助理”,不是一个”能替你判断的律师”。前者提速 90%,后者可能让你损失 1,200 万。

总结

三处漏报教会我们的是:AI 合同审查的价值不在”它多能干”,而在”它多诚实”。一个会说”这条我没把握”的系统,比一个给你完整答案的系统值钱得多。真正需要设计的三件事:覆盖(别漏读)、诚实(别静默)、可追(每条结论有出处)。

把内部规则搬出 prompt、禁止无 ID 引用、禁止静默过滤——这三条约束的成本很低,但它们把最贵的那类失败挡在了外面。

互动提问:你现在用 AI 审合同时,它报的风险点每一条都能定位到原文条款吗?还是有一堆看起来很专业的空泛提示?

互动提问:如果一份 1,200 万的合同,AI 说”看起来没问题”,你会直接签吗?你会要求它怎么证明?

分享到:

微博
Twitter
LinkedIn

— IMAI 编辑部 | 2026-10-26

发表评论