律师:分析一份合同 fuite
要在合同不离开您的电脑的情况下进行分析,请用 Ollama 提供模型服务(Qwen 3.5 9B 或 Mistral Small 24B),提取 PDF 中的文本,并规定:每个指出的问题都必须逐字引用对应段落。随后由脚本检查该引文是否确实存在于合同中。请调大 Ollama 的上下文窗口:显存不足 24 GB 时,默认窗口为 4,000 个 token。
合同中包含的信息,不能因为负有职业保密义务或签订了保密协议,就随意交给任何在线服务。本地处理流程读取 PDF,标出需要审查的条款并引用相关段落,整个过程中没有任何数据离开您的电脑。本指南介绍如何搭建这一流程、加入引用自动核验,并明确说明工具无法做到哪些事情。
#为什么不应将合同提交给在线聊天工具
一份合同包含姓名、价格、协商条件,有时还包含个人数据。将合同提交至托管的AI服务,相当于将这些信息发送给第三方,其处理方式由该服务的使用条款规定,而非由您个人的保密承诺决定。对律师而言,这涉及职业道德问题:2026年3月由全国律师协会通过的《职业道德与人工智能指南》明确指出,律师职业要求必须保护职业秘密并遵守《通用数据保护条例》(RGPD)。指南的评论者指出,保密义务禁止在任何情况下泄露与案件或客户相关的机密信息,包括在使用人工智能工具时。
对企业法务而言,约束来自合同:与合作伙伴签署的保密协议几乎从未允许将其条款提交给 AI 服务提供商。软件厂商的专业服务方案提供不再利用数据的保证,但您应在自己签署的合同中核实这些保证,而不能依赖宣传口号。本地分析消除了这个问题:合同文本不会离开您的电脑,因此既没有需要申报的数据处理受托方,也没有需要说明正当理由的数据传输。
#在内部实现 PDF 对话,无需编写代码
只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
部分读者只是希望对存放在文件夹中的合同进行问答,并确保任何内容都不会离开信息系统。有两种方式。第一种无需编程:在内部服务器上安装 Open WebUI 或 AnythingLLM 这样的界面,并连接到 Ollama;加载 PDF、提出问题,工具就会找出有用的段落。本站已有相关指南。第二种方式将在下文介绍:使用一个简短的脚本,完全控制提示词和引文核验。
该脚本适合每次分析一份合同,并针对具体问题进行提问。带文档检索功能的界面适合包含数十份合同的语料库,例如需要找出所有含有自动续约条款的合同。在后一种情况下,效果取决于文档切分和检索,而不仅仅取决于模型。
| 需求 | 方法 | 注意事项 |
|---|---|---|
| 阅读10至25页的合同 | 直接使用脚本,将整份合同放入上下文 | 需在 Ollama 中调大上下文窗口 |
| 查询 20 至 500 份合同 | RAG 界面(Open WebUI、AnythingLLM) | 分割质量和搜索质量 |
| 与合同模板对比 | 在提示词中包含两段文本的脚本 | 上下文加倍:检查内存 |
| 合同扫描件 | 优先进行OCR | 含噪声的文本会导致引用失真 |
#最简技术栈:模型、PDF 阅读器、脚本
三个组件就够了。Ollama 负责提供模型服务。pdfplumber 或 PyMuPDF 等 PDF 读取工具负责提取文本。一个约四十行的 Python 脚本将这些组件连接起来。模型方面,可以参考 Ollama 模型库中的两个选择:90 亿参数的 Qwen 3.5 大小为 6.6 GB,标称上下文长度为 256,000 个 token;240 亿参数的 Mistral Small 大小为 14 GB,标称上下文长度为 32,000 个 token。前者能装入 8 至 12 GB 显存的显卡,后者需要 16 GB 或更多显存。请用您自己的三份合同测试这两个模型:它们对法律法语的理解能力会因合同而异。
上下文是关键所在。Ollama 默认根据显存大小设置上下文窗口:当显存少于 24 GB 时,窗口大小为 4000 个 token,远小于一份合同的长度。一份 20 页的合同包含数千个单词,按排版不同,相当于一万五千个 token 或更多,这是你需要在实际文档中衡量的量级。未进行调整时,合同开头会被静默截断,模型仅基于部分内容进行回答。关于上下文窗口的指南详细说明了其工作原理。
#安装工具
随后请确认 PDF 中是否包含可选择的文本:若 pdfplumber 返回空字符串,则该文件为扫描件,需要进行 OCR 识别。绝不可在未告知用户的情况下,基于低质量 OCR 结果生成文本,因为模型的引用将无法核实。
#用于初步识别的助手系统提示
提示词规定角色、禁止事项和格式。核心要求是必须引用:要求模型原样引用其依据的文本片段,可以减少编造内容,而且您能通过程序核查引用。下面的提示词要求结构化输出,以便进行这项核查。
#完整脚本,含引用验证
脚本读取 PDF,以更大的上下文向模型提问,并通过 JSON Schema 强制规定 JSON 输出格式;Ollama API 的 format 字段支持这一功能。随后,脚本先规范化空格,再检查每条引文是否确实出现在合同文本中。找不到的引文会被单独标记:这表明它可能是编造或改述的内容,需要核查。
#揭示风险的提问
请提出具体问题,而不是笼统的请求,一次只讨论一个主题。每条回答都必须引用合同内容,或明确说明合同未涉及该主题。以下是一份起始清单,可根据您的实际工作加以调整。
- Non-concurrence
- “合同中是否包含竞业限制条款?请引用该条款,并注明其期限、适用的地理范围及经济补偿。”
- 责任
- “责任限制是什么?是否对双方都适用?哪些损害不在赔偿范围内?”
- 合同终止
- 「解约条件是什么?双方是否具有相同的提前通知期?」
- 续订
- “是否存在自动续约?要在什么期限内、以何种形式提出不续约?”
- 违约处罚
- “列出逾期、解约或不履约的违约处罚。这些处罚是否对双方同样适用?”
- 适用法律
- “适用哪部法律?指定由哪个法院管辖?”
- 知识产权
- 「交付物的产权如何处理:转让、许可、期限、地域?」
- 个人数据
- “合同是否规定了个人数据处理?是否包含数据处理委托条款?”
#将合同与您常用的合同模板进行对比
如果您有经过验证的文档模板,例如事务所或企业的通用条款,那么对比比单独阅读更有用:它能显示哪些内容偏离了您的参考文本。语言模型会读取两份文本,因此上下文占用空间会翻倍:请确认向 Ollama 请求的上下文窗口足够大,否则就逐条比较。
#在依赖该工具之前,先用您自己的合同进行测试
在将此助手纳入工作流程之前,请先衡量它会漏掉哪些内容。选取五份您已经亲自审阅过的合同,其中一份特意包含您熟悉的条款,例如不太显眼的自动续约条款。使用同一份问题清单提问,然后统计:找出的真实条款、被标记出的无用事项,以及找不到出处的引文。
- 01选择五份您熟悉的合同多样化合同类型:服务合同、供应合同、商业租赁合同、非典型劳动合同。单一类型的合同无法反映整体的稳健性。
- 02记录您自己整理的条款清单在启动工具之前,请逐一列出您预期在每份合同中找到的条款。这份记录就是您用于核对结果的基准。
- 03比较召回率与噪声水平统计工具找出了多少条预期应识别的条款,以及误报了多少个问题。每三条条款就漏掉一条的工具,只能作为备忘辅助,不能作为筛查工具。
- 04记录复核所需时间测量重新阅读标记内容及其引文所需的时间。如果重新阅读耗时几乎与完整阅读相当,则收益甚微。
- 05确定使用场景仅将该工具用于确实有帮助的任务:初步筛选、与合同模板对比、查找特定条款。对于重要性高、无论如何都需要全文阅读的合同,应排除使用该工具。
#限制与防护机制
- 并非律师
- 模型不了解最新判例,也不了解那些会改变条款含义的措辞细微差别。它只负责初步筛选;决定仍由法律专业人士作出。
- 捏造条款
- 小型模型可能描述合同中缺失的条款。强制引用和脚本验证可降低该风险,但不会完全消除。
- 篇幅较长的合同
- 如果内容超出上下文容量,请按章节拆分,并针对每一部分分别提问,或改用文档检索。关于分块策略的指南详细介绍了各个选项。
- 扫描
- PDF 图像需要 OCR 处理。OCR 生成的文本存在错误,导致引用验证存在不确定性。
- 日志记录
- 不要将合同或回答保存在未受保护的文件中:仍需保障电脑安全并对磁盘进行加密。隐私检查清单列出了需要检查的项目。
- 来源:CNB 关于职业伦理与人工智能的指南
- 来源:CNB 指南解读(Village de la Justice)
- 来源:Ollama 中的上下文长度
- 来源:斯坦福大学关于法律领域AI工具的研究
- 来源:Ollama 模型库中的 Mistral Small
能否用 AI 分析合同而无需将文件上传到互联网?+
如何在内部实现基于 PDF 的对话,同时不让合同离开信息系统?+
哪个本地模型适合阅读法语合同?+
一份 30 页的合同能放进模型的上下文窗口吗?+
模型能否编造一条实际上并不存在的条款?+
人工智能分析能否取代律师的审阅?+
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。