这个坑值得记一笔。用 Batch 接口跑两万条文案,官方按五折计费,实际账单只比实时调用低 18%,查下来 12% 的请求失败后走了实时接口重跑,按原价结算。
刚开始盯着「折扣只作用于成功的请求」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。失败项重跑走的是实时接口;batch 输出未对齐导致重复提交;统计时把两次往返算成了一折。
第一件事是统计失败条数与失败原因
python -c "import json;print(sum(1 for l in open('err.jsonl')))"
失败项二次提交 batch 而不是实时
python resubmit.py --only-failed --via batch
再往下按 custom_id 去重后再对账
python dedup_by_id.py --input merged.jsonl --out uniq.jsonl
末了把命中率与折扣率一起打进日报
python report.py --metrics batch_hit,discount
命令输出我都留了记录,免得改完记不清原来的值。
怎么算真的好了,看的是同一批现象。失败项全部回归 batch 通道,账单折扣达到 45% 以上,重复条目为零。
折扣是按成功请求算的,失败重跑的路径决定了最终省不省钱。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
