Make EasyCom adjudication resumable

This commit is contained in:
Xin Wang
2026-09-15 03:25:12 +08:00
parent 31d3fc1757
commit e2c305facc
3 changed files with 443 additions and 53 deletions

View File

@@ -118,6 +118,30 @@ python3 adjudicate_easycom_eot_int_candidates.py \
--allow-external-transcript-upload
```
For SiliconFlow, keep the same API-key environment variable and select its
OpenAI-compatible endpoint explicitly:
```bash
python3 adjudicate_easycom_eot_int_candidates.py \
--input reports/easycom_entry_int_sessions1_3_v14/easycom_eot_int_candidates.jsonl \
--output reports/easycom_entry_int_sessions1_3_v14/easycom_eot_int_deepseek.jsonl \
--base-url https://api.siliconflow.cn/v1 \
--model deepseek-ai/DeepSeek-V4-Flash \
--allow-external-transcript-upload
```
The default request batch remains 8. If a returned batch violates the strict
label schema, the adjudicator isolates the bad record by recursively splitting
8 to 4, 2, and 1. Each successful leaf batch is atomically recorded in
`OUTPUT.checkpoint.json`; rerunning the identical command resumes from that
checkpoint and does not request completed passes again. A singleton that still
fails after `--max-retries` is written to `OUTPUT_STEM_pending.jsonl` for manual
relabeling, while the remaining candidates continue. Provider/network failure
does not create a semantic pending item: the command stops with its checkpoint
intact and the identical command resumes later. Use `--checkpoint` or
`--pending-output` to override the derived paths. `--overwrite` intentionally
starts a fresh run instead of resuming.
DeepSeek sees candidate source, structured timing, per-speaker activity, and
transcript together. It returns one of `POSITIVE`, `HARD_NEGATIVE`, or
`EXCLUDE`; positives additionally receive