[控场AI]
· 8 分钟阅读· 4,145 字

1B小模型读不了合同?RedPen用规则引擎+小模型重构合同审查

1B小模型读不了合同?RedPen用规则引擎+小模型重构合同审查

RedPen 用规则引擎判断风险、1B 小模型只负责措辞,离线运行、一次性 19 美元。

RedPen 是一款面向自由职业者的离线合同审查工具,核心设计是分层架构:65 条开源规则负责识别危险条款,本地运行的 Gemma 3 1B 模型只把规则结论重组成可发给客户的语言,模型从不判断什么有风险。整个工具跑在 8GB 内存笔记本上,合同与 NDA 永不离开设备,HTTP 客户端在非 loopback 地址时抛出异常。开发者用六份真实文档测试后暴露六个 Bug,修复方式是加规则而非重训练;换用 Qwen 权重后发现结果完全相同,证明模型选择只是措辞偏好。产品定位诚实:干净报告是弱证据,8GB 是底线,扫描版 PDF 不支持。

一个「反直觉」的产品决策

RedPen 是一款面向自由职业者的离线合同审查工具,它的核心设计理念可以用一句话概括:模型从不判断什么条款有风险。

65 条开源规则负责识别危险条款,本地运行的 Gemma 3 1B 模型只负责把这些规则发现的结论重新组织成可发送给客户的语言。整个工具跑在用户自己的笔记本上,不上传、不按次收费、一次性 19 美元。

这个分层架构并非对1B小模型的能力谦虚——而是对分工边界的精确划分。据开发者 Soumwadeep 在 Dev.to 的分享,一个 1B 模型不足够可靠来判断条款风险,而规则引擎也不足够擅长写一封有说服力的客户邮件。每一层只做自己真正胜任的那一半。

RedPen demo

更关键的是:即使完全关闭模型层,审查报告依然完整可用。

两层架构如何运转

第一层:65条开源规则,不依赖任何模型

规则层用纯 Python 编写,分为自由职业协议、录用信/实习协议、NDA 三个规则库。每条规则携带自己的解释、一段可直接粘贴的反向条款、以及邮件中该说的话。

技术上,PyMuPDF 负责文本抽取,分段模块恢复条款编号并保留每条条款的页码和字符跨度,每条发现都逐字引用触发它的原文。

PyMuPDF 是一个基于 MuPDF 引擎的 Python 库,专用于 PDF 及其他文档格式的解析、渲染与文本抽取。它的优势在于速度快、内存占用低、无需外部依赖,且能精确返回每个字符在页面中的边界框坐标。RedPen 正是利用这一特性实现「逐字引用触发规则的原文」——不仅拿到文字,还能定位到具体页码与字符跨度,从而让报告中的每一条发现都可追溯、可验证。相比把 PDF 转成图片再 OCR 的方案,PyMuPDF 直接读取内嵌文本层,零网络请求、零云端调用,契合离线隐私要求。

第二层:Gemma 3 1B 经由 llama.cpp,只管语言

模型读取第一层的发现结果,针对这份特定的合同重新表达:三行摘要、逐条解释、谈判邮件,以及一轮规则模式无法覆盖的模糊性检查。

运行环境极为轻量:8GB 内存的 Apple Silicon MacBook,无需 GPU、无需 Docker。权重 769MB,加载耗时 2.3 秒,常驻内存 0.83GB。规则处理仅需 12-28 毫秒,完整审查(含模型层)11-17 秒。结果通过 SSE 流式渲染,模型写邮件时不会阻塞界面。

llama.cpp 是一个用 C/C++ 编写的开源大模型推理引擎,通过 GGUF 格式加载量化后的模型权重,可在 CPU 上高效运行,并支持 Apple Silicon 的 Metal 加速。它把模型体积压缩到数百 MB 级别,使得 1B 参数模型能在普通笔记本上以可接受速度推理。RedPen 将 Gemma 3 1B 以 Q4 量化后经 llama.cpp 调用,权重仅 769MB、常驻内存 0.83GB,无需 GPU、无需 Docker。SSE(Server-Sent Events) 则是一种基于 HTTP 的单向流式推送技术,服务器可持续向浏览器发送文本片段,因此模型逐字生成邮件时界面能实时渲染,不会因等待完整响应而卡顿。

真实文档暴露的六个 Bug

开发者用自制的合成合同完成开发后,拿六份真实文档做了测试——结果是六个他从未预料到的失败。

问题为什么严重
静默丢弃录用信第1页分段逻辑只输出第一个编号条款之后的文本。真实录用信的第1页通常是无编号散文,导致无薪培训期和每天6天、11点至20点的工作时间从未被分析
告诉实习生「没有押金条款」自由职业规则跑在雇佣条款上:没有押金、没有逾期利息、没有暂停权。属实但无用——而真正的发现是雇主扣留了他们的学位证书原件
漏掉不可能的日期一份实习邀请发于 2023年6月29日,而任期从 2022年7月3日到 2023年4月28日——在邀请发出前就已结束
漏掉「变相永久」条款一份NDA将义务终止条件写成「直至所有保密信息为公众所知」——这永远不会发生
把正常起草标记为风险「自由职业者在未经批准的情况下不得产生新费用」触发了费用拒绝规则,因为无锚定的 no 匹配到了 not 内部
把空白字段当成敌意[城市, 州] 拥有专属管辖权 被满严重度评分。未填写的字段现在被单独计数展示,相关发现自动降级

