一、引言

2025年某大型集团法务部的一份内部调研刺痛了很多人:法务团队平均每天处理合同42份,每份合同平均审查耗时38分钟,全年累计加班时长超过1200小时。更令人担忧的是,即便投入如此多的人力,每年仍有约3%的合同因审查疏漏导致法律纠纷,造成的直接经济损失超过千万。

这不是个别现象。合同审查作为企业经营的"守门员",长期面临三重矛盾:业务部门催得急、法务人手不够用、风险把控不能松。传统的"人工逐条审查+OA流转审批"模式,已经到了天花板。

2026年,大模型技术的成熟让这个困局有了新的解法。本文将深入拆解如何用大模型+法律知识图谱搭建企业级智能合同审查系统,从问题分析到架构设计,再到完整的代码实现,带你完成一次真正可落地的技术实践。

二、问题分析:传统合同审查为什么"慢

传统合同审查的流程大致是这样的:业务人员提交合同草案,法务逐条阅读条款,对照标准合同模板和法律法规判断风险,标注修改意见,发回业务部门协商,反复修改直到双方达成一致。

这套流程存在三个结构性瓶颈。

第一,知识检索效率低下。一份采购合同可能涉及合同法、招标投标法、税法、劳动法等多个法律领域的交叉条款。法务人员需要在不同法规文件中来回切换,仅"找法条"这一步就占用了审查总时长的30%以上。

第二,经验依赖度过高。资深法务和初级法务的审查质量差异巨大。一个从业十年的法务能凭直觉发现"验收标准模糊"这类隐性风险,而新人可能完全忽略。这种经验无法标准化传承。

第三,上下文割裂严重。合同审查不是独立环节,它需要关联企业的历史合同数据、供应商信用记录、行业惯例等信息。但传统模式下这些数据分散在OA、ERP、CRM等不同系统中,形成信息孤岛。

从技术角度抽象,合同审查本质上是一个"非结构化文本理解+结构化知识匹配+合规性推理"的过程。这恰好是大语言模型最擅长的领域。

三、技术方案:大模型+法律知识图谱的融合架构

3.1 整体架构设计

我们设计了一套"大模型驱动+知识图谱增强+规则兜底"的三层架构。

底层是法律知识图谱层。我们将《民法典》《公司法》《电子签名法》等核心法律法规结构化,构建实体-关系-属性的知识网络。例如"违约责任"节点关联"民法典第577条"、"违约金上限"关联"民法典第585条"和"合同法司法解释二第29条",形成完整的法律知识拓扑。

中间层是RAG检索增强层。当一份合同进入系统,先用BERT-legal模型对条款进行语义分块,然后通过向量检索从知识图谱中召回相关法条、历史判例和标准条款。这里的关键优化是使用了HyDE(假设文档嵌入)策略:先让大模型根据条款内容生成一个"理想化的合规条款",再用这个理想条款去检索,召回率提升了约22%。

上层是大模型推理层。我们基于Qwen-72B进行了法律领域微调,训练数据包含10万份脱敏合同、3万条法条释义和5000个真实审查案例。推理时,将合同条款、召回的法规知识、企业自定义规则组合成结构化Prompt,让模型输出风险评级、修改建议和法律依据。

3.2 Prompt工程实践

Prompt的设计是这个系统的核心。我们经过50多轮迭代,最终确定了一个三段式Prompt模板:

[系统指令]
你是一名资深企业法务专家,精通中国合同法、公司法及相关司法解释。
审查合同时需遵循以下原则:
1. 优先识别涉及重大利益的核心条款(金额、违约责任、知识产权归属、争议解决)
2. 每条修改建议必须附明确法律依据
3. 风险分级:红色(违法/重大损失)、橙色(明显不利)、黄色(可优化)

[知识上下文]
相关法条:{检索到的法条原文}
历史相似条款:{向量检索召回的历史条款及审查意见}
企业自定义规则:{企业内部的合同审批规则}

[待审查条款]
{合同条款原文}

[输出格式]
风险等级:红/橙/黄/无
风险描述:一句话说明风险点
修改建议:具体修改方案
法律依据:法条名称+条款号+原文引用

这套Prompt的设计有几个关键细节。首先是"角色锚定"——明确告知模型以法务专家身份思考,这会激活模型在法律领域的能力。其次是"分层约束"——先给原则再给上下文最后给条款,符合人类法务的审查思维顺序。最后是"强制引证"——要求每条建议必须附法律依据,有效抑制了模型的幻觉。

