主力业务切到微调模型之后,想把离线跑批也一起换过去,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 不支持的字样。

提醒一点。微调产物和端点的兼容性不是一一对应,先拿单条请求确认,再决定跑批用哪个端点,整批提交失败既费时间也看不出是哪条的问题。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189