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

如何不访问文件系统向OpenAI API发送文件?已获取文件内容字符串

不通过文件系统向OpenAI API上传字符串内容的文件

要实现直接用字符串内容上传文件,核心是构造符合multipart/form-data格式的请求体——OpenAI API要求上传文件时必须包含文件名、文件类型等元信息,单纯的Readable流缺少这些关键参数,所以无法正常工作。以下是可行的实现方案:

方案1:用form-data库构造请求体(Node.js环境)

步骤1:安装依赖

确保已安装OpenAI SDK和form-data库:

npm install openai form-data

步骤2:实现代码

const { OpenAI } = require('openai');
const FormData = require('form-data');

const openai = new OpenAI({ apiKey: '你的API密钥' });

async function uploadStringAsFile() {
  // 你的文件内容字符串
  const fileContents = '这是要上传的文件内容,比如JSONL格式的训练数据';
  const formData = new FormData();

  // 将字符串作为文件添加到表单,指定文件名和内容类型
  // 这里以JSONL文件为例,根据你的文件类型调整contentType
  formData.append('file', fileContents, {
    filename: 'training_data.jsonl',
    contentType: 'application/jsonl'
  });
  // 指定文件用途,比如"fine-tune"
  formData.append('purpose', 'fine-tune');

  // 调用API上传文件
  const response = await openai.files.create({
    file: formData,
    purpose: 'fine-tune'
  });

  console.log('文件上传成功,文件ID:', response.id);
}

uploadStringAsFile().catch(console.error);

方案2:直接传入Buffer(简化版)

如果不想依赖form-data库,也可以将字符串转为Buffer,同时指定文件名和类型:

const { OpenAI } = require('openai');

const openai = new OpenAI({ apiKey: '你的API密钥' });

async function uploadBufferAsFile() {
  const fileContents = '你的文件内容字符串';
  // 将字符串转为Buffer
  const fileBuffer = Buffer.from(fileContents);

  const response = await openai.files.create({
    // 传入Buffer,同时指定文件名和Content-Type
    file: new Blob([fileBuffer], { type: 'application/jsonl' }),
    filename: 'training_data.jsonl',
    purpose: 'fine-tune'
  });

  console.log('文件上传成功,文件ID:', response.id);
}

uploadBufferAsFile().catch(console.error);

关键注意事项

  • 必须指定filename和contentType:OpenAI API需要这些信息解析文件类型,缺少会导致上传失败。
  • 按需调整contentType:比如文本文件用text/plain,CSV用text/csv,JSONL用application/jsonl等。
  • purpose参数要合法:比如用于微调填fine-tune,用于助手检索填assistants,需符合OpenAI API的要求。

内容的提问来源于stack exchange,提问作者Tekx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:23:08