主力业务切到微调模型之后,想把离线跑批也一起换过去,batch 文件里写同一个 ft: 名字,任务直接 failed,error 文件里写 model not supported for this endpoint。
排查方向其实有限,先把可能性排一排。部分微调产物只开放 chat 接口,batch 端点不在支持范围;新版强化学习类微调产物只能走 responses,chat 反而不可用;批量文件里混着旧模型名,服务端按整批校验后拒绝;接口支持范围随模型快照变化,旧快照可能被移出白名单。
先用单条 chat 请求确认这个模型可用
curl https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"ft:gpt-4o-mini:myorg:abc123:xyz","messages":[{"role":"user","content":"hi"}]}'
batch 文件里把模型统一改成基础模型
jq -c '.body.model="gpt-4o-mini"' batch.jsonl > batch_safe.jsonl
然后换 responses 端点试同一个微调模型
curl https://api.openai.com/v1/responses -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"ft:gpt-4o-mini:myorg:abc123:xyz","input":"hi"}'
筛出批次里残留的 ft 模型行
jq -r 'select(.body.model|startswith("ft:"))|.custom_id' batch.jsonl | wc -l
改完先别撤,确认这几项。batch 任务能进入 in_progress 并最终 completed,error_file 为空,单条 responses 请求返回 200,日志里不再出现 endpoint 不支持的字样。
提醒一点。微调产物和端点的兼容性不是一一对应,先拿单条请求确认,再决定跑批用哪个端点,整批提交失败既费时间也看不出是哪条的问题。这类问题最好一次改到位,反复小改反而容易把原因搅混。
