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

如何在Azure OpenAI Chat Completion中实现最近3轮对话历史功能?

Azure OpenAI Chat Completion 对话上下文实现方案

Azure OpenAI Chat Completion本身没有内置的会话内存机制,需要自行维护对话历史来实现上下文感知。以下是针对你的需求(保留最近3轮对话)的具体实现方案:

核心思路

  • 维护对话历史列表:保存用户与助手的交互消息,每条消息包含role(user/assistant)和content字段。
  • 控制历史长度:仅保留最近3轮完整交互(即3组用户提问+助手回答,共6条消息),避免上下文过长导致token浪费或性能问题。
  • 构造请求消息:每次调用API时,将系统提示、历史对话、当前用户提问组合成完整的消息列表传给模型。

修改后的代码实现

from openai import AzureOpenAI

# 全局初始化Azure OpenAI客户端(避免每次调用函数重复创建)
client = AzureOpenAI(
    api_key="xxxx",
    azure_deployment="xxxxx",
    azure_endpoint="xxxxx",
    api_version="xxxx"
)

# 维护对话历史,最多保存3轮交互(6条消息:3个user + 3个assistant)
conversation_history = []

def bot_response(query):
    global conversation_history
    
    # 构造当前用户消息
    user_msg = {"role": "user", "content": query}
    
    # 组合完整的消息列表:系统提示 + 历史对话 + 当前用户消息
    messages = [
        {
            "role": "system",
            "content": ("Instructions:\n"
                        "do stuff\n"
                        )
        }
    ] + conversation_history + [user_msg]
    
    # 调用Azure OpenAI Chat Completion API
    chat_completion = client.chat.completions.create(
        messages=messages,
        model="gpt-4",
        response_format={"type": "json_object"}
    )
    
    assistant_response = chat_completion.choices[0].message.content
    # 构造助手消息并添加到历史
    assistant_msg = {"role": "assistant", "content": assistant_response}
    conversation_history.extend([user_msg, assistant_msg])
    
    # 保留最近3轮交互(最多6条消息),超出则删除最早的一轮
    if len(conversation_history) > 6:
        conversation_history = conversation_history[2:]
    
    return assistant_response

说明

  • 客户端初始化:将AzureOpenAI客户端放在函数外部全局初始化,避免每次调用bot_response时重复创建连接,提升效率。
  • 历史维护:每次交互后将用户消息和助手消息加入历史,当历史长度超过6时,移除最前面的两条消息(最早的一轮对话),确保始终保留最近3轮。
  • 消息构造:API请求的messages参数包含系统提示、历史对话和当前提问,模型会基于这些上下文生成响应。

如果需要更灵活的历史管理(比如按token数限制而非轮数),可以额外计算每条消息的token占用,再截断历史,但按轮数限制是最直接的实现方式。

内容的提问来源于stack exchange,提问作者user3476463

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:25:54