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

OpenAI Node.js库更新后route.ts代码适配问题求助

适配OpenAI Node.js v4+版本的代码修改方案

你的错误源于OpenAI Node.js库在v4版本后完成了API重构,移除了Configuration和OpenAIApi这两个导出成员,以下是修改后的完整代码:

import { auth } from "@clerk/nextjs";
import { NextResponse } from "next/server";
import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

export async function POST(req: Request) {
  try {
    const { userId } = auth();
    const body = await req.json();
    const { messages } = body;

    if (!userId) {
      return new NextResponse("Unauthorized", { status: 401 });
    }

    if (!openai.apiKey) {
      return new NextResponse("OpenAI API Key not configured", { status: 500 });
    }

    if (!messages) {
      return new NextResponse("Messages are required", { status: 400 });
    }

    const response = await openai.chat.completions.create({
      model: "gpt-3.5-turbo",
      messages,
    });

    return NextResponse.json(response.choices[0].message);
  } catch (error) {
    console.log("[CONVERSATION_ERROR]", error);
    return new NextResponse("Internal error", { status: 500 });
  }
}

关键修改点说明:

  • 导入逻辑调整:不再导入Configuration和OpenAIApi,直接导入默认导出的OpenAI类
  • 实例化方式更新:直接创建OpenAI实例,将API密钥作为构造函数参数传入,无需单独创建配置对象
  • 接口调用路径变更:原createChatCompletion方法改为chat.completions.create,对应v4版本统一的资源路径风格
  • 响应数据读取简化:原response.data.choices[0].message改为response.choices[0].message,新版本响应对象直接包含数据字段,不再嵌套在data属性下
  • 密钥校验逻辑调整:从configuration.apiKey改为openai.apiKey,直接从实例读取配置的密钥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:06:25