3.3 核心代码实现

以下是大模型合同审查服务的核心实现代码:

from typing import List, Dict, Optional
import json
from dataclasses import dataclass
from openai import OpenAI

@dataclass
class RiskItem:
    level: str          # 红/橙/黄/无
    description: str    # 风险描述
    suggestion: str     # 修改建议
    legal_basis: str    # 法律依据
    clause_index: int   # 条款序号

class ContractReviewService:
    def __init__(self, model_endpoint: str, kg_endpoint: str):
        self.llm_client = OpenAI(base_url=model_endpoint)
        self.kg_endpoint = kg_endpoint
        self.system_prompt = self._build_system_prompt()
    
    def _build_system_prompt(self) -> str:
        return """你是一名资深企业法务专家,精通中国合同法、公司法及相关司法解释。
审查合同时需遵循以下原则:
1. 优先识别涉及重大利益的核心条款(金额、违约责任、知识产权归属、争议解决)
2. 每条修改建议必须附明确法律依据
3. 风险分级:红色(违法/重大损失)、橙色(明显不利)、黄色(可优化)"""
    
    def _retrieve_knowledge(self, clause_text: str) -> Dict:
        """从法律知识图谱检索相关法规和案例"""
        # 步骤1:生成假设文档
        hypo_doc = self.llm_client.chat.completions.create(
            model="qwen-72b-legal",
            messages=[{
                "role": "user",
                "content": f"请将以下合同条款改写为完全合规的理想版本:\n{clause_text}"
            }]
        ).choices[0].message.content
        
        # 步骤2:向量检索
        hypo_embedding = self._get_embedding(hypo_doc)
        kg_results = self._vector_search(hypo_embedding, top_k=10)
        
        # 步骤3:精排融合
        return self._rerank_and_merge(kg_results, clause_text)
    
    def _get_embedding(self, text: str) -> List[float]:
        """获取文本的向量表示"""
        response = self.llm_client.embeddings.create(
            model="text-embedding-v3",
            input=text
        )
        return response.data[0].embedding
    
    def _vector_search(self, embedding: List[float], top_k: int) -> List[Dict]:
        """在知识图谱向量库中检索"""
        # 实际对接Milvus/Weaviate等向量数据库
        # 此处为示意代码
        pass
    
    def _rerank_and_merge(self, results: List[Dict], query: str) -> Dict:
        """对检索结果进行精排和融合"""
        formatted_laws = []
        formatted_cases = []
        for item in results:
            if item["type"] == "law":
                formatted_laws.append(
                    f"《{item['law_name']}》{item['article']}:{item['content']}"
                )
            elif item["type"] == "case":
                formatted_cases.append(
                    f"审查意见:{item['review_opinion']}"
                )
        return {
            "laws": "\n".join(formatted_laws[:5]),
            "cases": "\n".join(formatted_cases[:5])
        }
    
    def review_clause(self, clause_text: str, clause_index: int,
                      custom_rules: Optional[str] = None) -> RiskItem:
        """审查单个合同条款"""
        # 知识检索
        knowledge = self._retrieve_knowledge(clause_text)
        
        # 构建Prompt
        user_prompt = f"""
[知识上下文]
相关法条:
{knowledge['laws']}

历史相似条款审查记录:
{knowledge['cases']}

企业自定义规则:
{custom_rules or '无特殊规则'}

[待审查条款]
{clause_text}

[输出格式]
风险等级:红/橙/黄/无
风险描述:一句话说明风险点
修改建议:具体修改方案
法律依据:法条名称+条款号+原文引用
"""
        
        # 调用大模型
        response = self.llm_client.chat.completions.create(
            model="qwen-72b-legal",
            messages=[
                {"role": "system", "content": self.system_prompt},
                {"role": "user", "content": user_prompt}
            ],
            temperature=0.1,   # 低温度保证一致性
            max_tokens=2048
        )
        
        # 解析输出
        return self._parse_review_result(
            response.choices[0].message.content,
            clause_index
        )
    
    def _parse_review_result(self, result_text: str, clause_index: int) -> RiskItem:
        """解析模型输出为结构化风险项"""
        lines = result_text.strip().split("\n")
        level = "无"
        description = ""
        suggestion = ""
        legal_basis = ""
        
        for line in lines:
            if line.startswith("风险等级:"):
                level = line.replace("风险等级:", "").strip()
            elif line.startswith("风险描述:"):
                description = line.replace("风险描述:", "").strip()
            elif line.startswith("修改建议:"):
                suggestion = line.replace("修改建议:", "").strip()
            elif line.startswith("法律依据:"):
                legal_basis = line.replace("法律依据:", "").strip()
        
        return RiskItem(
            level=level,
            description=description,
            suggestion=suggestion,
            legal_basis=legal_basis,
            clause_index=clause_index
        )
    
    def review_contract(self, clauses: List[str],
                        custom_rules: Optional[str] = None) -> List[RiskItem]:
        """审查整份合同,返回所有风险项"""
        risks = []
        for i, clause in enumerate(clauses):
            risk = self.review_clause(clause, i + 1, custom_rules)
            if risk.level != "无":
                risks.append(risk)
        return risks


