这类问题我又碰上了一次。两万条 Batch 跑完,output 文件里只有 1.8 万条成功记录,剩下 2000 条落在 error 文件里,脚本按总行数算准确率,指标直接被拉低五个点。
第一反应是「custom_id 在两份文件里重复出现」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。失败请求单独落在 error_file_id;output 只包含成功行 不是全量;重跑时把成功行又提交了一遍。
上来先把两份结果都下载下来
curl https://api.openai.com/v1/files/$OUT_ID/content -H "Authorization: Bearer $KEY" -o out.jsonl
再往下统计成功与失败的差集
python merge_batch.py --out out.jsonl --err err.jsonl --report
只对失败行做二次提交
python retry_batch.py --failed failed.jsonl --out retry.jsonl
末了合并时按 custom_id 去重
python merge_batch.py --out out.jsonl --err err.jsonl --dedupe --final final.jsonl
这台环境是别人交接的,不少默认值被动过,只能一项项核。
改完先别撤,确认这几项。final.jsonl 行数与原始输入一致,custom_id 无重复,准确率按成功子集单独统计。
这里还有个坑。Batch 的成功与失败是两份文件,任何按单文件行数算的指标都会偏,合并时一定按 custom_id 对齐。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
