如何使用gpt-3.5-turbo模块实现连贯对话及代码修改指导
解决gpt-3.5-turbo替代text-davinci-003的问题并实现连贯对话
错误原因
你遇到的错误是因为gpt-3.5-turbo属于聊天模型,只能通过v1/chat/completions端点调用,而你原代码使用的createCompletion方法是针对文本补全模型的(对应v1/completions端点),两者不兼容。
修改方案
要完成模型替换并实现连贯对话,需要做两个核心调整:
- 用
createChatCompletion方法替代createCompletion,适配聊天模型的调用规则 - 维护每个用户的对话上下文历史,确保对话逻辑连贯
完整修改后的代码
const { Client } = require('whatsapp-web.js'); const qrcode = require('qrcode-terminal'); const { Configuration, OpenAIApi } = require("openai"); require('dotenv').config() const client = new Client(); // 按用户ID存储对话历史,保证不同用户的对话互不干扰 const conversationHistories = {}; client.on('qr', (qr) => { qrcode.generate(qr, {small: true}); }); client.on('ready', () => { console.log('Client is ready!'); }); client.initialize(); const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); client.on('message', async message => { console.log(message.body); if(message.body.startsWith("#")) { const userId = message.from; const userMessage = message.body.substring(1); // 初始化当前用户的对话历史(首次对话时创建) if (!conversationHistories[userId]) { conversationHistories[userId] = []; } // 将用户当前消息加入对话历史 conversationHistories[userId].push({ role: "user", content: userMessage }); try { const result = await runChatCompletion(conversationHistories[userId]); // 将AI回复加入对话历史,确保后续对话能延续上下文 conversationHistories[userId].push({ role: "assistant", content: result }); message.reply(result); } catch (error) { console.error('OpenAI API调用失败:', error); message.reply('抱歉,暂时无法处理你的请求'); } } }); async function runChatCompletion(messages) { const completion = await openai.createChatCompletion({ model: "gpt-3.5-turbo", messages: messages, max_tokens: 200, }); return completion.data.choices[0].message.content; }
关键说明
- 对话上下文维护:通过
conversationHistories对象按用户ID隔离对话历史,每次交互都会把用户消息和AI回复存入对应数组,保证后续对话能基于之前的内容展开。 - API参数变化:
createChatCompletion使用messages参数替代原有的prompt,参数格式为包含role(user/assistant/system)和content的对象数组,符合聊天模型的交互规则。 - 异常处理:新增try-catch捕获API调用异常,避免程序因接口报错崩溃,同时给用户返回友好提示。
内容的提问来源于stack exchange,提问作者Comely App
相关产品推荐
相关产品推荐

