多轮对话上下文管理,实现连贯对话体验

5 阅读2分钟

核心场景

开发AI聊天机器人时,需要保留多轮对话上下文(如用户先问“什么是Python”,再问“它的优势是什么”,AI需结合上一轮问题回答),星链4sapi可通过维护messages数组,实现连贯对话。

关键代码(Python/JS 实操)

# Python 多轮对话上下文管理
from openai import OpenAI
client = OpenAI(base_url="https://4sapi.ai/v1", api_key="你的API_KEY")

# 初始化对话上下文(保存所有轮次的消息)
chat_context = [{"role": "system", "content": "你是一个Python技术顾问,回答简洁专业"}]

# 封装多轮对话函数
def multi_turn_chat(user_input):
    # 将用户输入添加到上下文
    chat_context.append({"role": "user", "content": user_input})
    # 调用4sapi
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=chat_context  # 传入完整上下文
    )
    # 将AI回复添加到上下文
    ai_response = response.choices[0].message.content
    chat_context.append({"role": "assistant", "content": ai_response})
    return ai_response

# 多轮对话示例
print(multi_turn_chat("什么是Python?"))
print(multi_turn_chat("它的核心优势是什么?"))
print(multi_turn_chat("用它开发AI需要哪些库?"))
# 查看完整上下文
print("完整对话上下文:", chat_context)
// JavaScript 多轮对话上下文管理
const API_KEY = "你的API_KEY";
const URL = "https://4sapi.ai/v1/chat/completions";

// 初始化上下文
let chatContext = [{"role": "system", "content": "简洁回答用户问题"}];

// 多轮对话函数
async function multiTurnChat(userInput) {
  // 添加用户输入到上下文
  chatContext.push({"role": "user", "content": userInput});
  const res = await fetch(URL, {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "gemini-pro",
      messages: chatContext
    })
  });
  const data = await res.json();
  const aiResponse = data.choices[0].message.content;
  // 添加AI回复到上下文
  chatContext.push({"role": "assistant", "content": aiResponse});
  return aiResponse;
}

// 调用示例
multiTurnChat("什么是星链4sapi?")
  .then(res => console.log(res))
  .then(() => multiTurnChat("它支持哪些模型?"))
  .then(res => console.log(res));

总结

核心是维护messages数组,将每轮用户输入和AI回复依次添加到数组中,调用时传入完整数组,即可实现连贯的多轮对话,适配所有聊天类场景。