Node.js调用OpenAI Files接口遇400/415错误,求解决方案
解决OpenAI API文件上传415/400错误
问题背景
我已经折腾了好几个小时,先后测试过CSV、JSON格式的数据,但始终碰到415或400错误;官方文档和AI助手在我尝试上传数据训练模型的过程中完全帮不上忙。
常见原因及修复方案
- Content-Type设置错误:手动指定
multipart/form-data的边界值,很可能和FormData实际生成的不一致,应该让axios自动处理请求头,不要硬编码Content-Type。 - 数据格式不符合要求:OpenAI微调模型要求的是**JSONL(JSON Lines)**或特定格式的CSV,普通JSON文件不支持。CSV必须严格包含
prompt和completion两列;JSONL要求每行是一个独立的JSON对象,包含这两个字段。 - 文件读取异常:确认文件路径正确,Node.js进程有足够权限访问目标文件。
- 缺少必填参数:上传用于微调的文件时,必须添加
purpose=fine-tune的表单参数。 - API权限问题:检查API密钥是否有效,且拥有微调模型的权限。
修正后的代码示例
const FormData = require('form-data'); const fs = require('fs'); const axios = require('axios'); const API_KEY = 'MY_API_KEY'; const formData = new FormData(); // 替换为符合格式要求的JSONL或CSV文件路径 formData.append('file', fs.createReadStream('./training_data.jsonl'), { filename: 'training_data.jsonl' }); // 必须指定purpose为fine-tune,用于模型训练 formData.append('purpose', 'fine-tune'); axios.post('https://api.openai.com/v1/files', formData, { headers: { // 让form-data自动生成请求头,避免手动指定boundary出错 ...formData.getHeaders(), "Authorization": "Bearer " + API_KEY } }) .then(response => { console.log('文件上传成功:', response.data); }) .catch(err => { console.error('上传失败:', err.response?.data || err.message); });
正确的训练数据格式示例
JSONL格式(推荐)
{"prompt": "用户问:如何煮米饭?", "completion": "回答:将大米洗净后加1.2倍水,用电饭锅煮熟即可。"}
{"prompt": "用户问:雨天出门要注意什么?", "completion": "回答:记得携带雨具,避免在低洼处行走,注意道路湿滑。"}
CSV格式
prompt,completion
用户问:如何煮米饭?,回答:将大米洗净后加1.2倍水,用电饭锅煮熟即可。
用户问:雨天出门要注意什么?,回答:记得携带雨具,避免在低洼处行走,注意道路湿滑。
你提供的以下文本示例仅为普通文件上传演示,不能用于模型训练:
This is a text file for the OpenAI API. It contains sample data for testing purposes. Here is another line. And another.
内容的提问来源于stack exchange,提问作者SimplePhotos
相关产品推荐
相关产品推荐

