调用GPT-3.5 API时遇openai模块导出成员错误求助
OpenAI SDK 导入报错原因及修复方案
报错原因
你遇到的问题是因为OpenAI官方SDK从v3版本升级到v4版本后,API结构发生了根本性变化——原来的Configuration、OpenAIApi类在v4版本中已被移除,所以会提示"无导出成员"的错误。
修复方案
直接适配v4版本的SDK写法即可(官方已停止v3维护,推荐使用新版),修改后的代码如下:
import { OpenAI } from "openai"; import { auth } from "@clerk/nextjs"; import { NextResponse } from "next/server"; 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("未授权", { status: 401 }); } if (!openai.apiKey) { return new NextResponse("OpenAI API Key 未配置", { status: 500 }); } if (!messages) { return new NextResponse("消息内容为必填项", { 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("服务器内部错误", { status: 500 }); } }
关键改动说明
- 导入对象从
{ Configuration, OpenAIApi }改为{ OpenAI } - 初始化方式简化为直接实例化
OpenAI类,传入API密钥 - 聊天接口调用从
openai.createChatCompletion改为openai.chat.completions.create - 响应数据路径从
response.data.choices[0].message改为response.choices[0].message
备选方案(不推荐)
如果一定要沿用旧版v3的代码写法,可以降级安装v3版本的SDK:
npm install openai@3.3.0
内容的提问来源于stack exchange,提问作者cameron couper
相关产品推荐
相关产品推荐

