请求协助将GPT-3 API代码转换为适配ChatGPT-3.5 API
解决GPT-3.5 Turbo接口适配问题
你遇到的问题核心是四个关键环节没改到位,直接给你修正方案:
关键错误点
- 接口地址错误:gpt-3.5-turbo使用聊天接口
https://api.openai.com/v1/chat/completions,而非原代码里的补全接口/v1/completions - 缺少系统提示词:原代码里的
promptText是任务规则(比如生成考题、写作反馈的要求),需要作为system角色的消息传入,不能只传用户输入 - 历史记录格式错误:原代码的
previousPrompts仅存储用户输入,现在要存储完整的对话消息对象(包含role和content),才能维持上下文连贯性 - 响应解析逻辑错误:聊天接口的返回结构和补全接口不同,需从
data.choices[0].message.content提取回复内容,而非data.choices[0].text
修改后的完整核心代码
1. 初始化对话历史
替换原有的previousPrompts为存储消息对象的数组:
const chatHistory = [];
2. 更新接口地址
const endpoint = "https://api.openai.com/v1/chat/completions";
3. 重构请求数据
整合系统提示词、历史对话和当前用户输入:
const messages = [ { role: "system", content: promptText }, ...chatHistory, { role: "user", content: prompt } ]; const requestData = { model: "gpt-3.5-turbo", messages: messages, max_tokens: 400, temperature: 0.5, top_p: 1, frequency_penalty: 0, presence_penalty: 0 };
4. 修正响应解析逻辑
.then(data => { const reply = data.choices[0].message.content; // 保存当前对话到历史记录 chatHistory.push({ role: "user", content: prompt }); chatHistory.push({ role: "assistant", content: reply }); // 以下消息渲染、滚动、清空输入等逻辑保持不变,仅调整复制按钮的引号转义 const userMessage = `<div class="message-container"> <div class="username">${userName}: </div> <div class="user-message">${prompt}</div> </div>`; document.getElementById("output").innerHTML += userMessage; const chatbotMessage = `<div class="message-container"> <div class="username">${chatbotName}: </div> <div class="chatbot-message" style="white-space: pre-wrap">${reply}<i class="bi bi-clipboard-check copy-button" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Copy to clipboard" data-text="${reply.replace(/"/g, '"')}" style="cursor: pointer;"></i></div> </div>`; document.getElementById("output").innerHTML += chatbotMessage; // 复制按钮逻辑保持不变 document.addEventListener("click", function(event) { if (event.target.classList.contains("copy-button")) { const textToCopy = event.target.dataset.text; navigator.clipboard.writeText(textToCopy); } }); document.getElementById("output").scrollTop = document.getElementById("output").scrollHeight; document.getElementById("prompt").value = ""; document.getElementById("send-button").innerHTML = 'Send'; })
完整修改后的
相关产品推荐
相关产品推荐

