使用Azure OpenAI JavaScript SDK 2.0.0-beta.1时遇ResourceNotFound错误
问题:Azure OpenAI JavaScript SDK 2.0.0-beta.1 报404 Resource not found错误
我尝试使用最新版本的Azure OpenAI JavaScript SDK(2.0.0-beta.1)连接服务,但始终出现Resource not found错误,旧版本(1.0.0-beta.12)则完全正常。
环境配置
AZURE_OPENAI_ENDPOINT="https://xxx.openai.azure.com/" AZURE_OPENAI_API_KEY="xxxxyyyyxxxxyyyyxxxxyyyyxxxxyyyy" AZURE_OPENAI_CHAT_COMPLETION_MODEL_DEPLOYMENT_ID="gpt-4o" AZURE_OPENAI_API_VERSION="2024-04-01-preview"
客户端创建代码
azureOpenAIClient = new AzureOpenAI({ baseURL: process.env.AZURE_OPENAI_ENDPOINT, // apiKey: process.env.AZURE_OPENAI_API_KEY, (已尝试取消注释) deployment: process.env.AZURE_OPENAI_CHAT_COMPLETION_MODEL_DEPLOYMENT_ID, apiVersion: process.env.AZURE_OPENAI_API_VERSION, });
调用代码
const messages: OpenAI.ChatCompletionMessageParam[] = [ { role: 'system', content: systemMessage }, { role: 'user', content: userMessage }, ]; const result = await azureOpenAIClient.chat.completions.create( { messages, model: '', response_format: { type: jsonOutput ? 'json_object' : 'text' }, }, {}, ); let response = ''; for await (const choice of result.choices) { response += choice.message?.content; }
更新
堆栈跟踪信息:
NotFoundError: 404 Resource not found at APIError.generate (webpack-internal:///(action-browser)/../../node_modules/openai/error.mjs:67:20) at AzureOpenAI.makeStatusError (webpack-internal:///(action-browser)/../../node_modules/openai/core.mjs:304:65) at AzureOpenAI.makeRequest (webpack-internal:///(action-browser)/../../node_modules/openai/core.mjs:347:30) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) ....其余为本地文件列表
解决方案
造成404错误的核心原因是SDK 2.x版本的参数结构与1.x版本不兼容,以下是具体修正点:
- 移除客户端初始化的
deployment参数:SDK 2.0.0-beta.1不再支持在客户端初始化时指定deployment,部署ID需要在API调用时通过model字段传入。 - 必须显式传入API密钥:取消注释
apiKey参数的代码,确保SDK能获取到合法的认证密钥。 - 调用时
model字段不能为空:将model设置为你的部署ID(即AZURE_OPENAI_CHAT_COMPLETION_MODEL_DEPLOYMENT_ID的值),空值会导致请求路径错误。
修改后的客户端代码
azureOpenAIClient = new AzureOpenAI({ baseURL: process.env.AZURE_OPENAI_ENDPOINT, apiKey: process.env.AZURE_OPENAI_API_KEY, // 显式传入密钥 apiVersion: process.env.AZURE_OPENAI_API_VERSION, });
修改后的调用代码
const result = await azureOpenAIClient.chat.completions.create({ messages, model: process.env.AZURE_OPENAI_CHAT_COMPLETION_MODEL_DEPLOYMENT_ID, // 指定部署ID response_format: { type: jsonOutput ? 'json_object' : 'text' }, });
另外确认AZURE_OPENAI_API_VERSION="2024-04-01-preview"与你的Azure OpenAI资源兼容,该版本支持gpt-4o部署,无需调整。
内容的提问来源于stack exchange,提问作者Gaurav Mantri
相关产品推荐
相关产品推荐

