Improve online mining record conversion
This commit is contained in:
@@ -16,11 +16,36 @@
|
||||
3. 用 `elk_search_cases.py` 拉候选。
|
||||
4. 用 `elk_join_request_logs.py` 补全 main/pre_processing 字段。
|
||||
5. 展示小批候选给用户 review。
|
||||
6. 用户确认后,用 `build_dataset_draft.py` 转 dataset draft。
|
||||
7. 用 `product-data` 脚本 normalize、validate、export。
|
||||
6. 用户确认后,优先用 `build_online_records.py` 直接生成 canonical records 和流通表格。
|
||||
7. 只有需要人工查看 draft 或混合生成数据时,才用 `build_dataset_draft.py` 转 dataset draft,再接 product-data。
|
||||
|
||||
这个分支不生成新 query。
|
||||
|
||||
### rid 快速转样本流程
|
||||
|
||||
适用表达:
|
||||
|
||||
- “把这个 rid 的数据拉下来,作为测试数据”
|
||||
- “这几个 request_id 转成我们的元数据”
|
||||
- “线上命中的这批样本直接导出”
|
||||
|
||||
流程:
|
||||
|
||||
1. 整理 `request_ids`、`dataset_label`、`target`、`complex`、日期。
|
||||
2. 如果没有日期,先按近 48 小时查;查不到要问用户补日期。
|
||||
3. 调用 `build_online_records.py`。
|
||||
4. 检查返回的 `summaries`:
|
||||
- `query`
|
||||
- `target`
|
||||
- `target_source`
|
||||
- `prev_session_count`
|
||||
- `main_domain`
|
||||
- `planning_result`
|
||||
5. 告诉用户输出路径:
|
||||
- `output/records.jsonl`
|
||||
- `output/records.csv`
|
||||
- 用户要求训练/评测时,再导出 `training.jsonl` / `eval_planning.csv`
|
||||
|
||||
## 分支 B:基于线上问题补充生成数据
|
||||
|
||||
适用表达:
|
||||
@@ -51,4 +76,3 @@ tts:
|
||||
```
|
||||
|
||||
不要默认展示完整 prompt。prompt 很长时只展示命中片段。
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
- `session_id`、`device_id`、设备类型。
|
||||
- `intention.intent_arbitrator_info.llm_agent_info.agentType`。
|
||||
|
||||
## pre_processing:`pre-processing-info*`
|
||||
## pre_processing:`pre-processing*`
|
||||
|
||||
适合拿前处理和规划模型判断过程。
|
||||
|
||||
@@ -65,6 +65,13 @@
|
||||
main.request_id == pre_processing.requestId
|
||||
```
|
||||
|
||||
精确查询时优先使用 keyword 字段:
|
||||
|
||||
```text
|
||||
main.request_id.keyword
|
||||
pre_processing.requestId.keyword
|
||||
```
|
||||
|
||||
join 后优先使用:
|
||||
|
||||
- query:优先 `pre_processing` 的 query,缺失时用 `main.query`。
|
||||
@@ -72,3 +79,33 @@ join 后优先使用:
|
||||
- tts:优先 `main.to_speak`,再 `main.text` 或 `display_text`。
|
||||
- label 参考:模型输出用 `pre_processing.planning_result`,线上最终结果用 `main.domain` / `main.func`。
|
||||
|
||||
## 转 canonical record 的字段映射
|
||||
|
||||
`build_online_records.py` 固定执行以下映射,模型不要手写转换逻辑:
|
||||
|
||||
| canonical 字段 | 来源 |
|
||||
| --- | --- |
|
||||
| `source.type` | 固定 `online` |
|
||||
| `source.request_id` | 主表 `request_id` 或前处理表 `requestId` |
|
||||
| `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` |
|
||||
| `context` | 先置 `{}`,后续由专用工具补充 |
|
||||
| `label.dataset_label` | 用户输入的批次标签 |
|
||||
| `label.target` | 用户输入 `target`;否则依次用前处理 `code`、`planningOriginalResult`、主表 `llm_agent_info.agentType`、主表 `domain` 推断 |
|
||||
| `dimensions.complex` | 用户输入,默认 false |
|
||||
| `meta` | 保存 `session_id/device_id/device/main_domain/main_func/planning_result/planning_code/hit_rules/candidate_domains/target_source` |
|
||||
|
||||
## 按 rid 转数据的固定流程
|
||||
|
||||
当用户说“把这个 rid 的数据拉下来作为测试数据”时:
|
||||
|
||||
1. 如果用户没给日期,先用近 48 小时查;查不到就问用户日期,不要继续生成空数据。
|
||||
2. 调用 `build_online_records.py`,传 `request_ids`、`dataset_label`、必要时传 `target/complex/date`。
|
||||
3. 检查返回的 `summaries[].target_source` 和 `prev_session_count`。
|
||||
4. 展示 query、target、target_source、prev_session_count 给用户确认。
|
||||
5. 产物默认在当前会话 `output/records.jsonl` 和 `output/records.csv`。
|
||||
|
||||
Reference in New Issue
Block a user