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
相关产品推荐
相关产品推荐

