我们把 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%。常见形态包括:编造一个不存在的条款编号、把行业通行惯例说成”公司规定”、把上家客户的模板条款误记为”我们的标准”。
这类幻觉比知识型幻觉更隐蔽,因为它引用的是一个”内部权威”,人类审查员更容易直接采信。它污染的不是事实,是审查依据本身。
我们做了三件事把它压下来:
- 把内部规则从 prompt 里搬进检索库,并且要求逐条附来源。如果一条判断引用了内部规则,必须给出规则原文 ID。检索不到的,模型必须回答”无内部规则依据,按外部通行标准/需人工确认”。
- 禁止条款编号不存在化。生成后跑一个校验:所有”第 X 条”必须和原文条款编号对得上,对不上的直接标记为疑似幻觉,进人工队列。
- 把”公司规定”改成”据调用方提供的规则库”。一个小措辞变化,加了一个前提声明,模型凭空断言”公司规定”的比例从 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 说”看起来没问题”,你会直接签吗?你会要求它怎么证明?
— IMAI 编辑部 | 2026-10-26