You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:07:28