# DPODataGen 独立于 `data/benchmark/` 的 DPO 训练数据生成器。 当前版本提供: - `40` 个与 benchmark 场景族隔离的新训练场景 - `train/dev` 场景级隔离 - 生成 `episode JSON` - 生成 `prompt + chosen + rejected` 的 `pairs.jsonl` - `chosen_source=rule`,`rejected_source=constructed` - DPO 专用短 prompt:按任务类型裁剪日志,而不是把全量事件直接塞进训练样本 - 数据审计脚本与后续模型出题导出脚本 ## 运行 ```bash python -m DPODataGen.run_generate_dpo --split both --overwrite ``` 小样本 smoke: ```bash python -m DPODataGen.run_generate_dpo --split both --max-episodes 20 --overwrite ``` 长度审计: ```bash python DPODataGen/audit_dataset.py --root data ``` 导出给强/弱模型批量生成回答的任务: ```bash python DPODataGen/export_model_tasks.py --split train --output train_tasks.jsonl python DPODataGen/export_model_tasks.py --split dev --output dev_tasks.jsonl ``` 调用强/弱模型批量作答: ```bash python DPODataGen/collect_api_answers.py --input train_tasks.jsonl --output strong_train_answers.jsonl --model --api-base --api-key --workers 4 --max-tokens 4096 python DPODataGen/collect_api_answers.py --input train_tasks.jsonl --output weak_train_answers.jsonl --model --api-base --api-key --workers 4 --max-tokens 4096 --no_thinking ``` 把模型回答回填成最终 preference pairs: ```bash python DPODataGen/assemble_preference_pairs.py --split train --input-root data_dpo_v2 --strong-answers strong_train_answers.jsonl --weak-answers weak_train_answers.jsonl --output final_train_pairs.jsonl --report final_train_pairs_report.json ``` ## 输出 - `data/train_pref_v1/episodes/*.json` - `data/train_pref_v1/pairs.jsonl` - `data/train_pref_v1/summary.json` - `data/dev_pref_v1/episodes/*.json` - `data/dev_pref_v1/pairs.jsonl` - `data/dev_pref_v1/summary.json` ## 注意 - 这版先落地 `rule chosen + constructed rejected`。 - `strong-model chosen`、`actual-model-error rejected`、`human curated pairs` 可以在此目录结构上继续增量扩展。