姊妹篇:方法论 → [BAD_CASE_INSIGHTS.md](BAD_CASE_INSIGHTS.md);仅报告命令 → [BAD_CASE_REPORT.md](BAD_CASE_REPORT.md)。[README.md](README.md) 为全文档索引。
- 跑完
dj-process(或bash … run_bad_case_pipeline.sh smoke|full)。 **bash demos/agent/scripts/run_bad_case_pipeline.sh report ./outputs/.../processed.jsonl** → 打开生成的**processed_bad_case_report.html**。说明见**BAD_CASE_REPORT.md**。
- 在仓库根目录使用含
dj-process环境,例如:cd /path/to/data-juicer uv venv && source .venv/bin/activate uv pip install -e ".[ai_services]" # 全量菜谱需要 LLM;仅 smoke 可只装 -e .
- 确认:
which dj-process指向当前环境,而非 Homebrew 全局旧包(见minimal_configs/README.md)。
在仓库根目录执行:
| 目的 | 命令 |
|---|---|
| HTML 报告(校验 + 图 + 表) | bash demos/agent/scripts/run_bad_case_pipeline.sh report ./outputs/agent_quality/processed.jsonl |
| 冒烟(无 API):pipeline + 后处理 + 自动报告 | bash demos/agent/scripts/run_bad_case_pipeline.sh smoke(SKIP_AUTO_REPORT=1 可关掉末段报告) |
| 仅后处理(verify / 分位数 / cohort / slice,不调 matplotlib) | bash … postprocess … |
| 写 P95 校准 JSON(第二遍跑 mapper 前) | bash demos/agent/scripts/run_bad_case_pipeline.sh calibrate-and-slice ./outputs/agent_quality/processed.jsonl |
| 全量菜谱(多 LLM,贵/慢) | bash demos/agent/scripts/run_bad_case_pipeline.sh full |
| 单元测试(不跑 dj-process) | bash demos/agent/scripts/run_bad_case_pipeline.sh unittest |
输出位置可用环境变量覆盖:SMOKE_OUT、FULL_OUT、CAL_OUT(见脚本内 usage)。
bash demos/agent/scripts/run_bad_case_pipeline.sh smoke
- 配置:
demos/agent/minimal_configs/09_bad_case_smoke.yaml - 导出:
./outputs/agent_bad_case_smoke/processed.jsonl - 检查:
__dj__meta__.agent_bad_case_tier/agent_bad_case_signals(或合并_stats.jsonl后脚本读取)
- 用
jq抽查(见BAD_CASE_INSIGHTS.md文末)。
- 配置 API:按项目惯例设置各 LLM 算子所需环境变量 / 密钥。
bash demos/agent/scripts/run_bad_case_pipeline.sh full
- 或:
dj-process --config demos/agent/agent_interaction_quality_analysis.yaml
- (可选)两阶段校准:
- 第一轮导出后:
bash demos/agent/scripts/run_bad_case_pipeline.sh calibrate-and-slice ./outputs/agent_quality/processed.jsonl - 在 YAML 的
agent_bad_case_signal_mapper中打开auto_calibrate_thresholds与calibration_json_path(脚本会打印示例路径)。 - 对同结构数据再跑第二轮
dj-process。
- 阅读
__dj__meta__.agent_insight_llm(第 10 步成功时);校验可加:python demos/agent/scripts/verify_bad_case_export.py --input ... --require-insight
详见 **demos/agent/scripts/README.md**(各 Python 脚本参数与示例)。
见 **demos/agent/PERFORMANCE_LLM.md**:np / num_proc / turbo、try_num、max_round、sampling_params、换小模型、收窄 agent_insight_llm_mapper 等。
- 主字段为
**__dj__meta__**(不是meta),除非设置**keep_stats_in_res_ds: true**,否则默认不会出现在主processed.jsonl里,而在**processed_stats.jsonl**。 demos/agent/scripts/下分析脚本会自动把同目录的*_stats.jsonl按行合并后再读;菜谱 09 与 agent_interaction_quality_analysis.yaml 已设keep_stats_in_res_ds: true,便于jq单文件查看。
- smoke 导出 0 条、verify 报
got 0:若 YAML 里含language_id_score_filter且lang: "zh",FastText 标签可能不是字面"zh",会把 demo 全过滤掉。09_bad_case_smoke.yaml已去掉该算子;全量agent_interaction_quality_analysis.yaml仍保留,大语料上一般正常。 **lid.176.bin下载失败**:全量菜谱里的language_id_score_filter需要语言模型;可先跑01_normalize_only或换网络/手动放到~/.cache/data_juicer/models/(见minimal_configs/README.md)。- full 中途 API 失败:导出可能不完整;可用
verify_bad_case_export.py(不加--require-insight)检查 bad-case 字段是否已写出。 - 分位数为空:确认
copy_lineage_fields: true与usage_counter_mapper已跑,meta.total_tokens/meta.agent_request_model存在。