Dify实战:Dify+Xinference 打造法律智能助手
分享一个Dify的实操案例,用 Dify+Xinference 打造法律智能助手,在法律领域,传统法律大模型要么功能单一、要么易产生 “幻觉”,而通用大模型又缺乏专业深度。今天分享一个零代码 / 低代码方案 —— 用 Dify+Xinference 快速搭建法律智能助手,既解决专业精准性问题,又能实现全流程法律服务,适合开发者、法律从业者快速落地。
一、为什么选择 Dify+Xinference 组合?
传统法律工具如 LawGPT 仅聚焦问答与法规检索,无法提供全流程解决方案;通用大模型如 DeepSeek 虽推理强,但法律专业度不足,易编造法条。而 Dify+Xinference 的组合恰好弥补这些短板:Dify 作为开源的 LLMOps 平台,支持零代码流程编排、知识库管理和前端部署,无需复杂编码就能搭建应用;Xinference 则专注大模型推理部署,能高效对接 Qwen、ChatGLM 等模型,还支持多模态推理,两者协同让法律 AI 助手的开发和部署更丝滑。此外,这套组合支持私有化部署,满足法律数据的合规安全需求,同时兼容 RAG 技术,能有效解决大模型 “幻觉” 问题。
二、法律智能助手能做什么?
基于这套组合搭建的法律智能助手,可覆盖全场景法律服务:一是智能问答,用户用自然语言提问(如 “婚外情离婚能多分财产吗”),助手结合法规和案例生成带引用来源的答案;二是案例分析,输入案件事实就能匹配相似案例,生成对比分析报告;三是多模态处理,支持 PDF、Word、图片等格式的法律文书解析,提取关键要素;四是罪名预测与法条推荐,针对刑事案件,能根据案情描述预测罪名、推荐相关法条,辅助法律决策。
三、部署准备
部署前需做好三项准备:环境上,准备 Python 3.9 以上版本,建议用 conda 创建独立环境,避免依赖冲突;工具安装,通过 pip 安装 Dify 和 Xinference,Xinference 需额外安装 transformers、vllm 等推理后端,Dify 可通过 Docker Compose 快速部署;数据准备,收集法律法规、案例文档(如 CAIL2018 数据集),整理为结构化格式,同时准备 Embedding 模型(如 bge-large-zh-v1.5)和 Rerank 模型(如 bge-reranker-large),提升检索精度。
四、实操
-
准备工作:部署好dify和xinference,在xinference下载工作流中需要的模型,并且准备好知识库对应的文件,这里是8个领域的法律法规。
-
注册管理员账户后,在模型供应商中添加 Xinference,填写服务器 URL 和模型信息,完成模型对接;
-
构建知识库:在 Dify 中上传法律文档,系统自动解析并生成向量,存储到内置向量数据库;
-
编排工作流:用 Dify 的 Chatflow 可视化编排功能,设计 “用户提问→检索知识库→模型推理→生成答案” 的流程;5. 测试发布:输入测试问题(如劳动仲裁相关咨询),验证回答准确性后,即可发布为 Web 应用或通过 API 对接多端。
部署 Xinference
1.布置环境

