按文档准备训练文件准备上传,接口返回 400,提示 no such file,换成绝对路径仍报同样的错,文件在资源管理器里明明存在。

一开始怀疑是「purpose 必须明确写成 fine-tune,缺省不合法」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。Windows 路径的反斜杠被转义成了非法字符。另一种情况是上传接口要求 multipart 的字段名是 file。

还有一种情况,文件被别的程序占用,读句柄拿不到内容。

第一件事是用正斜杠路径并确认文件存在

python -c "import os;print(os.path.exists('data/train.jsonl'))"

然后按 multipart 字段名上传并指定用途

curl https://api.openai.com/v1/files -H "Authorization: Bearer $KEY" -F purpose=fine-tune -F file=@data/train.jsonl

上传后校验行数与格式

python -c "import json;[json.loads(l) for l in open('data/train.jsonl')];print('ok')"

等前面都确认过,再把文件复制到工作目录再试,排除路径问题

python -c "import shutil;shutil.copy('data/train.jsonl','./train.jsonl')"

恢复的判定其实很直接。返回体里 status 是 processed,id 以 file- 开头,创建微调任务时能被接受,训练日志开始输出 loss。

提醒一点。每行必须是完整的 JSON 对象,末尾不能有逗号,文件里多一个空行也会让校验失败,而报错往往只说文件不可用。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189