Table of Contents

  1. 一、为什么要做 LegalDeepMine?
  2. 二、问题的背景:为什么”直接问一句”不够用?
  3. 二点五、一个最典型的真实场景:外包合同里”最会坑人的三句话”
  4. 三、核心方案:五阶段串行思维链(像一个法律专家团队)
  5. 四、最重要的部分:五个提示词(Prompt)原文展示
  6. 阶段 1:全域扫描与定性(Contract Profiling)
  7. 阶段 2:动态立法(Checklist Generation)
  8. 阶段 3:红蓝军对抗挖掘(Red Teaming / Devil’s Advocate)
  9. 阶段 4:缺失条款检索(Missing Clause Detection)
  10. 阶段 5:深度反思与修正(Reflection & Correction / Senior Partner Review)
  11. 五、代码层面我怎么把它跑起来?(只讲逻辑,不贴完整代码)
  12. 六、为什么我认为它比”直接问 LLM”更可靠?
  13. 七、写在最后
  14. 源码
  15. 咱们的社群
    1. 如果你有场景和困难, 欢迎找我聊聊AI

一、为什么要做 LegalDeepMine?

很多人第一次用大模型做合同审查,会得到一种”看起来很专业、但不太敢信”的体验:

  • 输出很像”泛泛的风险提示”:通常会说”注意付款、注意违约、注意争议解决”,但很难指出你这份合同里真正的”深坑句子”。
  • 缺少对抗性思维:大模型往往以”正常合作”的视角解读合同,不会主动模拟对方如何”钻空子”。
  • 容易遗漏隐蔽风险:一些风险藏在”模糊表述、期限不明、权利义务不对等、赔偿上限、验收默认通过”等细节里,一次性扫一遍很容易漏。
  • 幻觉/引用不准:尤其在涉及法条引用时,偶尔会出现”引用了不存在的条款”或”条款存在但不适用”的问题。
  • 缺少自我纠错:一次性输出后,很少再回头验证”我刚才说的法条是不是存在?我的推论是否过度解读?”。

我做 LegalDeepMine 的目标很明确:把”直接问 LLM 得到的一次性浅层结论”,升级为一个可重复、可解释、可对抗、可复核的合同审查流程。

示例图


二、问题的背景:为什么”直接问一句”不够用?

合同审查的难点,恰恰不在于”知道常见风险点”,而在于:

  • 你必须先识别合同”是什么类型、你站在哪一边”:同一句条款,甲方/乙方、强势/弱势视角完全不同。
  • 你必须先有一份”审查标准”:没有标准,就只能凭直觉扫合同,风险点会随机、且不完整。
  • 你必须把自己变成”对方”:很多坑不是条款明显违法,而是”可被对方利用”。
  • 你必须能查漏补缺:很多合同不是”写错”,而是”关键保护条款根本没写”。
  • 你必须做最后的”合伙人复核”:把前面的高创意/高强度推演结果,逐条校验真实性与可落地性。

这是一种”工作流问题”,不是”再换一个更强模型就能彻底解决”的问题。

所以 LegalDeepMine 的核心不是堆框架,而是把合同审查拆成一个五阶段串行思维链(5-Stage Pipeline):每阶段扮演不同角色,专注解决一种子问题,并把结果传递到下一阶段。


二点五、一个最典型的真实场景:外包合同里”最会坑人的三句话”

为了把”为什么要做五阶段”讲透,我用一个非常常见的场景来说明:

  • 场景:创业公司签《软件开发外包合同》。你是甲方(付钱的人),但在条款设计上往往是弱势方。
  • 直接问 LLM:很容易得到”注意付款/注意交付/注意违约”这种泛泛建议,但真正让你”血亏”的,通常藏在某几句微妙的表述里。

举 3 个典型”深坑句式”(现实合同里极常见):

  • 交付期限不明确:例如”乙方应尽快完成”“以乙方实际进度为准”。

    这种写法的可怕之处是:你很难用明确节点去追责,”拖延”会变成一场消耗战。

  • IP 归属附条件:例如”甲方付清全款前,成果归乙方所有”。

    在预付款比例高、合作不确定的情况下,你可能在付款后仍拿不到核心权利。

  • 违约责任严重不对等:例如甲方逾期一天 5%,乙方逾期一天 0.01% 且有上限。

    这种结构会把谈判权和风险完全推向甲方。

