
目录
[一、自动化评测报告 Markdown 模板(可直接导出)](#一、自动化评测报告 Markdown 模板(可直接导出))
[二、Bad Case 自动分类脚本思路(Python)](#二、Bad Case 自动分类脚本思路(Python))
[BadCase 标签体系](#BadCase 标签体系)
[1. 数据集结构定义(单样本 JSON)](#1. 数据集结构定义(单样本 JSON))
[2. 样本分类策略(必须混合)](#2. 样本分类策略(必须混合))
[3. 难度分层](#3. 难度分层)
[4. 数据集构建来源](#4. 数据集构建来源)
[5. 数据集质检规范(上线评测前必须做)](#5. 数据集质检规范(上线评测前必须做))
[6. 数据集大小建议](#6. 数据集大小建议)
一、自动化评测报告 Markdown 模板(可直接导出)
适用:混合评测(规则 + LLM-as-judge),每次批量评测自动填充,用于迭代复盘、版本对比
# 模型自动化评测报告
评测版本:{{model_version}}
评测时间:{{eval_time}}
评测数据集:{{dataset_name}}
样本总量:{{total_samples}}
Judge模型:{{judge_model_name}}
Judge Prompt版本:{{prompt_version}}
## 1. 评测整体概览
| 指标 | 值 |
| ---- | ---- |
| 规则校验通过样本数 | {{rule_pass_cnt}} |
| 规则校验通过率 | {{rule_pass_rate}} |
| 规则拦截样本数 | {{rule_block_cnt}} |
| 进入LLM Judge评测样本数 | {{llm_eval_cnt}} |
| LLM Judge综合平均分 | {{llm_avg_total_score}} |
| 评测总耗时 | {{eval_duration}} |
| Token总消耗 | {{total_token_cost}} |
> 说明:规则拦截样本不再进入LLM打分,直接判定不合格。
## 2. 规则层评测明细
规则失败类型统计:
{{rule_error_stat_table}}
## 3. LLM Judge多维度得分统计(仅规则通过样本)
| 维度 | 平均分 | 标准差 |
| ---- | ---- | ---- |
| 准确性 | {{score_accuracy_mean}} | {{score_accuracy_std}} |
| 完整性 | {{score_completeness_mean}} | {{score_completeness_std}} |
| 逻辑性 | {{score_logic_mean}} | {{score_logic_std}} |
| 简洁性 | {{score_concise_mean}} | {{score_concise_std}} |
> 标准差越大:Judge打分波动越大,可靠性越差。
## 4. Judge可靠性校验(人工抽样)
抽样样本量:{{human_sample_cnt}}
Judge vs 人工标注 Cohen's Kappa:{{kappa_value}}
Kappa评级:{{kappa_level}}
Judge误判样本数量:{{judge_error_cnt}}
## 5. Bad Case汇总 Top N
| 样本ID | Query | 模型输出 | 失败原因分类 | 规则/LLM错误 |
| ---- | ---- | ---- | ---- | ---- |
{{bad_case_rows}}
## 6. 版本对比(可选,与上一版对比)
| 指标 | 当前版本 | 上一版本 | 变化 |
| ---- | ---- | ---- | ---- |
| 规则通过率 | {{cur_rule_pass}} | {{prev_rule_pass}} | {{delta_rule}} |
| 准确性平均分 | {{cur_acc}} | {{prev_acc}} | {{delta_acc}} |
## 7. 结论与优化建议
1. 整体结论:{{summary_conclusion}}
2. 高频问题:{{top_problem}}
3. 优化方向:{{optimize_suggestion}}
4. 后续动作:{{todo_list}}
二、Bad Case 自动分类脚本思路(Python)
目标
对所有失败样本(规则拦截 + LLM Judge 低分)自动打标签,聚合统计问题分布,减少人工筛选工作量。
分类分为两大类别:规则类 BadCase 、语义类 BadCase
BadCase 标签体系
- 规则类标签(规则引擎直接输出)
empty_response:空回答too_long:输出超长too_short:输出过短invalid_json:JSON 格式错误sensitive_word:命中敏感词 / 黑名单format_error:不符合指定输出格式
- 语义类标签(解析 LLM Judge reason + 关键词匹配,可搭配轻量规则)
fact_hallucination:事实幻觉,编造信息incomplete_answer:信息不全,遗漏要点logic_conflict:逻辑矛盾,推理错误irrelevant:答非所问,偏离用户问题redundant:内容冗余啰嗦wrong_prior:错误前提假设refusal_error:不该拒绝却拒绝回答
简化版代码示例
import re
# 语义问题分类函数:从judge reason文本匹配标签
def classify_bad_case(rule_errors: list, judge_reason: str):
tags = []
# 1. 优先处理规则错误
for err in rule_errors:
if "空回答" in err:
tags.append("empty_response")
elif "敏感词" in err:
tags.append("sensitive_word")
elif "JSON" in err:
tags.append("invalid_json")
# 2. 规则无错误,则解析Judge理由,匹配语义错误
if len(tags) == 0 and judge_reason:
reason_lower = judge_reason.lower()
if re.search(r"事实.*错误|幻觉|编造", reason_lower):
tags.append("fact_hallucination")
if re.search(r"缺少|遗漏|不全", reason_lower):
tags.append("incomplete_answer")
if re.search(r"答非所问|无关", reason_lower):
tags.append("irrelevant")
if re.search(r"逻辑矛盾|推理错误", reason_lower):
tags.append("logic_conflict")
return tags
# 使用示例
# tags = classify_bad_case([], "回答存在事实错误,编造了不存在的数据")
# 输出:["fact_hallucination"]
落地说明
- 自动标签只做初步聚类,不可作为最终结论;
- 人工复核 BadCase 时,可以修正自动标签,回流训练关键词匹配规则;
- 统计:按标签计数,输出饼图 / 柱状图,看模型哪一类问题最多。
三、评测数据集构建规范(混合评测专用)
数据集质量直接决定评测可信度,数据集要分层、覆盖边界 Case,同时区分训练集 / 评测集,禁止数据泄露
1. 数据集结构定义(单样本 JSON)
{
"sample_id": "eval_001",
"query": "用户提问",
"reference_answer": "参考答案(可选,开放场景可以无标准答案)",
"query_type": ["知识问答","创作","推理"],
"difficulty": "easy/medium/hard",
"category": "领域分类,如:金融/教育",
"case_type": "normal/edge/adversarial",
"expected_constraint": {
"need_json": false,
"forbidden_words": []
},
"metadata": {
"source": "人工构造/线上抽样",
"create_time": "2026-09-27"
}
}
2. 样本分类策略(必须混合)
- 普通样本 normal(60%):常规用户问题,模型大概率正常回答,衡量基础能力
- 边界样本 edge(30%)
- 模糊提问、信息缺失、歧义问题
- 超长输入、多轮复杂推理
- 需要指定格式输出(JSON、表格)
- 对抗样本 adversarial(10%)
- 敏感诱导提问、越狱尝试
- 容易产生幻觉的陷阱问题
- 误导性前提的问题("太阳从西边升起,为什么?")
3. 难度分层
- easy:事实类简答,标准答案明确
- medium:需要简单推理,要点较多
- hard:复杂逻辑、开放创作、多步骤推理,无唯一标准答案
4. 数据集构建来源
- 人工标注构造样本:适合覆盖特定能力、边界 case、对抗 case;可控性最好
- 线上真实日志抽样:必须脱敏,过滤隐私;真实分布,贴近线上用户
- 开源评测集改造:如 MMLU、GSM8K,适配业务场景;注意领域差异
重要红线:评测集样本不能出现在模型训练 / 微调数据里,防止数据泄露导致虚高评测分数。
5. 数据集质检规范(上线评测前必须做)
- 去重:剔除重复 query
- 标注校验:人工抽检,确认 reference 和 case_type 打标正确
- 样本多样性:领域、难度、case_type 分布均衡,不要全部都是简单题
- 版本管理:数据集也要版本化,修改样本后更新版本号,方便复现评测结果
- 保持固定:对比模型版本时,使用同一版评测集,不能一边测一边改样本
6. 数据集大小建议
- 快速迭代小批量评测:≥100 条样本
- 正式版本发布评测:≥500 条样本
- Judge 可靠性 Kappa 校验集:≥50 条人工标注样本
整套体系完整链路汇总
- 评测数据集(分层 + 边界 + 对抗样本)
- 第一层:规则引擎(格式、敏感词、EM/F1,拦截低质样本)
- 第二层:LLM-as-judge 打分(多维度 /pairwise/ 二元,结构化输出 reason)
- BadCase 自动分类,聚类问题
- 生成标准化 Markdown 评测报告
- 人工抽样,计算 Cohen's Kappa 校验 Judge 可靠性
- 基于报告与 BadCase,迭代模型、Prompt、Judge 规则