六份真实文档,六个Bug。这正是这套架构存在的意义:当它误判文档类型时,修复方式是一条新规则,而不是重训练或提交工单。

护栏,全部来自模型失败

开发过程中积累的护栏机制同样值得关注:

  • 引用不存在的条款:对照真实条款解析,否则丢弃。模型经常用模糊的词而非条款编号回答,这也会被解析——但仅当该词恰好出现在一个条款中时
  • 丢弃六个要求中的三个:对照你被告知要请求的措辞检查覆盖率。格式不检查——第一个验证器曾拒绝一封完美的项目符号邮件,因为要求是编号格式
  • 邮件署名「Max」:剥离并替换为 [你的名字]
  • 声称自己是别的模型:换成 Qwen 权重测试时,UI 仍显示「gemma」。标签是硬编码的,现在从实际运行的模型读取
  • 返回垃圾或引擎未运行:每个角色都有确定性回退,报告始终完整

为什么开源在这里是结构性优势

开发者列出了闭源 API 在架构上无法提供的四件事:

1. 客户的NDA永远不离开笔记本。 自由职业者最敏感的文件是描述其为已经付钱的客户所做工作的文件。「我们承诺30天内删除」与「它从未被传输」不是一回事。这在代码中强制执行:HTTP 客户端在基础 URL 不是 loopback 时抛出异常,有测试覆盖这一点。上传文件从字节解析,从不写入磁盘。

scripts/offline_proof.sh 在运行完整审查的同时采样进程持有的每个套接字——全部是 loopback,没有任何请求离开机器。开发者坦承,这个脚本的第一版通过是因为什么都没观察到,因为 PID 列表里用了字面括号导致 lsof 从未收到有效参数。

2. 零边际成本让一次性定价可行。 托管一个能容纳权重的服务器约 25 美元/月,在共享 CPU 上只有 2-5 tokens/秒——比用户自己的笔记本还慢,且每份合同都要落到他们不控制的服务器上。本地运行下,第500个用户成本为零,这才是 19 美元一次性定价而非订阅制的基础。

3. 规则可编辑,这才是真正的护城河。 如果你做视频剪辑,「永久、全媒体、全球范围使用权」是你熟悉但通用API无法可靠标记的红旗。你可以用 JSON 添加规则,无需代码、无需审批。

4. 换模型只是一行配置。 已验证:同一份合同在 Gemma 3 1B 和 Qwen 2.5 1.5B 下产生完全相同的发现——相同规则、相同页面、相同证据,只有摘要和邮件措辞变化。选择权重变成措辞偏好,而非正确性风险。

loopback 地址指 127.0.0.1 或 ::1 这类指向本机自身的网络接口,数据包不经过任何物理网卡。RedPen 在 HTTP 客户端层面强制检查基础 URL 是否为 loopback,否则直接抛出异常,从代码层面保证审查过程不向外部服务器发送请求。scripts/offline_proof.sh 则借助 lsof(列出进程打开的文件与套接字)采样运行期间的所有网络连接,验证全部为 loopback。这类「用工程手段证明隐私承诺」的做法,比任何服务条款都更可验证。

诚实的局限

RedPen 的局限同样明确:8GB 内存是底线,1-3B Q4 量化模型可以运行,7B 不行。扫描版 PDF 不支持——没有可选文本,RedPen 不会把你的页面发送到 OCR 服务,所以它直接说明而不返回空审查。

模型层是 1B 模型,解释有时泛泛,这也是规则库自身措辞位于其下的原因。干净的审查报告是弱证据——没有规则匹配不等于公平保证,UI 会明说这一点,而不是用一个绿色仪表暗示安全。

RedPen 是一个带有开源规则库的模式匹配工具,不是律师。

Q4 量化指将模型权重从 16 位浮点压缩到约 4 位整数,体积缩小约四倍、内存占用大幅下降,代价是精度轻微损失。1-3B 参数模型经 Q4 量化后可在 8GB 内存设备运行,而 7B 模型即使量化后仍超出该内存预算,这构成了 RedPen 的硬件底线。扫描版 PDF 是另一类限制:其页面本质是图像,没有可提取的文本层,PyMuPDF 无法直接读取文字。RedPen 选择明确告知用户不支持,而非把页面偷偷上传到 OCR 服务——这与它「数据永不离开设备」的核心承诺一致。

第一位用户与后续路线图

自由职业开发者 Shreshtha Das 测试了 RedPen 并给出正面反馈,特别强调了离线运行在处理保密客户协议和NDA时的优势。但开发者本人保持清醒:这只是单点数据,不是验证;而且他最想得到的一个假阳性,恰恰是对方没有报告的。

Actizant 创始团队在审阅代码库后给出了一份三行路线图:按职业定制风险规则、管辖区感知指导、透明声明自动化分析的局限。前两项正是开源规则库天然擅长的——职业特定规则集就是一个 JSON 文件,管辖区配置文件是带有不同安全港的第二套规则。

RedPen 采用 MIT 协议,5355 行 Python,65 条规则,104 个测试,无编译绑定。模型权重遵循各自的许可,RedPen 不打包权重,而是为你下载。

#RedPen#离线合同审查#Gemma 3 1B#开源规则引擎#本地AI模型#合同风险检测#1B模型应用#隐私优先AI工具
分享:

相关推荐