Skip to content

ShangJingLi/ChatLaw

Repository files navigation

ChatLaw


📑 目录


项目介绍

ChatLaw 是一款跨平台的智能法律咨询系统,基于 Qwen3 大语言模型C/S(Client/Server)架构 设计。系统通过客户端与服务端协同工作,实现语音输入、法律知识检索与大模型推理等核心能力。

客户端,用户可通过麦克风进行语音提问。客户端负责完成语音识别、知识库检索、文本向量化等前置处理,并对服务端返回的推理结果进行解码和流式展示。

服务端,系统接收来自客户端的输入,调用大模型执行推理任务,并将生成结果实时回传,实现高效、低延迟的交互体验。

ChatLaw 通过模块化设计,构建了集 语音输入、知识检索、向量化处理、大模型推理、流式传输 为一体的完整流程,为用户提供便捷且准确的法律咨询服务。

🌐 模型推理技术路线

ChatLaw 提供两条可自由选择的推理技术路线:

  • MindSpore 技术路线:使用 MindSpore + MindNLP;
  • PyTorch 技术路线:使用 PyTorch + Transformers。

两条路线均可在 GPU昇腾 NPU 上运行,用户可根据使用习惯、依赖环境或部署需求灵活部署。


💻 客户端 / 服务端平台支持

组件类型 支持平台 / 系统 支持的推理框架 支持的硬件后端
客户端 Windows / Linux / macOS 无(不执行推理) 无(不执行推理)
服务端 Linux(必需) MindSpore / PyTorch GPU / 昇腾 NPU

客户端主要负责语音输入、检索与展示,不涉及 AI 加速; 服务端承担大模型推理,可自由选择推理框架与硬件后端组合。


软件架构

1.项目目录(随项目开发更新)

ChatLaw/
  ├── setup.py
  ├── scripts
  │   ├── static_ip_server.sh
  │   ├── static_ip_mac_client.sh
  │   ├── static_ip_linux_client.sh
  │   ├── pylint_check.sh
  │   ├── push_to_all_repositories
  │   ├── orangepi
  │   │   ├── README.md
  │   │   ├── 310p
  │   │   │   ├── preparation.sh
  │   │   │   ├── mindspore_installer.sh
  │   │   │   └── CANN_installer.sh
  │   │   └── 310b
  │   │       ├── preparation.sh
  │   │       ├── mindspore_installer.sh
  │   │       ├── CANN_installer.sh
  │   │       └── aclinit.json
  │   ├── dhcp_mac_client.sh
  │   ├── dhcp_linux_server.sh
  │   └── dhcp_linux_client.sh
  ├── requirements.txt
  ├── README.md
  ├── MANIFEST.in
  ├── LICENSE
  ├── launcher.py
  ├── launcher_gui.py
  ├── develop
  │   ├── RAG
  │   │   ├── verify_extraction.py
  │   │   ├── utils.py
  │   │   ├── try_rag.py
  │   │   ├── law_pdf_to_json.py
  │   │   ├── extract_sliding_window.py
  │   │   ├── extract_regex_llm_repair.py
  │   │   ├── extract_law_pure_regex.py
  │   │   ├── build_vectorstore.py
  │   │   └── batch_extract_all_laws.py
  │   └── finetune
  │       ├── train_qwen3_finetune.py
  │       └── split_dataset.py
  ├── chatlaw
  │   ├── server
  │   │   ├── server_pt.py
  │   │   ├── server_ms.py
  │   │   └── __init__.py
  │   ├── __init__.py
  │   ├── dataloader
  │   │   ├── __init__.py
  │   │   └── downloads.py
  │   ├── config.yaml
  │   ├── configuration.py
  │   ├── client
  │   │   ├── utils
  │   │   │   ├── utils_pt.py
  │   │   │   ├── utils_ms.py
  │   │   │   ├── __init__.py
  │   │   │   └── common_utils.py
  │   │   ├── __init__.py
  │   │   ├── client_pt.py
  │   │   └── client_ms.py
  │   └── clear_files.py
  └── bootstrap
      └── get-pip.py

2.项目结构图

项目工作流程图

3.主要开发工具

行项 / 技术方向 昇腾技术路线 Pytorch 技术路线
深度学习框架 MindSpore PyTorch
大模型套件 MindNLP Transformers
语音输入模块 Paraformer API Paraformer API
RAG 模块构建 LangChain LangChain
客户端 UI 构建 Gradio Gradio

安装教程

1. 安装Anaconda3

以下两种方法二选一:

Anaconda3官方下载地址:https://www.anaconda.com/download 根据用户操作系统进行安装

清华镜像源下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 根据用户操作系统选择合适的版本进行安装

安装完成后,创建Python版本为3.11的conda环境

