You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:55:28