LegalDeepMine 之所以要设计”Checklist → 恶意推演 → 合伙人复核”,就是为了把这些”看似普通、实则致命”的句子系统化地挖出来,并让最后一步把法律引用与建议落地性校验一遍,避免胡乱吓人或引用失真。


三、核心方案:五阶段串行思维链(像一个法律专家团队)

我把一个”法律团队式审查”抽象成 5 个角色:

  • 阶段 1:定性专家 —— 先搞清楚:合同类型、行业、我方角色、核心法规。
  • 阶段 2:立法专家(Checklist) —— 生成该类型合同的”最高规格审查清单”,建立标准。
  • 阶段 3:红队对抗(恶意推演) —— 扮演狡猾对手,从付款/交付/违约等关键条款里找”可利用的漏洞”,并要求给出法律依据与风险评级。
  • 阶段 4:查漏专家(缺失条款) —— 对比行业最佳实践,指出”对我方至关重要但完全缺失”的条款。
  • 阶段 5:合伙人复核(反思与修正) —— 最终验真:法条是否存在且适用、哪些是过度解读、建议是否具备商业可执行性。

这 5 个阶段的设计,本质是在用流程补齐大模型的 5 个典型短板:定性不足、标准缺失、缺对抗、缺查漏、缺复核


四、最重要的部分:五个提示词(Prompt)原文展示

下面这部分是项目的”核心资产”:每个阶段都有独立的 System Prompt(角色/任务)User Prompt(输入/约束),并配置了不同的 Temperature(严谨/创意)

说明:

  • 合同全文会被注入到 ${contract}
  • 前序阶段输出会被注入到 previousOutputs["1"] / ["2"] / ["3"] / ["4"]
  • 温度策略:大部分阶段低温度保严谨;阶段 3 提高温度激发”钻空子”的想象力;阶段 5 再降到最低做复核。

阶段 1:全域扫描与定性(Contract Profiling)

目标:先识别合同 DNA:合同类型、行业、我方(默认甲方/弱势方)风险点、核心参考法规。

System Prompt

你是中国顶级的资深法务专家,精通《民法典》。你的任务是快速识别合同类型、行业背景及我方角色风险。

User Prompt

请阅读合同全文。1. 定性合同类型;2. 定位所属行业;3. 代入甲方(弱势方)视角,列出该领域最大痛点;4. 列出核心参考法规。

合同内容:
${contract}

Temperature:0.3(偏严谨)


阶段 2:动态立法(Checklist Generation)

目标:基于阶段 1 的”定性结果”,生成该类型合同的”最高规格审查清单(Killer Checklist)”,把审查从”随缘扫条款”变成”有标准、有覆盖面”。

System Prompt

基于上一阶段识别的合同类型,利用你的内部法律知识库,构建审查标准。

User Prompt

基于以下信息生成一份该类型合同的'最高规格审查清单(Killer Checklist)'。必须包含:核心义务模糊性、IP归属陷阱、违约责任不对等、隐蔽赔偿上限、解约权限制等10个维度。

上一阶段输出:
${previousOutputs["1"] || ""}

合同内容:
${contract}

Temperature:0.3(偏严谨)


阶段 3:红蓝军对抗挖掘(Red Teaming / Devil’s Advocate)

目标:从”对方想坑我”的角度做恶意推演,锁定关键条款(付款/交付/违约),给出风险等级,并要求引用《民法典》作为依据。

System Prompt

你现在扮演一个极度狡猾的对手,试图利用合同漏洞逃避责任。采用'恶意推演法'进行攻击。

User Prompt

锁定关键条款(付款、交付、违约)。思考:如果对方想坑我,会怎么利用这句话?引用《民法典》证明其无效或不利。评级风险等级(致命/严重/一般)。

审查清单:
${previousOutputs["2"] || ""}

合同内容:
${contract}

Temperature:0.7(刻意提高:激发创意与对抗性)


阶段 4:缺失条款检索(Missing Clause Detection)

目标:很多风险不是”写错”,而是”没写”。阶段 4 做的就是系统化查漏:把行业标准/Checklist 与合同逐条对比,指出缺失的保护性条款。