|
|
通过启用dockerd的live-restore功能,安全地重启服务以更新配置:
优雅的重启docker而不影响容器的运行_docker 重启会不会影响正在运行的容器-CSDN博客
docker教程:
Docker常用命令大全(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客
启动:
|
|
关闭:
Docker stop
更新拉取最新版本:
docker pull xprobe/xinference:latest

安装


xinference成功安装,用户界面为http://localhost:9997/
版本:latest
部署地址:/disk2-7681G/users/tangangjue/chatlaw
docker:容器id:95fe87e9f418
启动命令:xinference-local –host 127.0.0.1 –p 9997
建议打开web命令:
XINFERENCE_HOME=/disk2-7681G/users/tangangjue/chatlaw/xinference xinference-local –host 0.0.0.0 –port 9997
input:
|
|
output:
|
|
xinference提供了两种部署模型的方式:Web端启动,命令端启动。接下来使用Web端启动:

ChatGLM3服务启动后,可以在Dify中进行模型供应商注册。需要说明的是服务器URL中的IP地址,可通过ifconfig命令,在Ubuntu中查看。因为无论配置127.0.0.1,还是0.0.0.0均不通。

(4)命令端启动
下面是分别启动chat / embedding / rerank 三种模型的cmd命令。启动完了,会返回对应模型的UID:
|
|
测试模型是否已经部署到本地,以rerank模型为例可以执行下面这个脚本:
|
|
- 启动服务并加载法律相关模型,可通过 Web 端或命令行启动,支持 Qwen、ChatGLM 等模型,还能挂载本地模型目录避免重复下载;
配置 Dify
dify的部署在前面的博客中有所提到,不再赘述。

xinference注册模型

添加多模态变量:

使用xinference挂起qwen2.5-instruct
让我们来运行一个内置的 qwen2.5-instruct 模型。当你需要运行一个模型时,第一次运行是要从HuggingFace 下载模型参数,一般来说需要根据模型大小下载10到30分钟不等。当下载完成后,Xinference本地会有缓存的处理,以后再运行相同的模型不需要重新下载。
备注:
Xinference 也允许从其他模型托管平台下载模型。可以通过在拉起 Xinference 时指定环境变量,比如,如果想要从 ModelScope 中下载模型,可以使用如下命令:
|
|
可以使用 --model-uid 或者 -u 参数指定模型的 UID,如果没有指定,Xinference 会随机生成一个 ID。默认的 ID 和模型名保持一致。``:
|
|
除了启动模型,Xinference 提供了管理模型整个生命周期的能力。同样的,你可以使用命令行、cURL 以及 Python 代码来管理:
|
|
xinference外挂目录
默认情况下,镜像中不包含任何模型文件,使用过程中会在容器内下载模型。如果需要使用已经下载好的模型,需要将宿主机的目录挂载到容器内。这种情况下,需要在运行容器时指定本地卷,并且为 Xinference 配置环境变量。
|
|
上述命令的原理是将主机上指定的目录挂载到容器中,并设置 XINFERENCE_HOME 环境变量指向容器内的该目录。这样,所有下载的模型文件将存储在您在主机上指定的目录中。您无需担心在 Docker 容器停止时丢失这些文件,下次运行容器时,您可以直接使用现有的模型,无需重复下载。
如果你在宿主机使用的默认路径下载的模型,由于 xinference cache 目录是用的软链的方式存储模型,需要将原文件所在的目录也挂载到容器内。例如你使用 huggingface 和 modelscope 作为模型仓库,那么需要将这两个对应的目录挂载到容器内,一般对应的 cache 目录分别在 <home_path>/.cache/huggingface 和 <home_path>/.cache/modelscope:
根据服务器实际启动的命令为:
|
|
将宿主机上的 /disk2-7681G/users/tangangjue/model_test 目录挂载到容器内的 /root/model_test 目录。
比如qwen3-14b

设置jinjia聊天模板

使用vllm引擎启动:

音频模型本地部署:


从modelscope下载
已经启动:

创建cahtflow,多轮记忆对话

五、核心功能
Dify 的核心功能为法律助手提供强大支撑:一是可视化流程编排,拖拽组件就能搭建复杂 Workflow,适配从咨询到文书生成的全流程;二是知识库管理,支持多格式文档上传、增量更新和智能检索,还能通过 RAG 技术关联相关法规和案例;三是多模型兼容,可灵活切换不同大模型,根据场景选择最优模型;四是多模态支持,集成 OCR、音频模型,能解析图片、音频中的法律信息;五是权限管理与日志审计,满足团队协作和合规需求,方便跟踪使用情况。
微信