展开本页目录
开始前准备什么
- 四份虚构材料,不含真人和真实业务数据。
- 每段都有稳定 ID,字段未知时留 null。
- 使用同一个 prompt 和输出合同,先完成事实检查,再额外评分文字表达。
- 读原文事实
- 固定输出合同
- 核对否定未知
- 核对支持片段
- 记录失败原因
20个虚构任务、参考答案、可信测试与空记录模板。没有新模型成绩,不会调用API。
20 个虚构用例。expected 是验收参考,不是模型结果。
60 行未运行占位;未知耗时、通过与实际扣费保留 null。
一份申请记录,同时测金额与否定
| 事实字段 | 人工预期 | 证据 |
|---|---|---|
| person | 李昕 | S01 |
| eventDate | 2026-04-12 | S01:申请提交日期 |
| budgetYuan | 12800.00 | S01 |
| approved | false | S02:未获批准 |
| launchDate | null | 未提供,不猜测 |
- 事实字段
- person
- 人工预期
- 李昕
- 证据
- S01
- 事实字段
- eventDate
- 人工预期
- 2026-04-12
- 证据
- S01:申请提交日期
- 事实字段
- budgetYuan
- 人工预期
- 12800.00
- 证据
- S01
- 事实字段
- approved
- 人工预期
- false
- 证据
- S02:未获批准
- 事实字段
- launchDate
- 人工预期
- null
- 证据
- 未提供,不猜测
虚构输入
[S01] 李昕在2026年4月12日提交了映月书架试点申请,预算为12,800元。
[S02] 审议记录明确:申请未获批准。材料没有写明上线日期。让模型把事实和出处一起交付
如果业务需要自然语言摘要,可先生成摘要,再独立抽取事实核对。不要只让原模型自评“没有幻觉”;这里的参考答案由材料作者预先编写,验收时逐字段核对。
固定 prompt
只根据下面带 ID 的材料抽取事实。仅输出 JSON,字段为 person、eventDate、budgetYuan、approved、launchDate、evidence。person 是首次提交人的姓名;eventDate 是首次提交日期,不是更正通知日期;budgetYuan 使用有明确更正依据的当前预算。金额为两位小数字符串;日期为 YYYY-MM-DD;明确否定为 false,材料未给出的值为 null。evidence 每个字段对应材料 ID 数组;未知字段为空数组。不得把计划写成已发生。参考 JSON 保留 false、零与未知的区别
approved=false 是明确否定;approved=null 是材料未给出结论。budgetYuan 使用两位小数字符串避免金额精度与序列化变化;未知字段 evidence=[],不能找一个无关段落来填满。
作者参考答案,不是模型结果
{
"person": "李昕",
"eventDate": "2026-04-12",
"budgetYuan": "12800.00",
"approved": false,
"launchDate": null,
"evidence": {
"person": [
"S01"
],
"eventDate": [
"S01"
],
"budgetYuan": [
"S01"
],
"approved": [
"S02"
],
"launchDate": []
}
}四类中文边界,避免“一句总结”掩盖问题
- 人物角色要核对:提交人不能自动变成审批人。
- 原计划日期与实际日期分字段,不能用一个 eventDate 混装。
- 正文有两项互相矛盾的信息且没有更正依据时,另建冲突题,不能擅自选最后出现的一项。
| 材料 | 应保留 | 错误摘要 |
|---|---|---|
| 未获批准 | approved=false | “方案已获批准” |
| 预算为 0 元 | budgetYuan="0.00" | “预算不详” |
| 预算更正为 8750.50 | 采用明确更正后的金额;提交日期不变 | 保留原金额 9600,或把更正日期当提交日期 |
| 评审尚未开始 | approved=null | “已否决”或“已通过” |
- 材料
- 未获批准
- 应保留
- approved=false
- 错误摘要
- “方案已获批准”
- 材料
- 预算为 0 元
- 应保留
- budgetYuan="0.00"
- 错误摘要
- “预算不详”
- 材料
- 预算更正为 8750.50
- 应保留
- 采用明确更正后的金额;提交日期不变
- 错误摘要
- 保留原金额 9600,或把更正日期当提交日期
- 材料
- 评审尚未开始
- 应保留
- approved=null
- 错误摘要
- “已否决”或“已通过”
评分先定门槛,不只看字段出现次数
这套离线 grader 将任何关键事实或证据错误记为不通过。若你采用字段级分数,先写明权重,同时保留关键否定字段的硬门槛,别让多数普通字段掩盖一处关键失真。
| 验收项 | 通过条件 | 不通过例子 |
|---|---|---|
| 事实 | 值与类型符合字段合同 | false 变成数字 0 |
| 未知 | 原文无值,输出 null | 空预算被填 0 |
| 支持 | 引用真实支持该字段的 ID | S01 支持金额,却被拿来证明获批 |
| 结构 | 只含规定字段 | 多出的“结论”与正文冲突 |
- 验收项
- 事实
- 通过条件
- 值与类型符合字段合同
- 不通过例子
- false 变成数字 0
- 验收项
- 未知
- 通过条件
- 原文无值,输出 null
- 不通过例子
- 空预算被填 0
- 验收项
- 支持
- 通过条件
- 引用真实支持该字段的 ID
- 不通过例子
- S01 支持金额,却被拿来证明获批
- 验收项
- 结构
- 通过条件
- 只含规定字段
- 不通过例子
- 多出的“结论”与正文冲突
本地核对,不替代真实模型试验
answers.json 按 case ID 存放你实际拿到的回答。未提交回答保持待验收;不能把 cases.json 中 expected 复制到成绩表。下载包的正确与错误夹具验证是离线材料检查,不是模型通过。
只检查已保存的可见 JSON
python3 grader.py --answers /absolute/path/answers.json怎样确认已经完成
- 人物、日期与角色没有互换。
- 金额保留修订关系和小数,否定没有翻转。
- 未知保留 null,引用实际支持对应字段。
- 文风评分与事实通过分开,不让流畅度掩盖事实错。
常见问题
事实 JSON 通过就算摘要写得好吗?
它只检查事实与支持关系。可读性、压缩程度和面向读者的结构,应该用另外的人工标准评分。
原文没有写预算,可以填 0 吗?
不可以。0 是明确的数值,未提供应为 null;本页特意提供零预算与未知预算两份不同材料。
能用模型给自己的摘要打分吗?
可以辅助找问题,但不能作为唯一证据。关键值应对照人工事实表或可验证原文;评审模型也可能漏掉同类错误。