Azure OpenAI开发报错:AzureKeyCredential不是构造函数求助
解决Azure OpenAI中AzureKeyCredential不是构造函数的错误
开发可读取作品集的聊天机器人项目,采用Azure OpenAI GPT-3.5模型,已完成API密钥与端点配置。通过route.js文件中的GET请求测试API调用时,终端报错:TypeError: _azure_openai__WEBPACK_IMPORTED_MODULE_0__.AzureKeyCredential is not a constructor,尝试查阅官方文档、修改导入语法等方法后问题仍未解决。
原代码如下:
import { AzureCliCredential } from "@azure/identity"; import { OpenAIClient, AzureKeyCredential } from "@azure/openai"; import { NextResponse } from "next/server"; const endpoint = process.env.AZURE_OPENAI_ENDPOINT; const apiKey = process.env.AZURE_OPENAI_API_KEY; const model = process.env.AZURE_OPENAI_MODEL; export async function GET(req) { const client = new OpenAIClient(endpoint, new AzureKeyCredential(apiKey)); const messages = [ { role: "system", content: "You are a helpful assistant.", }, { role: "user", content: "Why is python such a popular coding language?", }, ]; const response = await client.getChatCompletions(model, messages, { maxTokens: 128, }); return NextResponse.json({ message: response.choices[0].message.content, }); }
解决方案
- 版本适配问题:@azure/openai v4及以上版本中,
AzureKeyCredential已从该包迁移至@azure/core-auth包,原导入路径不再有效。 - 调整导入语句:将
AzureKeyCredential的导入源改为@azure/core-auth,保留OpenAIClient从@azure/openai导入。 - 安装依赖:若项目未安装
@azure/core-auth,执行以下命令安装:npm install @azure/core-auth # 或使用yarn yarn add @azure/core-auth
修改后的完整代码:
import { AzureCliCredential } from "@azure/identity"; import { OpenAIClient } from "@azure/openai"; import { AzureKeyCredential } from "@azure/core-auth"; import { NextResponse } from "next/server"; const endpoint = process.env.AZURE_OPENAI_ENDPOINT; const apiKey = process.env.AZURE_OPENAI_API_KEY; const model = process.env.AZURE_OPENAI_MODEL; export async function GET(req) { const client = new OpenAIClient(endpoint, new AzureKeyCredential(apiKey)); const messages = [ { role: "system", content: "You are a helpful assistant.", }, { role: "user", content: "Why is python such a popular coding language?", }, ]; const response = await client.getChatCompletions(model, messages, { maxTokens: 128, }); return NextResponse.json({ message: response.choices[0].message.content, }); }
内容的提问来源于stack exchange,提问作者Ryan goh
相关产品推荐
相关产品推荐

