# PLawBench ## 概述 PLawBench 是一个基于评分标准(rubric)的基准测试,用于评估大语言模型在真实中文法律实务场景中的表现。 该基准模拟执业律师的工作流程,涵盖三个层级的任务:在公共法律咨询中梳理事实、通过结构化法律推理分析案件,以及起草专业法律文书。 每个样本均附有法律专家标注的评分标准,评分由 LLM 评判模型依据该标准进行,而非与单一参考答案比对。 ## 任务描述 - **任务类型**:基于专家评分标准的开放式中文法律生成任务 - **输入**:客户陈述,或案件描述加法律问题 - **输出**:问题清单、结构化案件分析,或完整的法律文书 - **领域**:中文法律实务(个人事务、婚姻家庭、公司治理、知识产权、刑事与民事诉讼、跨境事务、劳动法、环境安全等) ## 核心特性 - 共 280 个样本,划分为四个子集,对应 PLawBench 的四项任务: - `case_analysis`(250 个):案件分析,从四个维度评分——结论、案件事实、推理过程、引用法条。回答必须严格遵循【结论】/【案件事实】/【推理过程】/【法条依据】的结构。 - `legal_consultation`(18 个):模型扮演律师,需提出 10–25 个可验证的后续问题,以揭示客户遗漏或歪曲的事实。 - `plaintiff_statement`(6 个):根据客户陈述起草起诉状。 - `defendant_statement`(6 个):根据客户陈述及对方起诉状起草答辩状。 - 客户陈述故意设计得模糊、情绪化或具有误导性,因此模型必须识别陷阱,而非简单复述客户主张。 - 任务提示词和评判提示词均直接采用官方发布版本,`case_analysis` 子集的评分标准保留了各维度的原始分值分配。 ## 评估说明 - **必须使用 LLM 评判模型**:需设置 `judge.strategy='llm'`(或 `'auto'`,该选项会为此基准自动启用评判模型),并提供 `judge.models`。不支持 `judge.strategy='rule'`。 - **指标为 [0, 1] 区间内的得分比例**。所有子集均报告 `acc`;`case_analysis` 额外报告 `conclusion_acc`、`fact_acc`、`reasoning_acc` 和 `law_acc`。这些指标与官方排行榜列一一对应:`legal_consultation` 对应 Task1,`case_analysis` 对应 Task2-Avg 及其四个维度,两个文书起草子集分别对应 Task3-Plaintiff 和 Task3-Defendant。 - **应比较各子集得分,而非 `OVERALL` 行**。`OVERALL` 是按样本数量计算的平均值,因此被 `case_analysis` 主导(250/280)。论文中的 `Overall` 列是三项任务得分的等权重平均值,与官方公布表格更吻合(在官方排名的 24 个模型上拟合,平均绝对误差为 0.72,而样本加权平均的误差为 2.87)。 - **评分标准的总分来自数据集本身,而非评判模型输出**,且实际得分会被限制在 `[0, max_points]` 范围内,因此即使评判模型错误报告分母,也不会扭曲最终分数。 - `case_analysis` 的评判输出模板已修复。官方脚本存在格式错误的 JSON,并将结论部分固定为零分;本实现中每个部分均按其评分标准独立打分。 - 评判模型的重试策略通过其 `generation_config` 配置。若回复仍不符合输出格式要求,则视为无效并排除,而非静默记为零分。 - 案件分析评判会返回详细的逐项分解结果。建议为评判模型设置较大的 `max_tokens`(例如 8192),配置于 `judge.models[].generation_config`。 - 文书起草子集要求生成 2,500–3,000 字符的法律文书,因此被评估模型也需要较大的 `generation_config.max_tokens`。若生成内容被截断,将被视为不完整文书,得分接近零,从而因非法律能力原因拉低 Task3 得分。 资源:[GitHub](https://github.com/skylenage/PLawbench) | [数据集](https://modelscope.cn/datasets/evalscope/PLawBench) ## 属性 | 属性 | 值 | |----------|-------| | **基准测试名称** | `plawbench` | | **数据集ID** | [evalscope/PLawBench](https://modelscope.cn/datasets/evalscope/PLawBench/summary) | | **论文** | [Paper](https://github.com/skylenage/PLawbench) | | **标签** | `Chinese`, `Knowledge`, `QA`, `Reasoning` | | **指标** | `accuracy`, `conclusion_acc`, `fact_acc`, `reasoning_acc`, `law_acc` | | **默认示例数** | 0-shot | | **评估分割** | `test` | ## 数据统计 | 指标 | 值 | |--------|-------| | 总样本数 | 280 | | 提示词长度(平均) | 2669.88 字符 | | 提示词长度(最小/最大) | 1267 / 5890 字符 | **各子集统计信息:** | 子集 | 样本数 | 提示词平均长度 | 提示词最小长度 | 提示词最大长度 | |--------|---------|-------------|------------|------------| | `case_analysis` | 250 | 2720.18 | 2137 | 4873 | | `legal_consultation` | 18 | 1851.94 | 1512 | 2611 | | `plaintiff_statement` | 6 | 1494.67 | 1267 | 2050 | | `defendant_statement` | 6 | 4203 | 2794 | 5890 | ## 样例示例 **子集**: `case_analysis` ```json { "input": [ { "id": "06c8a1d7", "content": "\n## 角色\n\n你是一名具有十年以上执业经验的法律实务专家,精通中国现行法律法规与司法实践。你擅长将复杂的法律问题分解为清晰的逻辑模块,并严格依据“结论先行、事实为重、推理严密、依据支撑”的专业风格进行解答。\n\n## 核心要求\n\n1. 严格顺序:回答必须按照以下四部分顺序展开,并使用对应标题:\n【结论】\n【案件事实】\n【推理过程】\n【法条依据】\n2. 内容规范:\n结论:直接、明确,针对提问的核心争议点给出肯定或否定的判断。\n案件事实:基于用户提供的案情,简明、客观地摘录与法律判断 ... [TRUNCATED 1912 chars] ... 并赔偿精神损害抚慰金。庭审中查明,某摄影服务公司已完成除摄像外的其他服务项目;某文化传媒公司系独立法人,其工作人员在操作设备时存在重大过失。另查,某甲在签订合同时未特别声明婚礼录像的重要性,但合同附件中列有\"全程跟拍记录\"服务项目。某摄影服务公司辩称其仅需承担合同违约责任,精神损害赔偿缺乏依据。某文化传媒公司以非合同相对方为由拒绝承担责任。\n\n## 问题\n以【结论 + 案情简述 + 分析过程+依据法条】的逻辑回答以下问题:在上述案例中,某甲能否向某摄影服务公司主张精神损害赔偿?\n" } ], "target": "", "id": 0, "group_id": 0, "subset_key": "case_analysis", "metadata": { "id": "case_analysis-1", "task": "case_analysis", "judge_type": "case_analysis", "category": "个人生活", "rubrics": "[{\"criterion\": \"【结论得分】\\n(+5分) 某甲有权向某摄影服务公司主张精神损害赔偿。\", \"points\": \"5\", \"tags\": \"结论得分\"}, {\"criterion\": \"【案情简述得分】\\n(+5分) 某甲与某摄影服务公司签订《婚庆服务合同》,并支付全款,合同附件明确包含\\\"全程跟拍记录\\\"服务项目。\\n(+5分) 婚礼当日,某摄影服务公司未经告知将摄像服务转包给文化传媒公司。\\n(+5分) 文化传媒公司工作室将录像全部丢失,未能交付原告。\\n(+ ... [TRUNCATED 762 chars] ... 人具有人身意义的特定物造成严重精神损害的,被侵权人有权请求精神损害赔偿。\\n(+5分)《最高人民法院关于确定民事侵权精神损害赔偿责任若干问题的解释》第五条\\n精神损害的赔偿数额根据以下因素确定:(一)侵权人的过错程度,但是法律另有规定的除外;(二)侵权行为的目的、方式、场合等具体情节;(三)侵权行为所造成的后果;(四)侵权人的获利情况;(五)侵权人承担责任的经济能力;(六)受理诉讼法院所在地的平均生活水平。\", \"points\": \"15\", \"tags\": \"法条依据得分\"}]", "max_points": 60, "prompt": "\n## 角色\n\n你是一名具有十年以上执业经验的法律实务专家,精通中国现行法律法规与司法实践。你擅长将复杂的法律问题分解为清晰的逻辑模块,并严格依据“结论先行、事实为重、推理严密、依据支撑”的专业风格进行解答。\n\n## 核心要求\n\n1. 严格顺序:回答必须按照以下四部分顺序展开,并使用对应标题:\n【结论】\n【案件事实】\n【推理过程】\n【法条依据】\n2. 内容规范:\n结论:直接、明确,针对提问的核心争议点给出肯定或否定的判断。\n案件事实:基于用户提供的案情,简明、客观地摘录与法律判断 ... [TRUNCATED 1912 chars] ... 并赔偿精神损害抚慰金。庭审中查明,某摄影服务公司已完成除摄像外的其他服务项目;某文化传媒公司系独立法人,其工作人员在操作设备时存在重大过失。另查,某甲在签订合同时未特别声明婚礼录像的重要性,但合同附件中列有\"全程跟拍记录\"服务项目。某摄影服务公司辩称其仅需承担合同违约责任,精神损害赔偿缺乏依据。某文化传媒公司以非合同相对方为由拒绝承担责任。\n\n## 问题\n以【结论 + 案情简述 + 分析过程+依据法条】的逻辑回答以下问题:在上述案例中,某甲能否向某摄影服务公司主张精神损害赔偿?\n" } } ``` *注:部分内容因展示需要已被截断。* ## 提示模板 **提示模板:** ```text {question} ``` ## 使用方法 ### 使用 CLI ```bash evalscope eval \ --model YOUR_MODEL \ --api-url OPENAI_API_COMPAT_URL \ --api-key EMPTY_TOKEN \ --datasets plawbench \ --limit 10 # 正式评估时请删除此行 ``` ### 使用 Python ```python from evalscope import run_task from evalscope.config import TaskConfig task_cfg = TaskConfig( model='YOUR_MODEL', api_url='OPENAI_API_COMPAT_URL', api_key='EMPTY_TOKEN', datasets=['plawbench'], dataset_args={ 'plawbench': { # subset_list: ['case_analysis', 'legal_consultation', 'plaintiff_statement'] # 可选,用于评估特定子集 } }, limit=10, # 正式评估时请删除此行 ) run_task(task_cfg=task_cfg) ```