Azure OpenAI gpt-35-turbo调用getCompletions报错,求主题生成问题方案
解决Azure OpenAI API OperationNotSupported错误并实现主题生成问题功能
报错原因
gpt-35-turbo属于聊天类模型,仅支持聊天补全接口(Chat Completions),不兼容传统的文本补全接口(Completions),你调用的getCompletions属于后者,因此触发错误。
解决步骤及代码实现
1. 替换接口方法
将getCompletions替换为getChatCompletions,这是聊天模型专用的接口。
2. 调整Prompt格式
聊天接口要求以消息数组的形式传递指令,格式为[{ role: "user", content: "你的需求描述" }],明确要求生成2个指定主题的问题。
3. 修改结果解析逻辑
聊天接口返回的结果结构与补全接口不同,需从choices[0].message.content中提取生成的内容。
完整修改后的代码
const { OpenAIClient, AzureKeyCredential } = require("@azure/openai"); (async function main() { const endpoint = "https://profileforslack.openai.azure.com/"; const key = "你的Azure OpenAI密钥"; // 填入实际密钥 const client = new OpenAIClient(endpoint, new AzureKeyCredential(key)); // 指定要生成问题的主题 const targetTopic = "Games"; // 构造聊天格式的prompt const chatMessages = [ { role: "user", content: `请围绕主题「${targetTopic}」生成2个相关问题` } ]; const deploymentName = "gpt"; // 确保此部署对应的是gpt-35-turbo模型 try { const { choices } = await client.getChatCompletions( deploymentName, chatMessages ); const generatedContent = choices[0].message.content; console.log(`生成的问题:\n${generatedContent}`); } catch (err) { console.error("请求出错:", err); } })();
注意事项
- 确认
deploymentName对应的Azure OpenAI部署是gpt-35-turbo模型,若部署名称不同需对应修改。 - 确保填入的
key是有效的Azure OpenAI密钥,且该密钥拥有对应部署的访问权限。
内容的提问来源于stack exchange,提问作者sahil
相关产品推荐
相关产品推荐

