research(jev-intent): fix2 把来源 B 现行与高置信错误补进报告
Independent Staging Quality Gate / validate (push) Failing after 9m3s
Independent Staging Quality Gate / publish (push) Skipped

离线从 cache 聚合,不重跑模型。无焦点层 Flash 69.7% 低于 Jev 78.8%。采集层相对门槛标不可判。
This commit is contained in:
jesse-ux
2026-09-19 12:28:43 +08:00
parent 33367fb081
commit 507ef959f5
6 changed files with 455 additions and 18 deletions
+175 -1
View File
@@ -244,6 +244,180 @@
"cost_usd": 0.001293768
}
},
"current_source_b": {
"n": 157,
"unavailable": 0,
"intent_acc": 0.89171974522293,
"answer_class_acc": 0.9702970297029703,
"answer_class_n": 101,
"dated_acc": 0.9363057324840764,
"all_acc": 0.8407643312101911,
"high_conf_error_rate": null,
"low_conf_coverage": null,
"low_conf_recall": null,
"no_vs_unsure": 0,
"median_ms": 685.0,
"p95_ms": 938.0,
"mean_input_tokens": 516.6496815286624,
"cost_usd": 0.0034067880000000004
},
"current_source_b_by_layer": {
"choice": {
"n": 17,
"unavailable": 0,
"intent_acc": 0.8823529411764706,
"answer_class_acc": 1.0,
"answer_class_n": 1,
"dated_acc": 0.8823529411764706,
"all_acc": 0.8823529411764706,
"high_conf_error_rate": null,
"low_conf_coverage": null,
"low_conf_recall": null,
"no_vs_unsure": 0,
"median_ms": 657.0,
"p95_ms": 763.0,
"mean_input_tokens": 450.5882352941176,
"cost_usd": 0.00032172
},
"collect": {
"n": 107,
"unavailable": 0,
"intent_acc": 0.9532710280373832,
"answer_class_acc": 0.97,
"answer_class_n": 100,
"dated_acc": 0.9439252336448598,
"all_acc": 0.8785046728971962,
"high_conf_error_rate": null,
"low_conf_coverage": null,
"low_conf_recall": null,
"no_vs_unsure": 0,
"median_ms": 689.0,
"p95_ms": 938.0,
"mean_input_tokens": 528.9345794392524,
"cost_usd": 0.0023770320000000003
},
"none": {
"n": 33,
"unavailable": 0,
"intent_acc": 0.696969696969697,
"answer_class_acc": null,
"answer_class_n": 0,
"dated_acc": 0.9393939393939394,
"all_acc": 0.696969696969697,
"high_conf_error_rate": null,
"low_conf_coverage": null,
"low_conf_recall": null,
"no_vs_unsure": 0,
"median_ms": 715.0,
"p95_ms": 978.0,
"mean_input_tokens": 510.8484848484849,
"cost_usd": 0.0007080360000000001
}
},
"source_b_jev_self_consistency": {
"all": 0.9617834394904459,
"choice": 0.9411764705882353,
"collect": 0.9906542056074766,
"none": 0.8787878787878788
},
"source_b_none_confusion": {
"jev": {
"labels": [
"provide_new_evidence",
"stop_rectification",
"ask_about_result",
"unclear",
"answer_current_focus"
],
"counts": {
"provide_new_evidence": {
"provide_new_evidence": 24,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 0,
"answer_current_focus": 0
},
"stop_rectification": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 0,
"answer_current_focus": 0
},
"ask_about_result": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 1,
"unclear": 0,
"answer_current_focus": 0
},
"unclear": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 1,
"answer_current_focus": 7
},
"answer_current_focus": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 0,
"answer_current_focus": 0
}
},
"other": 0,
"n": 33
},
"current": {
"labels": [
"provide_new_evidence",
"stop_rectification",
"ask_about_result",
"unclear",
"answer_current_focus"
],
"counts": {
"provide_new_evidence": {
"provide_new_evidence": 21,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 0,
"answer_current_focus": 3
},
"stop_rectification": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 0,
"answer_current_focus": 0
},
"ask_about_result": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 1,
"answer_current_focus": 0
},
"unclear": {
"provide_new_evidence": 1,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 2,
"answer_current_focus": 5
},
"answer_current_focus": {
"provide_new_evidence": 0,
"stop_rectification": 0,
"ask_about_result": 0,
"unclear": 0,
"answer_current_focus": 0
}
},
"other": 0,
"n": 33
}
},
"representativeness": {
"note": "来源 B 与来源 C 同层 intent 准确率:choice B 94.1% vs C 99.0%(差 4.9%,n_B=17);collect B 94.4% vs C 92.2%(差 2.1%,n_B=107);none B 78.8% vs C 96.0%(差 17.2%,n_B=33)。 有层差 > 10pp,结论降为缺数据。",
"fail": true,
@@ -101740,7 +101914,7 @@
},
"conclusion": {
"verdict": "缺数据",
"reason": "来源 B 与来源 C 同层 intent 准确率差 > 10pp,模拟语料不代表真人,来源 C 门槛结论降为缺数据。来源 B 与来源 C 同层 intent 准确率:choice B 94.1% vs C 99.0%(差 4.9%,n_B=17);collect B 94.4% vs C 92.2%(差 2.1%,n_B=107);none B 78.8% vs C 96.0%(差 17.2%,n_B=33)。 有层差 > 10pp,结论降为缺数据。 同时来源 C 绝对门槛未过:低置信召回 23.1% / 45.5% / 25.0% < 60%(错了却仍高置信)。 相对 −3pp(同一样本):choice Jev 99.0% vs 现行 98.8%(门槛 95.8%,过);collect Jev 92.2% vs 现行 97.5%(门槛 94.5%,未过);none Jev 96.0% vs 现行 94.0%(门槛 91.0%,过)。",
"reason": "来源 B 与来源 C 同层 intent 准确率差 > 10pp,模拟语料不代表真人,来源 C 门槛结论降为缺数据。来源 B 与来源 C 同层 intent 准确率:choice B 94.1% vs C 99.0%(差 4.9%,n_B=17);collect B 94.4% vs C 92.2%(差 2.1%,n_B=107);none B 78.8% vs C 96.0%(差 17.2%,n_B=33)。 有层差 > 10pp,结论降为缺数据。 同时来源 C 绝对门槛未过:低置信召回 23.1% / 45.5% / 25.0% < 60%(错了却仍高置信)。 相对 −3pp(同一样本):choice Jev 99.0% vs 现行 98.8%(门槛 95.8%,过);collect Jev 92.2% vs 现行 97.5%(门槛 94.5%,不可判(复核与对照同源));none Jev 96.0% vs 现行 94.0%(门槛 91.0%,过)。",
"if_connect": "不得上线。先补真机样本或重造更像真人的来源 C,再测。"
}
}
+58 -8
View File
@@ -15,7 +15,7 @@
## 结论
**缺数据**。来源 B 与来源 C 同层 intent 准确率差 > 10pp,模拟语料不代表真人,来源 C 门槛结论降为缺数据。来源 B 与来源 C 同层 intent 准确率:choice B 94.1% vs C 99.0%(差 4.9%,n_B=17);collect B 94.4% vs C 92.2%(差 2.1%,n_B=107);none B 78.8% vs C 96.0%(差 17.2%,n_B=33)。 有层差 > 10pp,结论降为缺数据。 同时来源 C 绝对门槛未过:低置信召回 23.1% / 45.5% / 25.0% < 60%(错了却仍高置信)。 相对 −3pp(同一样本):choice Jev 99.0% vs 现行 98.8%(门槛 95.8%,过);collect Jev 92.2% vs 现行 97.5%(门槛 94.5%,未过);none Jev 96.0% vs 现行 94.0%(门槛 91.0%,过)。
**缺数据**。来源 B 与来源 C 同层 intent 准确率差 > 10pp,模拟语料不代表真人,来源 C 门槛结论降为缺数据。来源 B 与来源 C 同层 intent 准确率:choice B 94.1% vs C 99.0%(差 4.9%,n_B=17);collect B 94.4% vs C 92.2%(差 2.1%,n_B=107);none B 78.8% vs C 96.0%(差 17.2%,n_B=33)。 有层差 > 10pp,结论降为缺数据。 同时来源 C 绝对门槛未过:低置信召回 23.1% / 45.5% / 25.0% < 60%(错了却仍高置信)。 相对 −3pp(同一样本):choice Jev 99.0% vs 现行 98.8%(门槛 95.8%,过);collect Jev 92.2% vs 现行 97.5%(门槛 94.5%,不可判(复核与对照同源));none Jev 96.0% vs 现行 94.0%(门槛 91.0%,过)。
若接:不得上线。先补真机样本或重造更像真人的来源 C,再测。
@@ -41,18 +41,49 @@
同一样本上 Jev vs 现行(相对门槛用这一表):
| 层 | n | Jev intent | 现行 intent | 差(Jev−现行) | 门槛现行−3pp |
| --- | ---: | ---: | ---: | ---: | ---: |
| choice | 400 | 99.0% | 98.8% | 0.2% | 95.8% |
| collect | 400 | 92.2% | 97.5% | -5.2% | 94.5% |
| none | 100 | 96.0% | 94.0% | 2.0% | 91.0% |
| 层 | n | Jev intent | 现行 intent | 差(Jev−现行) | 门槛现行−3pp | 判定 |
| --- | ---: | ---: | ---: | ---: | ---: | --- |
| choice | 400 | 99.0% | 98.8% | 0.2% | 95.8% | 过 |
| collect | 400 | 92.2% | 97.5% | -5.2% | 94.5% | 不可判(复核与对照同源) |
| none | 100 | 96.0% | 94.0% | 2.0% | 91.0% | 过 |
## 代表性检验(来源 B vs 来源 C)
来源 B 已标注 157 条(点选 17 / 采集 107 / 无焦点 33;未标注 0),长度 P25/中位/P75/最长 = 12/21/28/172。人工标注,未用模型代标。Jev 在来源 B 上 intent:点选 94.1%、采集 94.4%、无焦点 78.8%;全集 91.1%。无焦点层差 17.2pp > 10pp。
来源 B 与来源 C 同层 intent 准确率:choice B 94.1% vs C 99.0%(差 4.9%,n_B=17);collect B 94.4% vs C 92.2%(差 2.1%,n_B=107);none B 78.8% vs C 96.0%(差 17.2%,n_B=33)。 有层差 > 10pp,结论降为缺数据。
来源 B 是真人 + 人工标注 + 线上模型三者齐备的唯一一组。现行无置信度,置信度三列为空。
| 范围 | n | Jev intent | 现行 intent | Jev 高置信错误 | Jev 低置信召回 | Jev 自洽 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| 全集 | 157 | 91.1% | 89.2% | 6.4% | 24.1% | 96.2% |
| choice | 17 | 94.1% | 88.2% | 0.0% | 66.7% | 94.1% |
| collect | 107 | 94.4% | 95.3% | 5.6% | 18.2% | 99.1% |
| none | 33 | 78.8% | 69.7% | 12.1% | 20.0% | 87.9% |
无焦点层现行 intent 69.7%、Jev 78.8%。现行更低,说明 78.8% 主要是这 33 条本身难,不是单 Jev 不行。
无焦点层 gold × 预测混淆计数(只有计数,无原文)。预测出现 `answer_current_focus` 是因为模型把无焦点句当成在回答采集题。
### gold × Jev(n=33)
| gold \ pred | provide_new_evidence | stop_rectification | ask_about_result | unclear | answer_current_focus |
| --- | ---: | ---: | ---: | ---: | ---: |
| provide_new_evidence | 24 | 0 | 0 | 0 | 0 |
| stop_rectification | 0 | 0 | 0 | 0 | 0 |
| ask_about_result | 0 | 0 | 1 | 0 | 0 |
| unclear | 0 | 0 | 0 | 1 | 7 |
| answer_current_focus | 0 | 0 | 0 | 0 | 0 |
### gold × 现行(n=33)
| gold \ pred | provide_new_evidence | stop_rectification | ask_about_result | unclear | answer_current_focus |
| --- | ---: | ---: | ---: | ---: | ---: |
| provide_new_evidence | 21 | 0 | 0 | 0 | 3 |
| stop_rectification | 0 | 0 | 0 | 0 | 0 |
| ask_about_result | 0 | 0 | 0 | 1 | 0 |
| unclear | 1 | 0 | 0 | 2 | 5 |
| answer_current_focus | 0 | 0 | 0 | 0 | 0 |
## 置信度–准确率曲线与 θ
推荐 θ = 0.9。点:
@@ -154,6 +185,25 @@
| 若同一句话既明确否定当前采集题又补充了新的带时间经历,intent 仍为 answer_current_focus 且 answer_class 为 no,不要改成 provide_new_evidence。 | Code keeps no + Noul true. Jev intent/Noul are independent. | Jev may split this pair; code does not re-vote intent from the Noul. |
| 不要按关键词表或正则猜测,只根据当前问题与用户这句话的语义分类。 | Not sent. Jev has no keyword table in the question. | The meta-instruction is dropped (Jev answers the written question, not the intended one). |
## 限制
1. **复核 ≈ 生产提示,且复核模型 = 对照模型。** `REVIEW_RUBRIC` 与生产 `COLLECT_INSTRUCTIONS` 逐句对应;生成 / 复核 / 对照都是 `deepseek-flash`。进入测试集的 900 条是「Flash 用近生产提示能答对目标标签」的那 900 条,被剔的 36 条恰是 Flash 不同意的。因此来源 C 上现行 97.5% / 98.8% / 94.0% 是构造出来的上界。采集层「Jev 92.2% 未过相对门槛 94.5%」**不可当作 Jev 输给现行的证据**。
2. **采集层 intent 错例的 gold 有争议。** 来源 C 采集层 Jev intent 错例 31 条:`provide_new_evidence → answer_current_focus` 17、`unclear → answer_current_focus` 9、`stop → unclear` 4、`ask → unclear` 1。17 条 pne 几乎全是「另外 2019 年我换工作搬了家」句式,若干尾句落在当前题域,按生产提示可读成 `answer_current_focus + unsure`。9 条 unclear(「一时半会儿真捋不明白」)按「记不清 → unsure」也读得通。两类合计 ≥ 20 条,占该层 intent 错例约 2/3。gold 来自「生成目标 + Flash 复核同意」,不等于人工真值。改写示例:
- 「另外 2019 年换过工作,感情那会儿真没细想。」gold=provide_new_evidence;可读成在回答感情采集题。
- 「另外 2019 年搬了家,工作那摊子反而没顾上细想。」gold=provide_new_evidence;可读成在回答工作采集题。
- 「这事我一时真说不上来。」gold=unclear;按生产提示是 unsure。
3. **语料仍不像真人。** 修复单 1 只把长度和人设写成硬红线(已过)。原单还要求按来源 B 的标点 / 语气词比例约束,未进红线:
| 指标 | 来源 B(真人) | 来源 C(模拟) |
| --- | ---: | ---: |
| 含标点 | 13% | 98.9% |
| 含语气词(吧/呢/啊/嗯/哦/额/emm) | 4% | 25.6% |
| 含年份或月份 | 81% | 47.8% |
| 带年份句里写「2019」 | — | 236 / 429 = 55% |
| `provide_new_evidence` 里是搬家/换工作 | — | 152 / 157 |
根因:生成脚本 `ALT_EVENT_HINTS` 给七个领域的「另一件事」全是搬家/换工作,年份未约束,模型收敛到「另外 2019 年搬过家」。这解释了模拟语料不代表真人的一部分,也解释了采集层错例为何长得一样。本单不修,留给产品决定是否再造一轮。
## 回退
任何上线方案必须保留回退到现行会话模型的路径。官方限流会动态调整。