System Prompt

对比行业标准与Checklist,寻找缺失的保护性条款。

User Prompt

指出这份合同完全缺失了哪些对保护我方利益至关重要的条款?(如数据保密、不可抗力细化、源码交付标准等)。

已发现的风险:
${previousOutputs["3"] || ""}

合同内容:
${contract}

Temperature:0.3(偏严谨)


阶段 5:深度反思与修正(Reflection & Correction / Senior Partner Review)

目标:这是我认为”最关键但最容易被忽略”的一步:让模型自我复核,主动剔除幻觉、纠正过度解读,并把建议改写成可执行方案。

System Prompt

你现在是一个冷静、客观的资深合伙人(Senior Partner)。你的任务是审查前序步骤中AI生成的风险点,并直接修正错误。

User Prompt

请复核所有发现:1. 验证引用的法律条款是否存在且适用(剔除幻觉);2. 剔除过度解读的'假风险';3. 确保修改建议具备商业可落地性。执行修正并输出最终版本。

缺失条款:
${previousOutputs["4"] || ""}

合同内容:
${contract}

Temperature:0.2(最低:最大化严谨)


五、代码层面我怎么把它跑起来?(只讲逻辑,不贴完整代码)

LegalDeepMine 的工程实现刻意保持极简:没有 LangChain、没有向量库、没有复杂 Agent 框架,就是 Next.js + 一个 API 路由。

整体链路可以理解为:

  1. 前端让用户粘贴合同全文。
  2. 用户点击”开始深度审查”后,前端会按 阶段 1 → 2 → 3 → 4 → 5 串行请求后端接口。
  3. 每次请求都带上:
    • contract:合同全文
    • stage:当前阶段编号
    • previousOutputs:前面阶段的原始输出(作为下一阶段输入的一部分)
  4. 后端只做两件事:
    • 根据 stage 选择对应阶段的 System/User Prompt
    • 调用 OpenRouter 的 Chat Completions,返回该阶段输出
  5. 前端汇总 5 段原始输出,展示”过程控制台”和最终报告。

这种架构的好处是:透明、可解释、容易调 Prompt、容易替换模型

补充两点我的取舍:

  • 不引入复杂 Agent 框架:我需要的是”可控的提示词工作流”,而不是”黑盒编排”。Prompt 的可读性和可维护性更重要。
  • 不做 RAG(检索增强):合同本身就是最核心的上下文;在大多数商业合同长度可控的前提下,先把”审查流程”做对,收益往往更高。

六、为什么我认为它比”直接问 LLM”更可靠?

因为它不是”更聪明”,而是”更像一个团队在干活”:

  • 阶段 1 定义合同:判断合同范围,根据合同类型,确定审查重点。
  • 阶段 2 先给标准:避免模型只凭直觉扫合同。
  • 阶段 3 强制对抗:把”隐蔽坑位”从概率事件变成流程必经。
  • 阶段 4 专门查漏:把”没写”当成一个独立问题来解。
  • 阶段 5 强制复核:用最后一步把前面的”高创意输出”拉回到事实与可执行性。

一句话总结:LegalDeepMine 不是在”生成答案”,而是在”执行审查流程”。


七、写在最后

LegalDeepMine 的核心价值并不神秘:我只是把合同审查拆成五个”角色明确、任务明确、约束明确”的步骤,然后让模型按流程执行。

如果你也在做任何需要”深挖、对抗、复核”的 AI 应用(比如代码审查、合规检查、投研尽调),这套”五阶段思维链”的方法论同样适用。

有个重点 : 每个阶段都可以根据自己的场景扩展成更复杂的流程逻辑.

比如阶段2 “定义标准”, 可以扩展成多个子步骤,再配合rag, 先定义风险分类, 再定义评估标准, 再定义评估方法.

源码

源码都在星球中了.

咱们的社群

星球中有开箱即用的源码、讲解视频、提示词,以及落地经验.

欢迎加入我们,思考技术对商业的价值.

示例图

如果你有场景和困难, 欢迎找我聊聊AI

AI咨询、AI项目陪跑.

我的微信: leigeaicom

Written by

雷哥(微信:leigeaicom)

带你AI编程和AI工程化落地, 让你少走弯路, 做更有价值的创造者.

大家一起来讨论