Claude Batch 跑完统计成功 9800 条,剩 200 条的 result.type 是 errored,error.type 写着 overloaded_error,整批重跑会重复计费,只想补失败的那部分。
一开始怀疑是「原始 custom_id 没留 无法定位输入」,查了一圈,方向不对。
排查方向其实有限,先把可能性排一排。批次内单条失败不影响整批状态。少数情况下是失败原因多是瞬时过载。
少数情况下是重跑时把成功结果也一起提交了。
从结果里筛出 errored 的 custom_id
python pick_errors.py --results results.jsonl --out ids.txt
接着按 id 从原始输入抽行生成补跑文件
python pick_by_id.py --src batch.jsonl --ids ids.txt --out retry.jsonl
只提交补跑文件
python submit_batches.py --file retry.jsonl --out retry_id.json
剩下的就是合并两批结果并按 custom_id 去重
python merge_results.py --a results.jsonl --b retry_results.jsonl --out final.jsonl
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
别只看报错消失,验证要多做一步。补跑批次成功,合并后总条数等于原始 10000,custom_id 无重复,失败数为零。
失败行的 error 里通常带可重试标记,先按这个字段分组,不可重试的挑出来人工看。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
