Files
Jyotisha/scripts/research/jev_intent_samples/README.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

8.1 KiB
Raw Blame History

Jev 意图分类样本(T0

来源 A · 既有合成样本(提交)

synthetic.jsonl10 条。生产测试 frontend/tests/rectification-turn-intent-classifier.test.ts 没有 10 条带期望输出的 userMessage 夹具;本文件用该测试的 SHUFFLED_CHOICE 焦点、采集题 prompt,以及测试里实际出现的两句 userMessage2016年3月入学随便吧)按分类器提示词写成带标签样本。

sha256: 79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8

来源 B · 真实会话(本地,不提交)

作用:校准锚,不是主测试集。最少 30 条;不足则代表性检验只报数不判定。

  • 抽取 SQLstagingagentic_rectification_turns.user_message 非空):
select
  t.id as turn_id,
  t.user_message,
  t.status as turn_status,
  t.created_at,
  c.status as case_status,
  f.question_id,
  f.expected_answer_schema,
  f.status as focus_status
from public.agentic_rectification_turns t
join public.agentic_rectification_cases c on c.id = t.case_id
left join public.agentic_rectification_conversation_focuses f
  on f.case_id = t.case_id
 and f.status = 'active'
where t.user_message is not null
  and length(btrim(t.user_message)) > 0
order by t.created_at desc
limit 500;
  • 本地路径(worktree 外,已 gitignore):G:/Ferti/Jyotisha/.cache/jev_intent/source_b.jsonl
  • 本机抽取条数:157(点选 17 / 采集 107 / 无焦点 33),gold 已全部人工标注,未用模型代标
  • 长度:P25=12 / 中位=21 / P75=28 / 最长=172
  • 标注耗时:约 40 分钟(runtime_intent 只作参考,85 条有反推 intent,不抄成 gold
  • 真值:执行方逐条人工标注。不得提交原文。

来源 C · 模型模拟语料(提交,主测试集)

simulated.jsonl。问题池 question_pool.json20 例公开 AA holdout 走 discriminating_event_probes 出点选题;采集题用 USER_COLLECT_QUESTION / retry / TARGETED_YEAR_PROMPT。生成与复核各一次真实模型调用;复核看不到目标标签。

  • 生成模型:deepseek-flashtemperature 0.85prompt_version gen-review-v3
  • 复核模型:deepseek-flashtemperature 0.0,同一家模型、不同提示、看不到标签)
  • 生成统计:{"generated": 1261, "accepted_raw": 1225, "accepted": 900, "disputed": 36, "dispute_rate": 0.028548770816812053, "generator": "deepseek-flash", "reviewer": "deepseek-flash", "prompt_version": "gen-review-v3", "seed": 20260919, "usage": {"generate_input_tokens": 553685, "generate_output_tokens": 18677, "review_input_tokens": 700669, "review_output_tokens": 29296, "generate_calls": 1389, "review_calls": 1318, "generate_cached": 53, "review_cached": 79}, "reselect_only": true}
  • 争议分层:{"by_layer": {"collect": 33, "choice": 3}, "by_intent": {"answer_current_focus": 33, "unclear": 3}}
  • 配额:{"choice": {"actual": 400, "target": 400, "max_share_delta": 0.045, "ok": true}, "collect": {"actual": 400, "target": 400, "max_share_delta": 0.0325, "ok": true}, "none": {"actual": 100, "target": 100, "max_share_delta": 0.0, "ok": true}}
  • 长度:{"n": 900, "p25": 16.0, "median": 20.0, "p75": 24.0, "min": 6.0, "max": 39.0}
  • 人设:{"choice_collect": {"rambling": 371, "answer_then_event": 94, "deny_then_event": 49, "terse": 51, "impatient_stop": 57, "ask_result": 51, "off_topic": 48, "dialect_netspeak": 79}, "all": {"rambling": 407, "answer_then_event": 94, "deny_then_event": 49, "terse": 71, "impatient_stop": 63, "ask_result": 54, "off_topic": 53, "dialect_netspeak": 109}, "each_ge_40": true, "terse_dialect_share_all": 0.2, "terse_dialect_share_choice_collect": 0.1625, "min_choice_collect": 48}
  • 去重:{"n": 900, "unique": 825, "max_repeat": 5, "unique_ok": true, "repeat_ok": true}
  • sha256 simulated: 53f13012fdc8f3721335bbe2961edf8c506a2f705b62bd9d302fce83ce2ef88d
  • sha256 disputed: e80c5cd69c521a099d743e4a4632ad6bc103c3b5a505f5b376a7c9cebedb7646
  • 问题池条数(点选题):103

