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 得分。
属性#
属性 |
值 |
|---|---|
基准测试名称 |
|
数据集ID |
|
论文 |
|
标签 |
|
指标 |
|
默认示例数 |
0-shot |
评估分割 |
|
数据统计#
指标 |
值 |
|---|---|
总样本数 |
280 |
提示词长度(平均) |
2669.88 字符 |
提示词长度(最小/最大) |
1267 / 5890 字符 |
各子集统计信息:
子集 |
样本数 |
提示词平均长度 |
提示词最小长度 |
提示词最大长度 |
|---|---|---|---|---|
|
250 |
2720.18 |
2137 |
4873 |
|
18 |
1851.94 |
1512 |
2611 |
|
6 |
1494.67 |
1267 |
2050 |
|
6 |
4203 |
2794 |
5890 |
样例示例#
子集: case_analysis
{
"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"
}
}
注:部分内容因展示需要已被截断。
提示模板#
提示模板:
{question}
使用方法#
使用 CLI#
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets plawbench \
--limit 10 # 正式评估时请删除此行
使用 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)