mike

来源:GitHub · ⭐ 1684 stars

Mike:开源 AI 法律平台的技术解构与实战指南

项目简介

在法律科技(LegalTech)领域,AI 技术的应用正从概念验证走向生产落地,但一个结构性矛盾始终存在:法律服务的专业壁垒与开源社区的技术开放之间难以调和。Mike 项目正是在这一背景下诞生的创新型解决方案——一个以 TypeScript 为核心构建的开源 AI 法律平台,目前在 GitHub 已获得 1684 个 Star,显示出开发者社区对其技术路径的高度认可。

Mike 的命名源自法律英语中的通用占位符"Michael",象征着平台作为"通用法律基础设施"的定位。与市面上多数闭源的法律 SaaS 产品不同,Mike 选择全栈开源策略,将合同审查、法规检索、合规检查等核心能力模块化封装,使中小企业和独立开发者能够以极低成本接入企业级法律 AI 能力。其核心价值在于将法律知识的结构化表达与大语言模型的推理能力深度耦合,而非简单地将通用 LLM 包装成"法律助手"。

核心特性

  • 法律知识图谱驱动:内置可扩展的法律实体关系网络,支持民法典、合同法等核心法规的结构化解析,AI 推理过程可追溯至具体法条依据
  • 多模型编排架构:抽象 LLM 调用层,支持 OpenAI、Claude、本地模型(如 Llama 系列)的混合调度,根据任务复杂度自动选择成本最优的推理路径
  • 合同智能审查流水线:提供从文档解析(PDF/Word)、条款提取、风险识别到修订建议的完整工作流,支持自定义审查规则模板
  • 合规性沙箱环境:隔离的测试空间用于验证 AI 生成法律文本的边界情况,内置对抗性测试用例库防止"幻觉"导致的法律风险
  • TypeScript 全类型安全:从数据层到 API 层的端到端类型推导,确保法律逻辑在编译期即完成一致性校验

技术实现

Mike 的技术架构体现了对法律领域特殊性的深度理解。其采用分层领域驱动设计(DDD),将系统划分为知识层、推理层和应用层三个核心维度。

在知识层,项目使用自定义的 DSL(领域特定语言)描述法律规范的结构化语义。以合同条款为例,Mike 并非简单存储文本,而是将其解析为带有逻辑约束的 AST(抽象语法树)节点:

interface ContractClause {
  clauseId: string;
  clauseType: 'obligation' | 'liability' | 'termination';
  parties: PartyReference[];
  conditions: LogicalExpression;  // 可计算的条件表达式
  legalBasis: Citation[];         // 关联的法规引用
  riskProfile: RiskAssessment;    // 预计算的风险向量
}

这种设计使得法律推理从"文本相似度匹配"升级为"逻辑可满足性求解"。当用户上传一份租赁合同时,系统会构建 SMT(可满足性模理论)约束模型,自动检测条款间的逻辑冲突——例如"免租期"与"提前终止违约金"的计算基数是否一致。

推理层采用Retrieval-Augmented Generation(RAG)的增强变体。与传统 RAG 仅做向量检索不同,Mike 实现了"双轨检索":语义向量负责召回候选法条,而符号推理引擎(基于 Z3 solver)负责验证法条与当前案情的逻辑适配性。这种神经-符号混合架构显著降低了 LLM 在法律推理中的幻觉率。

TypeScript 的全栈应用也是值得关注的工程决策。服务端使用 NestJS 构建领域服务,配合 Prisma ORM 实现类型安全的数据持久化;客户端采用 Next.js 14 的 Server Actions 处理同步的法律文档渲染与 AI 流式响应。整个代码库通过 Zod 运行时校验与 TypeScript 静态类型的双重保障,确保法律数据的完整性约束在传输、存储、处理全链路不被破坏。

快速上手

Mike 提供 Docker Compose 一键启动完整环境:

git clone https://github.com/willchen96/mike.git
cd mike
cp .env.example .env
# 配置 LLM API 密钥后
docker-compose up -d

核心 SDK 的使用简洁直观。以下示例展示如何创建自定义的合同审查管道:

import { MikeClient, ContractReviewPipeline } from '@mikeai/sdk';

const client = new MikeClient({ apiKey: process.env.MIKE_API_KEY });

const pipeline = new ContractReviewPipeline()
  .loadDocument('./nda-template.pdf')
  .applyRuleSet('confidentiality-agreement')  // 加载保密协议规则集
  .setModelPreference('claude-3-opus')        // 复杂推理任务指定高性能模型
  .enableCitationTracking();                  // 开启法条引用溯源

const result = await pipeline.execute();

// 结构化输出审查结果
for (const finding of result.findings) {
  console.log(`[${finding.severity}] ${finding.description}`);
  console.log(`  关联法条: ${finding.legalBasis.map(c => c.article).join(', ')}`);
  console.log(`  建议修订: ${finding.suggestedRevision}`);
}

对于需要深度定制的场景,可直接扩展知识图谱:

import { LegalKnowledgeBase, EntityType } from '@mikeai/core';

const kb = new LegalKnowledgeBase();

// 注入地方性法规作为领域扩展
await kb.ingestRegulation({
  jurisdiction: 'CN-SH',  // 上海市地方法规
  sourceUrl: 'https://...',
  entityExtractor: (paragraph) => {
    // 自定义实体抽取逻辑
    return paragraph.match(/第[一二三四五六七八九十]+条\s+(.+)/g) || [];
  }
});

应用场景

中小企业法务自动化:一家 50 人规模的 SaaS 公司每月需处理 20-30 份供应商合同。使用 Mike 部署私有化审查规则后,法务负责人将 NDAs 和云服务协议的初审时间从每份 2 小时压缩至 15 分钟,且标准条款的遗漏率从 12% 降至接近零。

法律科技创业公司的基础设施:某诉讼预测产品团队无需从零构建法规检索系统,直接基于 Mike 的知识图谱层进行二次开发,将 MVP 开发周期从 6 个月缩短至 8 周,同时继承了项目持续更新的法规库维护能力。

合规审计的可解释 AI:金融机构在反洗钱(AML)规则更新时,利用 Mike 的符号推理层生成规则变更的影响面报告,向监管机构证明 AI 决策的每一步均有明确的法规依据,满足《算法推荐管理规定》的可解释性要求。

总结

Mike 项目的真正价值不在于提供"又一个法律 ChatGPT 封装",而是构建了一套可验证、可扩展、可审计的法律 AI 工程框架。其 TypeScript 全栈选型降低了前端开发者的接入门槛,而神经-符号混合架构则为法律科技领域提供了经得起专业审视的技术方案。对于正在探索垂直领域 AI 应用的开发者、寻求降本增效的法务团队,以及关注 AI 合规产品创业的技术人员,Mike 都是一个值得深入研究的标杆项目——它证明了开源社区完全有能力在高度专业化的领域,构建出超越商业闭源产品的技术深度。