企业合同风控:用大模型做条款比对

企业合同风控:用大模型做条款比对
企业合同风控用大模型做条款比对做销售或采购的都知道合同审查是个麻烦活。以前全靠法务一个个字去抠跟找茬似的。人总有累的时候看漏了“无限赔偿”或者“霸王免责”这种坑后面就是大麻烦。现在大模型LLM出来了我们试着用它来干这个活。核心思路不是让 AI 替人做决定而是让它当个“高倍放大镜”先把合同里的不对劲地方标出来人再最后把关。传统法务审查的几个难处以前处理合同主要卡在这几个地方文字游戏躲不过合作方把“无限期延迟付款”藏在长句子里或者用双重否定正则表达式根本抓不住人眼也容易看走眼。标准不统一不同法务对风险的敏感度不一样。A 觉得没事的条款B 可能就觉得风险很大很难有个统一尺度。高峰期堵死季度末或者大促前合同堆成山法务审不过来业务那边催着签单只能干着急。怎么把大模型塞进风控流程我们搞了个简单的比对逻辑让 AI 帮忙算个“偏离度”合同进来先把文本切分、清洗。AI 比对拿着公司标准模板让大模型一条条跟对方合同对。分级处理偏离度低20%系统直接过进签章流程。偏离度中20%-60%AI 标出差异点转给人工法务复核。偏离度高60%或有毒条款直接打回让业务员重新谈。这套系统不指望 AI 当法官它就是个初筛工具把明显有问题的挑出来人只审那些 AI 拿不准的效率能提不少。代码实现思路下面这个 Python 类是个简易版“比对网关”。它模拟了调大模型 API 的过程拿到结果后根据风险分决定合同往哪流。import json import urllib.request import urllib.error from typing import Dict, Any class AIContractReviewGateway: def __init__(self, api_key: str, api_url: str https://api.openai.com/v1/chat/completions): self.api_key api_key self.api_url api_url def build_payload(self, contract_clause: str, standard_template: str) - Dict[str, Any]: 构造请求要求模型只返回 JSON system_prompt ( 你是企业合同风控助手。对比【待审条款】与【标准模板】计算语义偏离度0-100。 分值越高对公司越不利。 只返回 JSON{deviation_score: int, deviated_points: list, recommend_action: Pass/Manual_Review/Reject} ) user_prompt ( f【标准模板】\n{standard_template}\n\n f【待审条款】\n{contract_clause} ) return { model: gpt-3.5-turbo, messages: [ {role: system, content: system_prompt}, {role: user, content: user_prompt} ], response_format: {type: json_object}, temperature: 0.0 } def review_clause(self, contract_clause: str, standard_template: str) - Dict[str, Any]: 执行比对 payload self.build_payload(contract_clause, standard_template) data json.dumps(payload).encode(utf-8) headers { Content-Type: application/json, Authorization: fBearer {self.api_key} } req urllib.request.Request(self.api_url, datadata, headersheaders, methodPOST) try: with urllib.request.urlopen(req, timeout12) as response: res_body response.read().decode(utf-8) res_json json.loads(res_body) ai_content res_json[choices][0][message][content] return json.loads(ai_content) except Exception as e: # 出错默认走人工保安全 print(fAI 调用异常: {e}) return {deviation_score: 100, deviated_points: [系统异常], recommend_action: Manual_Review} # 测试逻辑 if __name__ __main__: gateway AIContractReviewGateway(api_keyyour-api-key) standard 不可抗力导致违约双方互不担责各自承担直接损失。 mock_clause 若因不可抗力违约乙方仍需向甲方支付总额 10% 的违约金。 # 模拟 AI 返回结果 mock_review_output { deviation_score: 85, deviated_points: [标准模板免除不可抗力责任待审条款要求乙方支付 10% 违约金], recommend_action: Reject } print(f标准条款: {standard}) print(f待审条款: {mock_clause}) if mock_review_output[recommend_action] Reject or mock_review_output[deviation_score] 80: print([风控] 偏离度太高驳回给业务员重谈。) elif mock_review_output[recommend_action] Manual_Review: print([风控] 中度风险转法务人工复核。) else: print([风控] 风险低自动通过。)必须留的“确定性防线”合同涉及钱和法律不能完全信 AI。我们留了三道硬防线违禁词硬拦截不管 AI 怎么说代码里先扫一遍。一旦看到“无限赔偿”、“无限延期”这种词直接红灯不经过 AI 模型直接打回。两阶段校验AI 负责提取条款里的数字比如赔偿比例然后本地规则引擎再算一遍。比如 AI 说“赔偿 10%”规则引擎直接算 10% 是不是超过了公司规定的 5% 红线。数值比对必须精确不能靠模型猜。人最后签字AI 只是个过滤器。所有合同在盖公章之前必须有法务人员点一下“确认”。这是为了规避 AI 幻觉带来的法律风险责任得在人身上。小结把大模型用在合同风控里核心价值就是粗筛和高亮。别指望它完全取代法务而是用它把明显的坑先挖出来再用本地规则把数值卡死。这样既能把法务从重复劳动里解放出来又能保证合同安全不出大漏子。