# Jev 意图分类样本(T0) ## 来源 A · 既有合成样本(提交) `synthetic.jsonl`,10 条。生产测试 `frontend/tests/rectification-turn-intent-classifier.test.ts` **没有** 10 条带期望输出的 `userMessage` 夹具;本文件用该测试的 `SHUFFLED_CHOICE` 焦点、采集题 prompt,以及测试里实际出现的两句 `userMessage`(`2016年3月入学`、`随便吧`)按分类器提示词写成带标签样本。 sha256: `79d53a958b3b42ed18c79e3bbcff4b31deb22b65eedcd89b39326a7fefc9b0e8` ## 来源 B · 真实会话(本地,不提交) 作用:校准锚,不是主测试集。最少 30 条;不足则代表性检验只报数不判定。 - 抽取 SQL(staging,`agentic_rectification_turns.user_message` 非空): ```sql 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.json`:20 例公开 AA holdout 走 `discriminating_event_probes` 出点选题;采集题用 `USER_COLLECT_QUESTION` / retry / `TARGETED_YEAR_PROMPT`。生成与复核各一次真实模型调用;复核看不到目标标签。 - 生成模型:`deepseek-flash`(temperature 0.85,prompt_version `gen-review-v3`) - 复核模型:`deepseek-flash`(temperature 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 为 unclear,answer_class 为 null - 同一句既明确否定当前采集题又补充了新的带时间经历:intent 仍为 answer_current_focus,answer_class 为 no has_new_dated_event: - 仅在同一句里除了回答当前问题之外,还提供了新的、带大概时间的经历时为 true - 单纯否定、单纯记不清、或只用带年月经历来直接回答当前采集题,都是 false - 无当前问题时,带年月的经历 → intent 为 provide_new_evidence,has_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) 用户回复: (用户回复) ``` 公开案例姓名不得出现在回复正文。