Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
143 lines
8.9 KiB
Markdown
143 lines
8.9 KiB
Markdown
# 进度 · 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` 判标签
|
||
- 线上分类器文件未改
|
||
|
||
## 修复轮 2(2026-09-19,`codex/rectification-jev-intent-research-fix2-20260919`)
|
||
|
||
任务书:`TASK-rectification-jev-intent-classifier-research-fix2-20260919.md`。**0 token**:从 `.cache/jev_intent/jev_runs_v2.json` 聚合已跑结果,未重造语料、未重跑模型。
|
||
|
||
补进报告的三组数(来源 B 157 条):
|
||
|
||
| 范围 | n | Jev intent | 现行 Flash intent | Jev 高置信错误 | Jev 低置信召回 | Jev 自洽 |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| 全集 | 157 | 91.1% | 89.2% | **6.4%** | 24.1% | 96.2% |
|
||
| 点选 | 17 | 94.1% | 88.2% | 0.0% | 66.7% | 94.1% |
|
||
| 采集 | 107 | 94.4% | 95.3% | 5.6% | 18.2% | 99.1% |
|
||
| 无焦点 | 33 | 78.8% | **69.7%** | **12.1%** | 20.0% | 87.9% |
|
||
|
||
无焦点层 7 条 Jev 错全是 `unclear → answer_current_focus`。现行在无焦点上更低(69.7%),10 条错里 5 条同样是 `unclear → answer_current_focus`。说明 78.8% 主要是这 33 条难,不是单 Jev 不行。
|
||
|
||
采集层相对门槛改为「不可判(复核与对照同源)」。限制三节已写入报告。结论仍 **缺数据**,不上线。未立 BUG。
|
||
|
||
## 关单(2026-09-19,产品拍板)
|
||
|
||
fix2(`507ef959`)验收通过后产品拍板 **关单**:Jev 不接管校正意图分类、不影子双跑、不再造语料。09-15「分类只用贵模型」口径维持。依据:真人 157 条上 Jev 与线上 Flash 的 intent 准确率在样本量能解释的范围内(91.1% vs 89.2%),无焦点层两边同一错模式;挡住上线的是 Jev 置信度不可用(高置信错误全集 6.4% / 无焦点 12.1% > 3%,低置信召回 24%),再花 token 改不了置信度校准。
|