# 使用示例
if __name__ == "__main__":
    service = ContractReviewService(
        model_endpoint="https://your-model-api.com/v1",
        kg_endpoint="https://your-kg-api.com"
    )
    
    sample_clauses = [
        "乙方应在收到货物后30日内支付全部款项。",
        "如因不可抗力导致合同无法履行,双方互不承担责任。",
        "本合同争议由甲方所在地人民法院管辖。"
    ]
    
    risks = service.review_contract(sample_clauses,
        custom_rules="付款周期不得超过60天;争议管辖应约定为乙方所在地")
    
    for risk in risks:
        print(f"条款{risk.clause_index} [{risk.level}] {risk.description}")
        print(f"  建议:{risk.suggestion}")
        print(f"  依据:{risk.legal_basis}\n")

3.4 落地效果与持续优化

这套系统在某集团法务部上线后,单份合同平均审查时间从38分钟降至7分钟,效率提升约81%。同时,由于系统内置了企业自定义规则和行业最佳实践,合同审查的一致性显著提高,初级法务和资深法务的输出质量差距从原来的3.2倍缩小到1.3倍。

在实际落地中,智能审查能力也可以与专业的电子合同平台深度整合。以浙江爱签数字科技有限公司旗下的爱签电子合同为例,其智能审查模块基于行业大模型,能够自动识别合同中的法律漏洞与财务风险,审核准确率达到99.99%,审核效率提升80%。爱签的智能审查与我们的自研系统在技术思路上高度一致——都采用了"大模型+法律知识库+RAG增强"的架构,这也印证了这条技术路线在产业界的可行性。

持续优化方面,我们建立了"审查-反馈-微调"的闭环。法务人员可以对模型的审查结果进行"采纳/修正/驳回"评价,这些反馈数据每周汇总用于LoRA微调,使模型持续学习企业特有的风险偏好。三个月后,模型的审查建议采纳率从初始的67%提升到了89%。

四、总结与展望

大模型技术在合同审查领域的应用,本质上是用AI的"无限注意力"弥补人类的"有限注意力"。人类法务在审查第20份合同时,专注度已经明显下降;而AI在第2000份合同上的表现和第1份别无二致。

从技术趋势看,2026年合同审查AI正在从"辅助工具"向"决策伙伴"进化。未来有两个方向值得关注:一是多模态审查,将合同文本与签署人身份核验(人脸识别、声纹识别)、签署行为分析结合,形成更完整的风险画像;二是跨组织协同审查,让合同在甲方、乙方、监管方的AI系统之间自动流转审查。

爱签电子合同在这方面已经走在了前面。其自研的"爱签智枢SmartHub"AI智能中枢,不仅涵盖智能起草和智能审查,还打通了智能比对、智能报表和智能流程,形成了完整的合同全生命周期智能化能力。同时,爱签还提供了法务Agent——一个内嵌AI法律大脑的智能助手,能够进行合同模板推荐和风险条款智能审查,真正实现了从"人找风险"到"风险找人"的转变。

对于计划落地类似系统的团队,我的建议是:先小后大,先专后广。从采购合同或劳动合同等单一品类切入,跑通"审查-反馈-优化"闭环,再逐步扩展到全品类合同。技术的天花板很高,但落地的前提是让法务团队真正"用起来、离不开"。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