Files
Jyotisha/docs/tasks/PROGRESS-rectification-jev-intent-classifier-research-20260919.md
T
jesse-ux c2ecbc74cd
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 1m37s
research(jev-intent): 修复轮重造语料并全量对照
来源 C 改为 DeepSeek Flash 生成+独立复核,撤回模板拼接结论。来源 B 157 条人工标注后跑 Jev x2 与 Flash 全量对照,结论为缺数据。
2026-09-19 11:30:31 +08:00

122 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 进度 · TypeSafe Jev 意图分类离线对照(2026-09-19)
- 分支:`codex/rectification-jev-intent-classifier-research-20260919`
- 基线:`origin/staging` @ `d9722d56`
- 任务书:`docs/tasks/TASK-rectification-jev-intent-classifier-research-20260919.md`
- 报告:`docs/research/jev_intent_2026_09_19.md` / `.json`
- 未改 `turn-intent-classifier.ts`、`route.ts`、`mastra/model.ts`、模型目录
## 样本
| 来源 | n | sha256 | 备注 |
| --- | ---: | --- | --- |
| A `synthetic.jsonl` | 10 | `79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8` | 测试文件没有 10 条带期望输出的 `userMessage` 夹具;用 `SHUFFLED_CHOICE` + 采集 prompt + 测试里两句原文 |
| B 真机会话 | 0 | — | 无 staging 库凭据。让步 1:代表性检验只报数。本地约定 `G:/Ferti/Jyotisha/.cache/jev_intent/source_b.jsonl` |
| C `simulated.jsonl` | 900 | `a8611e75bf56024fa984fb204d34a5e16405f18b3eaa5a3bee91f96e43918bf7` | 点选题 400 / 采集 400 / 无焦点 100,配额偏差 0 |
| 争议表 `disputed.jsonl` | 113 | `b4aed8567bd6b3fdd5cc98c73d9139197d62a96120a0ee29f474b8f08c050def` | 争议率 8.5%(1328 次生成),< 15% 门槛 |
- 问题池:20 例 holdout 走 `discriminating_event_probes`,点选题 103 条(4 例 0 probes:tiger_woods / picasso / freud / albert_brooks);采集题用 `USER_COLLECT_QUESTION` / retry / `TARGETED_YEAR_PROMPT`。
- 生成器:`agent-template-v1`(本机无会话模型凭据,不走线上贵模型;标签先定再写回复)。
- 复核器:`agent-rule-v1`(不同规则、看不到目标标签)。
- 长度(来源 C):P25=3 / 中位=11 / P75=25(来源 B 不足,用兜底 P25≤6 / 中位≤15 / P75≤40)。
- 真值在 T2 前固化,跑完未改标签。
## T2 跑次
- Jev:`jev-1.13.0`,`POST /v1/systemone`,SDK `typesafe-sdk 0.7.0`,三题同一请求。
- 时间:2026-09-19,来源 A+C 各 2 次;unavailable = 0。
- 现行对照:`deepseek-flash`(官方 Chat Completions,thinking 关)套生产分类器提示词。来源 C 分层随机 33%(seed 20260919)= 133+133+33,来源 A 全 10 条;第一次 309,第二次分层 1/3。unavailable = 0。**不是线上会话模型。** 来源 B 仍为 0。
## 指标(来源 C)
| 层 | n | intent | answer_class | dated | 高置信错误 | 低置信覆盖 | 低置信召回 | no/unsure | 自洽率 | 中位 ms | P95 ms | 次均 tok |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 点选题 | 400 | 88.0% | **65.0%** | 100% | 4.2% | 12.5% | 34.1% | 5 | 98.5% | 923 | 1344 | 1122 |
| 采集题 | 400 | 90.5% | 83.6% | 97.0% | **7.0%** | 13.5% | **34.2%** | 22 | 98.0% | 901 | 1026 | 987 |
| 无焦点 | 100 | 100% | — | 100% | 0.0% | 4.0% | — | 0 | 100% | 923 | 1018 | 923 |
来源 A n=10:intent 90.0%,answer_class 85.7%,高置信错误 0。
Jev 两次合计输入约 1.85M tok,按 $0.042/Mtok ≈ $0.08。
### 同一样本 DeepSeek Flash vs Jev(C 分层 33%)
| 层 | n | Jev intent | Flash intent | Flash answer_class | 差 | 门槛(Flash−3pp) | 相对 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |
| 点选题 | 133 | 89.5% | 92.5% | 83.0% | −3.0pp | 89.5% | 过 |
| 采集题 | 133 | 91.0% | 95.5% | 95.8% | −4.5pp | 92.5% | **未过** |
| 无焦点 | 33 | 100% | 97.0% | — | +3.0pp | 94.0% | 过 |
Flash 自洽率:点选题 100%、采集 95.5%、无焦点 100%。中位延迟 611–705 ms。
## 结论
**不可接。** 绝对门槛未过:高置信错误 7.0% > 3%;低置信召回 ≈34% < 60%;点选题 `answer_class` 65%。相对门槛在采集题上也未过(91.0% < 92.5%)。Flash 在点选题 `answer_class`(83%)和采集题(95.8%)都明显高于 Jev。中文口语和字面理解是 Jev 主错因。
若接:不接。继续用会话贵模型。只允许 (b) 影子双跑记日志;不得按 confidence 写库。
来源 B 仍为 0,代表性检验只报数。
## 偏离
1. 来源 B = 0:无 staging 库。按让步 1。
2. 来源 A:测试文件并无 10 条 `(userMessage, 期望输出)` 夹具,改从该文件的 schema + 两句真实 `userMessage` 构造。
3. 来源 C 生成未走会话贵模型(无凭据)。产品口径「Agent 模拟造语料」;生成/复核模型名写进报告。
4. 现行对照用 `deepseek-flash` 套同一提示词,不是数据库里的会话默认模型。
5. Windows 上 worktree `.venv` 是 25 字节 Linux symlink。`typesafe-sdk` 装进本机 Anaconda 3.11.7,未改 `requirements*.txt`。
6. 未写 BUG_HISTORY(本单不是 Bug)。
## 验证
- `python -m pytest tests/test_jev_intent_research.py`:8 passed
- 线上分类器文件未改
## 修复轮(2026-09-19,`codex/rectification-jev-intent-research-fix-20260919`)
任务书:`TASK-rectification-jev-intent-classifier-research-fix-20260919.md`。未改线上分类器。未立 BUG。
### 来源 C 重造
- 生成 / 复核模型:`deepseek-flash`(temperature 0.85 / 0.0),prompt_version `gen-review-v3`。不是线上会话模型。
- 问题池复用 `question_pool.json`(103 道点选题),未重建引擎池。
- 生成 1261,通过复核 1225,选出 900;争议 36,争议率 **2.85%**(collect 33 / choice 3;answer_current_focus 33 / unclear 3)。未回退模板。
- 提示修改:冒烟 v2 有 `missing_date` 拒稿,v3 强制四位年份并在重试时写明缺年/多年原因。只改了一轮提示。
- 三项统计:去重后唯一 825(≥810),单条重复最多 5;人设每种 ≥48(点选+采集),惜字如金+方言/网络语 180/900=20%;长度 P25=16 / 中位=20 / P75=24(目标 8–16 / 15–27 / 20–36)。
- 三层 400 / 400 / 100,配额偏差 ≤4.5%。
- sha256:synthetic `79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8`;simulated `53f13012fdc8f3721335bbe2961edf8c506a2f705b62bd9d302fce83ce2ef88d`;disputed `e80c5cd69c521a099d743e4a4632ad6bc103c3b5a505f5b376a7c9cebedb7646`。
### Token(分列)
| 段 | 调用 | input tok | output tok |
| --- | ---: | ---: | ---: |
| 生成 DeepSeek Flash | 1389 | 553,685 | 18,677 |
| 复核 DeepSeek Flash | 1318 | 700,669 | 29,296 |
| Jev `jev-1.13.0` 两次(A+C 910×2 + B 157×2) | 2134 | 2,213,898 | 283,528(Jev 输出不计费) |
| 对照 Flash 全量一次 + C 1/3 第二次 + B 一次 | 1366 | 676,080 | 30,260 |
Jev 输入按 $0.042/Mtok ≈ $0.093。生成+复核+对照走 DeepSeek,不记 Jev 价。
### 来源 B
157 条全部人工标注(点选 17 + 采集 107 + 无焦点 33),约 40 分钟。`runtime_intent` 未抄成 gold。Jev×2 + Flash×1 已跑。代表性:无焦点层 intent 差 17.2pp > 10pp。
### 对照摘要
| 层 | Jev intent | Flash intent | 高置信错误 | 低置信召回 | Jev 自洽 |
| --- | ---: | ---: | ---: | ---: | ---: |
| 点选题 | 99.0% | 98.8% | 0.0% | 23.1% | 99.8% |
| 采集题 | 92.2% | 97.5% | 2.8% | 45.5% | 98.0% |
| 无焦点 | 96.0% | 94.0% | 1.0% | 25.0% | 100% |
cache 样本 id 与 `simulated.jsonl` 一致(900/900)。unavailable = 0。
### 结论
**缺数据**。无焦点层来源 B vs C 差 17.2pp;同时低置信召回未过 60%。不得上线。原「不可接」不沿用。
### 验证
- `python -m pytest tests/test_jev_intent_research.py -q`:11 passed
- 构建脚本无 `bank = {`;复核函数无 `re.search` 判标签
- 线上分类器文件未改