Node.js配置Azure OpenAI遇401错误:API密钥问题求助
Node.js切换Azure OpenAI API异常排查方案
核心问题分析
你遇到的两个问题本质是SDK方法调用错误和配置参数未正确匹配Azure要求,以下是具体修复步骤:
1. 修正API调用方法
Azure OpenAI在官方Node.js SDK中,仍使用createChatCompletion方法,而非openai.ChatCompletion.create,后者属于错误的调用方式。
2. 调整配置与请求参数
配置项检查
确保Configuration中的参数完全符合Azure要求:
api_base必须是完整的Azure OpenAI端点(格式:https://{你的资源名称}.openai.azure.com/)api_version使用当前有效的版本(例如2024-02-15-preview,避免过时版本)- 确认
process.env.placeholder_azure_APIKEY已正确加载,可通过console.log(configuration.apiKey)验证是否获取到真实密钥
请求参数修正
调用createChatCompletion时,需将原model参数替换为engine,值为你在Azure门户中创建的部署名称(不是模型名,比如你部署了gpt-35-turbo,部署名可能是gpt-35-turbo-deploy)
3. 修复后的完整代码示例
const { Configuration, OpenAIApi } = require('openai'); const configuration = new Configuration({ apiKey: process.env.AZURE_OPENAI_API_KEY, api_type: "azure", api_base: "https://your-resource-name.openai.azure.com/", api_version: "2024-02-15-preview", }); const openai = new OpenAIApi(configuration); async function chatGPT(prompt, question, deploymentName) { try { const response = await openai.createChatCompletion({ engine: deploymentName, // 这里填Azure的部署名称 messages: [ { role: 'system', content: prompt }, { role: 'user', content: question } ] }); const completion = response.data.choices[0].message.content; return completion; } catch (error) { // 补充错误日志排查 console.error("请求错误:", error.response?.data || error.message); throw error; } }
4. 额外排查点
- 若仍报401,检查Azure门户中该API密钥是否绑定了正确的资源,且未被禁用
- 确认Node.js项目的环境变量是否正确注入,可直接打印
process.env.AZURE_OPENAI_API_KEY验证 - 检查网络环境是否有代理或防火墙拦截了请求,Azure OpenAI端点需要可正常访问
内容的提问来源于stack exchange,提问作者Gabriel Savonitti
相关产品推荐
相关产品推荐