生成提示原文

系统:你在模拟一位真人用户,正在做出生时间校正问答。只输出用户会打的那句话,不要解释,不要加引号,不要输出 JSON。

用户提示模板示例:

当前问题:
2023 年前后,工作状态是否出现明显变化?

选项:
- A. 这段时间没有明显变化(对应态度:no)
- B. 记不清当时的情况(对应态度:unsure)
- C. 变化明显而且时间吻合(对应态度:yes)
- D. 有变化但程度比较弱(对应态度:weak_yes)

你必须体现的语义(不要写出这些标签名,不要解释标签):
- 这句话的作用:这句话是在直接回答当前这道题,不是另起一件无关的事,不是要求停止整套校正,也不是在问结果。
- 对当前问题的态度:明确否定当前问题:没有发生、没有变化、这方面没什么。不要再补一句「其实也有一点」。
- 是否另说一件带年月的新经历:不要另说一件带年份或月份的新经历。若当前是采集题且态度是肯定或弱肯定,可以在回答里带上这件事本身的年月,那是在答当前题,不是另说一件;这种情况下也必须出现四位数字年份。若不是采集题的肯定回答,不要写任何 19xx / 20xx 年份。


人设:口语啰嗦,会绕半句再落到要点,但仍要把必需要素说清楚。少用「嗯/啊/emmm」。

硬约束:
- 只输出用户会打的那句话
- 字数约 16–28 个汉字(含标点),不要明显超出
- 不得逐字复述上面的选项原文
- 不得出现真实姓名、地名、学校名、公司名、医院名、单位名
- 不要用「有的 / 发生了 / 就是那段 / 没这回事」这种套话,写得像真人随手打的
- 需要带时间时,用大概年份或年月,事件用普通生活经历

复核提示原文

系统:你只做出生时间校正当前轮的意图分类。不回答用户,不修改状态。只输出一个 JSON 对象,不要解释。

用户提示模板示例:

根据当前问题和用户回复分类。看不到任何预设标签。

intent 只能是:
- answer_current_focus:用户在回答当前问题
- provide_new_evidence:没有回答当前问题,只补充了一件带大概年或月的经历
- stop_rectification:明确要求停止整个校正;说当前这件事没发生不是停止
- ask_about_result:在问结果、范围、候选分钟或好了没
- unclear:以上都不成立,或混在一起无法单选

answer_class
- 仅当 intent 是 answer_current_focus 时非空,否则必须为 null
- 点选题:按选项 label 的含义选 yes / weak_yes / no / unsure,不要按 A/B/C/D 位置猜
- 采集题:没有/没发生/这方面没什么 → no;记不清/不记得/忘了/想不起来/以后再说 → unsure;
  用带大概年月的经历直接回答当前采集题 → yes(程度弱则为 weak_yes)
- 不要把「没有」或「记不清」标成 yes
- 采集题若既没有否定、也没有记不清、也没有带年月经历 → intent 为 unclearanswer_class 为 null
- 同一句既明确否定当前采集题又补充了新的带时间经历:intent 仍为 answer_current_focusanswer_class 为 no

has_new_dated_event
- 仅在同一句里除了回答当前问题之外,还提供了新的、带大概时间的经历时为 true
- 单纯否定、单纯记不清、或只用带年月经历来直接回答当前采集题,都是 false
- 无当前问题时,带年月的经历 → intent 为 provide_new_evidencehas_new_dated_event 为 true

只输出:
{"intent":"...","answer_class":"yes"|"weak_yes"|"no"|"unsure"|null,"has_new_dated_event":true|false}


当前问题:
2023 年前后,工作状态是否出现明显变化?

选项:
- A. 这段时间没有明显变化 (answer_class=no)
- B. 记不清当时的情况 (answer_class=unsure)
- C. 变化明显而且时间吻合 (answer_class=yes)
- D. 有变化但程度比较弱 (answer_class=weak_yes)

用户回复:
(用户回复)

公开案例姓名不得出现在回复正文。