conda create -n myenv python=3.11  # "myenv"可换成其他名称

2. 安装Git

对于Windows:

Git官方下载地址:https://git-scm.com/downloads 选择Windows版进行安装(速度极慢,不推荐)

清华镜像源下载地址:https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/ 选择合适的版本进行安装(速度较快,推荐)

对于linux

输入如下命令:

sudo apt update
sudo apt install git

对于Mac

输入如下命令

brew -v
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install git

3. 安装ChatLaw

输入如下命令:

git clone https://gitee.com/lishangjing2024/ChatLaw.git
cd ChatLaw
conda activate myenv  # "myenv"是希望安装本项目的环境
pip install .

以上命令也可简化为:

conda activate myenv  # "myenv"是希望安装本项目的环境
pip install git+https://gitee.com/lishangjing2024/ChatLaw.git

注意:本安装方式客户端与服务端通用,但服务端要求有GPU或Ascend(昇腾芯片)后端支持,否则无法正常使用


使用说明

1. 检验是否安装成功

命令行输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
chatlaw -h

若输出

usage: chatlaw [-h] {client,server,clear} ...

ChatLaw 命令行工具

可用指令包括:
  chatlaw client <ms|pt> [其他参数]    启动客户端模式
  chatlaw server <ms|pt> [其他参数]    启动服务端模式
  chatlaw clear                 清理 resources 文件夹

说明:
  - ms  表示使用MindNLP版本
  - pt  表示使用Transformers版本
  - clear 会在删除前执行交互式确认

positional arguments:
  {client,server,clear}

options:
  -h, --help            show this help message and exit

则安装成功

2.使用前准备

说明:本项目的客户与服务器为一对一关系,组网基于私有地址;以下说明基于私有地址的组网方法,方法不唯一,仅作参考

2.1 客户端准备

注意:本操作会导致以太网无法访问公网,仅能通过WLAN联网,恢复方法已写在在配置方法下方。

Windows客户端配置静态IP地址
  1. 打开设置
  2. 选择网络和Internet
  3. 选择高级网络设置
  4. 选择以太网
  5. 选择Internet协议版本4(TCP/IPv4)
  6. 选择使用下面的地址,IP地址设为192.168.137.101,子网掩码设置255.255.255.0

恢复方法:把"使用下面的地址"改回"自动获得IP地址"即可

Linux客户端配置静态IP地址

运行ChatLaw/scripts目录下的static_ip_linux_client.sh脚本即可

恢复方法:运行ChatLaw/scripts目录下的dhcp_linux_client.sh脚本即可

Mac客户端配置静态IP地址

运行ChatLaw/scripts目录下的static_ip_mac_client.sh脚本即可

恢复方法:运行ChatLaw/scripts目录下的dhcp_mac_client.sh脚本即可,gateway报错不用理会,DHCP协议会自动配置网关

2.2 服务端准备

运行ChatLaw/scripts目录下的static_ip_linux_server.sh脚本为服务器配置静态IP。

注意:配置后服务器将无法通过以太网口访问外网。恢复方法为运行ChatLaw/scripts目录下的dhcp_linux_server.sh脚本即可

3.启动方法

3.1 客户端启动方法

命令行输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
chatlaw client ms  # 启动MindSpore + MindNLP实现模型推理的客户端

或输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
chatlaw client pt  # 启动Pytorch + Transformers实现模型推理的客户端

等待片刻后,若浏览器显示如下界面:

UI样式

则客户端启动成功

注意:本模块初次启动需要下载知识库和语音模型文件,故初次启动较慢

3.2 服务端启动方法

命令行输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
chatlaw server ms  # 服务端使用MindSpore + MindNLP实现模型推理

或输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
chatlaw server pt  # 服务端使用Pytorch + Transformers实现模型推理

若命令行输出


则服务端启动成功

注意:本模块初次启动需要下载知识库和语音模型文件,故初次启动较慢

4.使用演示

UI中可选择输入文本和语音(不可同时输入),按下🚀发送到服务器,若状态栏无异常,输出区域有文本流式输入,则运行成功。此处演示(已加速)以文本输入为例:

使用演示

5.数据清除

命令行输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
chawlaw clear_files  # 清除所有模型文件数据

卸载方法

命令行输入

conda activate myenv  # 激活安装本项目的conda环境,若已激活则忽略本命令
pip uninstall chatlaw  # 卸载ChatLaw

注意:上述命令不会将已下载的模型等文件一并删除,因此在卸载前请执行清除数据命令

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

其他说明

联系人:李尚憬

联系邮箱: 1755397894@qq.com

启智社区个人主页:https://openi.pcl.ac.cn/enter (本项目所用数据集和模型均托管于此)

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages