Use prompt history for online mining records

This commit is contained in:
wuyang6
2026-05-14 17:42:08 +08:00
parent f1dc7e4b91
commit 87dd67c76a
10 changed files with 219 additions and 97 deletions
@@ -31,8 +31,8 @@
流程:
1. 整理 `request_ids``dataset_label``target``complex`日期
2. 如果没有日期,先按近 48 小时查;查不到要问用户补日期
1. 整理 `request_ids``dataset_label``target``complex`时间范围
2. 如果用户说“一周内/最近 7 天”,传 `lookback_days: 7`;如果给起止日期,传 `date_from/date_to`;如果只给某一天,传 `date`
3. 调用 `build_online_records.py`
4. 检查返回的 `summaries`
- `query`
@@ -46,6 +46,9 @@
- `output/records.csv`
- 用户要求训练/评测时,再导出 `training.jsonl` / `eval_planning.csv`
`prev_session` 以前处理 `promptModel``[对话历史]` 为准。不要用主表 `session_id`
重建模型输入历史;它更适合排查同设备/同链路日志,不适合作为训练/评测 prompt 历史。
## 分支 B:基于线上问题补充生成数据
适用表达:
@@ -13,7 +13,7 @@
| `query` | 当前 query。 |
| `domain` | 最终 domain。 |
| `func` / `func_name` | 最终 function 或函数名。 |
| `session_id` | 会话 id用于后续重建多轮。 |
| `session_id` | 主表会话 id用于排查,不等同于 planning 模型输入 session。 |
| `device_id` | 设备 id。 |
| `device` | 设备 JSON,包含设备类型、经纬度等。 |
| `text` / `display_text` / `to_speak` | 小爱回复文本,可作为上一轮 tts。 |
@@ -90,10 +90,10 @@ join 后优先使用:
| `source.timestamp` | 优先主表 `timestamp`,缺失时用前处理表 `timestamp` |
| `turn.query` | 优先前处理 `responseBoby.nodes.0.core.query.query`,缺失时用主表 `query` |
| `turn.timestamp` | 同 `source.timestamp` |
| `prev_session` | 主表同 `session_id` 且 timestamp 早于当前请求的最多 10 轮,按时间升序排列 |
| `prev_session[].query` | 主表历史轮 `query` |
| `prev_session[].tts` | 主表历史轮 `to_speak/text/display_text`,没有时保留空字符串 |
| `prev_session[].timestamp` | 主表历史轮 `timestamp` |
| `prev_session` | 前处理 `promptModel``[对话历史]`,这是 planning 模型真实看到的 session |
| `prev_session[].query` | `[对话历史]` 中的 `用户:` |
| `prev_session[].tts` | `[对话历史]` 中紧随其后的 `小爱:`,没有内容时保留空字符串 |
| `prev_session[].timestamp` | 线上 prompt 不带历史时间戳,工具按当前轮 timestamp 往前每轮 1 分钟补齐,保证顺序和 5 分钟拼接约束 |
| `context` | 先置 `{}`,后续由专用工具补充 |
| `label.dataset_label` | 用户输入的批次标签 |
| `label.target` | 用户输入 `target`;否则依次用前处理 `code``planningOriginalResult`、主表 `llm_agent_info.agentType`、主表 `domain` 推断 |
@@ -104,8 +104,11 @@ join 后优先使用:
当用户说“把这个 rid 的数据拉下来作为测试数据”时:
1. 如果用户没给日期,先用近 48 小时查;查不到就问用户日期,不要继续生成空数据
2. 调用 `build_online_records.py`,传 `request_ids``dataset_label`、必要时传 `target/complex/date`
1. 如果用户给“一周内/最近 7 天”,传 `lookback_days: 7`;给起止日期时传 `date_from/date_to`;只给某一天时传 `date`
2. 调用 `build_online_records.py`,传 `request_ids``dataset_label`、必要时传 `target/complex/date/lookback_days/date_from/date_to`
3. 检查返回的 `summaries[].target_source``prev_session_count`
4. 展示 query、target、target_source、prev_session_count 给用户确认。
5. 产物默认在当前会话 `output/records.jsonl``output/records.csv`
注意:不要用主表 `session_id` 拼接 `prev_session`。中控 planning 模型的输入历史以
前处理表 `dispatchLargeModelInput.promptModel` 中的 `[对话历史]` 为准。