我们调整一下场景:用户A(当事人)和律师A的对话录音 → 提取关键信息 → 检索相似裁判文书 → 计算胜诉概率 → 展示结果和案例。
实现步骤需要调整如下:
下面我们详细说明每一步的实现方法:
请从以下律师与当事人的对话中提取案件信息: <对话内容> 提取要求: 1. 案件类型(如:劳动纠纷、离婚、合同违约等) 2. 核心争议点(不超过3个) 3. 关键证据(如:合同、转账记录、证人证言等) 4. 当事人诉求 5. 对方当事人情况(如有) 按JSON格式输出: { "case_type": "...", "dispute_points": ["...", "..."], "evidences": ["...", "..."], "demand": "...", "opponent_info": "..." }
胜诉概率 = (胜诉案例数 / 总案例数) * 100%
根据以下分析结果生成报告: - 胜诉概率:{{probability}}% - 最相似案例(案号:{{case_id}}): 案由:{{case_type}} 判决结果:{{result}} 相似点:{{similarity_reason}} 报告要求: 1. 用通俗语言解释胜诉概率 2. 简要说明参考案例的判决理由 3. 给出法律建议(如证据补充建议)
probability
、case_id
等)。功能 | 推荐工具/API |
---|---|
语音识别 | OpenAI Whisper, 阿里云智能语音交互 |
Embedding模型 | text-embedding-ada-002, BGE-M3 |
向量数据库 | Milvus, Pinecone, Elasticsearch(带向量插件) |
裁判文书数据库 | 自建(需预先处理:清洗、向量化、存储判决结果标签) |
后端服务(可选) | FastAPI(用于封装检索和计算逻辑,供Dify的HTTP节点调用) |
通过以上步骤,您可以在Dify中构建端到端的解决方案。如果已有裁判文书数据库,开发重点将放在Dify工作流编排和Prompt优化上;若尚未建立数据库,需先完成数据爬取、清洗和向量化(此部分工作可能在Dify外部进行)。
您的需求更清晰了:基于律师与当事人的对话录音提取关键信息 → 在裁判文书库中匹配相似案例 → 计算胜诉概率 → 输出结果和案例说明。以下是完整的实现方案:
数据库结构示例:
字段 | 类型 | 说明 |
---|---|---|
case_id | PK | 案号 |
case_vector | vector(768) | 文本向量 |
judgment_result | int | 1=原告胜/0=被告胜 |
key_factors | json | 争议点/证据等 |
向量化处理:
## 案件胜诉分析报告 **基本案情** 案件类型:劳动合同纠纷 核心争议:未签合同双倍工资+加班费主张 关键证据:工资流水、考勤记录、工作沟通记录 **胜诉概率评估** 🟢 综合胜诉概率:78.3% 📊 评估依据:匹配到32个相似案例,其中25例支持劳动者诉求 **参考案例示范** 🔹 **(2023)京0105民初12345号** - 相似度:92% - 争议焦点:未签劳动合同+加班费计算 - 判决结果:支持双倍工资差额86,500元 - 关键胜诉点:完整的微信工作记录证明劳动关系 🔹 **风险提示** ❗ 证据薄弱环节:缺少直接证明加班时长的证据 💡 建议补充:同事证人证言/加班审批记录
组件 | 推荐方案 | 成本估算 |
---|---|---|
语音转写 | 阿里云智能语音交互(按小时计费) | ¥0.3/分钟 |
向量数据库 | Milvus社区版(Docker部署) | 免费 |
Embedding模型 | BGE-M3(开源) | 免费 |
裁判文书库 | 爬取公开文书(需合规处理) | 初期1000元/万篇 |
服务器 | 4核8G GPU服务器(阿里云) | ¥800/月 |
"本分析基于历史案例匹配,仅供参考。实际诉讼结果受法官裁量、新证据出现等影响,不作为法律意见"
按照此方案,可在7天内完成MVP版本部署。建议先以劳动纠纷为试点,待准确率>85%后再扩展其他案由。
我们优先实现核心功能:通过案情描述文本在裁判文书库中匹配相似案例,计算胜诉概率,并展示结果和案例说明。
由于暂时不需要语音转文本,我们可以直接输入案情描述文本进行测试。
在Dify中实现这个功能,我们可以分为以下几个步骤:
具体实现:
工作流设计如下:
具体节点配置:
用户输入节点:
知识库检索节点:
计算胜诉概率节点(使用代码工具或LLM):
生成报告节点(使用提示词模板):
你是一名法律助手,根据用户提供的案情描述和检索到的相似案例,生成一份胜诉分析报告。 用户案情描述: {{用户输入}} 胜诉概率:{{胜诉概率}}% 参考案例: {% for case in cases %} - 案号:{{case.case_id}} 案由:{{case.case_type}} 相似度:{{case.similarity_score}} 判决结果:{{case.judgment_result}} 案情摘要:{{case.summary}} {% endfor %} 请总结分析,并重点解释胜诉概率的构成,以及最相似的案例的情况。
测试时,直接输入一段案情描述,观察工作流输出。
示例输入:
预期输出:
通过Dify的可视化工作流,我们可以快速搭建这个功能,并进行迭代优化。
完全理解您的需求!我们将聚焦于直接在Dify中实现案件相似度匹配的核心功能,暂不处理语音转文本环节。以下是分阶段实现的详细方案,优先使用Dify原生功能完成测试版:
目标:通过Dify实现案情文本→相似案例检索→胜率计算
所需组件:
实现步骤:
创建裁判文书知识库
中国裁判文书库
)bge-large-zh
中文Embedding模型配置相似度检索工作流
胜率计算提示词设计
【角色】你是最高法院数据分析师 【任务】 1. 分析检索到的{{top_cases}}个相似案例 2. 计算胜诉概率公式: 胜率 = (原告胜诉案例数/总案例数)*100% 证据修正值 = {{evidence_score}}(根据证据强度) 最终胜率 = min(95, max(5, 胜率 + 证据修正值)) 3. 生成包含如下内容的报告: - 胜率百分比 - 最相似案例的案号/案由 - 关键相似点对比 - 法律建议 【输入数据】 {{knowledge_search_results}}
证据强度评估函数
功能 | 实现方式 | Dify支持度 |
---|---|---|
多人对话处理 | 添加LLM信息提取节点 | ✅ 通过提示词工程 |
地域因素修正 | 添加法院地域权重表 | ✅ 代码节点 |
金额预测 | 建立回归模型API对接 | ⚠️ 需外部集成 |
可视化报告 | 输出HTML表格 | ✅ Markdown渲染 |
创建知识库
按段落
,开启向量化创建工作流
测试案例输入
预期输出
## 案件胜诉分析报告 🔍 **匹配结果** - 相似案例数:4件(劳动纠纷类) - 最高相似度:92% [(2023)京0105民初12345] 📈 **胜率评估** 综合胜诉概率:85% ✅ 有利因素:存在书面工资记录 ⚠️ 风险提示:缺少直接雇佣关系证明 🧾 **参考案例摘要** | 案号 | 案由 | 关键证据 | 判决结果 | |---|---|---|---| |(2023)京0105民初12345| 劳动合同纠纷 | 银行流水+微信记录 | 原告获赔86,500元 |
知识库优化
HyDE优化
(Hypothetical Document Embeddings)相似度漂移处理
性能调优
检索缓存
减少重复计算异步调用
处理批量请求当前方案完全在Dify平台实现,无需外部编码。测试阶段建议使用50-100份裁判文书样本,后续再扩展完整数据库。
我们拿到了一份裁判文书数据的样例(2011年01月),从数据结构看包含14个字段。为了后续在Dify中有效使用这些数据进行相似案例匹配,我们需要先进行数据清洗。以下是关键清洗步骤:
原始字段 | 处理方式 | 理由 |
---|---|---|
原始链接 | 保留 | 用于溯源 |
案号 | 保留 | 唯一标识 |
案件名称 | 保留 | 包含关键信息 |
法院 | 清洗(统一为省+法院名) | 地域因素影响判决 |
所属地区 | 清洗(统一为"省/市"格式) | 支持地域权重计算 |
案件类型 | 标准化(如:民事→民间借贷) | 避免同案不同名 |
审理程序 | 标准化(一审/二审/再审) | 程序影响参考价值 |
裁判日期 | 转换为时间戳 | 支持时效性计算 |
当事人 | 拆分为:原告、被告、第三人 | 明确诉讼主体 |
案由 | 标准化(最高法案由规定) | 核心检索维度 |
法律依据 | 提取法条编号(如"民诉法第131条") | 便于法律分析 |
全文 | 关键内容提取(见步骤3) | 去除无关内容 |
从"全文"中提取:
参考《民事案件案由规定》:
字段 | 类型 | 示例 |
---|---|---|
case_id | string | (2011)未民二初字第232号 |
case_type | string | 运输合同纠纷 |
court | string | 陕西省西安市未央区法院 |
province | string | 陕西省 |
procedure | string | 一审 |
judgment_date | timestamp | 2011-01-14 |
plaintiff | list | ["罗晓"] |
defendant | list | ["陕西省西安中通快递公司"] |
key_facts | string | "原告以运输货物损坏为由起诉...提交了货损照片" |
claims | string | "索赔货物损失5000元" |
judgment | json | {"winner":"原告","amount":5000} |
laws | list | ["民诉法第131条"] |
source_url | string | https://wenshu.court.gov.cn/... |
数据缺失:
长文本优化:
地域清洗规则:
key_facts
+claims
作为向量化字段case_type
, province
, judgment.winner
完成清洗后,该数据集即可用于构建Dify法律助手。建议先清洗1000份文书测试检索效果,重点检查相似案例匹配准确率。
基于您提供的裁判文书网数据样本,我将为您设计一套针对性的数据清洗方案,确保这些数据能在Dify中有效用于案件相似度匹配。以下是分步骤的清洗建议:
字段 | 类型 | 示例值 | 说明 |
---|---|---|---|
基础信息 | |||
案号 | string | (2011)未民二初字第232号 | 唯一标识 |
案由 | string | 运输合同纠纷 | 标准化分类 |
法院 | string | 未央区 | 清洗后名称 |
省份 | string | 陕西 | 从所属地区提取 |
审理程序 | string | 一审 | |
裁判日期 | date | 2011-01-14 | |
法律要素 | |||
诉讼主体 | list | ["罗晓","陕西省西安中通快递公司"] | |
争议焦点 | list | ["未签合同双倍工资"] | |
证据清单 | list | ["工资流水","微信记录"] | |
法律依据 | list | ["民事诉讼法第131条"] | |
诉讼请求 | string | 主张双倍工资差额 | |
判决结果 | string | 准许撤诉 | 摘要 |
分析维度 | |||
胜诉方 | string | 原告 | |
证据数量 | int | 2 | |
诉讼标的额 | float | 86500.0 | 单位元 |
审理时长 | int | 60 | 单位天 |
原始信息 | |||
全文 | string | 清洗后文本 | 保留完整内容 |
原始链接 | string | https://... | 数据溯源 |
知识库构建:
关键字段配置:
争议焦点
+ 证据清单
+ 诉讼请求
案由
、省份
、审理程序
胜诉方
、证据数量
、诉讼标的额
相似度计算优化:
清洗后数据示例:
json
建议先对100份文书进行清洗测试,验证关键信息提取准确率(特别是争议焦点和判决结果),再扩展到全量数据。清洗后数据可直接导入Dify知识库用于相似案例检索。