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

Langchain ConversationSummaryBufferMemory未生效:LLM请求仍携带完整聊天历史

问题分析与解决方案

你的核心问题是ConversationSummaryBufferMemory未按预期生成聊天摘要,导致LLM仍收到完整历史。以下是具体排查和修复步骤:

1. 确认Prompt模板正确引用内存变量

确保你的Chain Prompt模板中使用的是{history}(对应你设置的memory_key="history"),而非直接传入原始的chat_mem。如果Prompt里硬编码了完整历史,内存的摘要逻辑不会生效。示例正确Prompt:

from langchain.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个专业助手,根据历史聊天摘要和当前问题回答"),
    ("history", "{history}"),
    ("user", "{query}")
])

2. 调整内存初始化与摘要触发逻辑

你当前的prune()调用时机不对:ConversationSummaryBufferMemory默认仅当新增内容触发max_token_limit时才生成摘要,初始化时直接调用prune()可能因为原始历史未超过阈值而不生效。可以手动触发摘要生成,或调整参数强制生成:

def __set_chain_memory(self, user_id, conversation_id):
    chat_mem = self.chat_memory.get(user_id, conversation_id)
    llm = ChatOpenAI(temperature=0, model_name=GPT3_MODEL)
    self.chain_memory = ConversationSummaryBufferMemory(
        llm=llm,
        chat_memory=chat_mem,
        memory_key="history",
        input_key="query",
        return_messages=False,  # 改为False直接返回字符串摘要,适配多数Prompt
        max_token_limit=1000,
    )
    # 手动触发摘要生成:强制将历史转换为摘要(即使未达token阈值)
    self.chain_memory.load_memory_variables({})
    # 调用prune确保内存仅保留摘要和最新消息
    self.chain_memory.prune()

3. 验证Chain初始化是否正确绑定内存

确保你的StreamingChain初始化时传入的是memory=self.chain_memory,而非原始的chat_mem。示例正确Chain初始化:

from langchain.chains import LLMChain

# 适配你的实际StreamingChain类型
self.streaming_chain = LLMChain(
    llm=your_target_llm,  # 这里可以是Claude/GEMINI等你对接的模型
    prompt=prompt,
    memory=self.chain_memory,
    verbose=True,
    streaming=True
)

4. 手动验证内存输出

在传入Chain前,添加调试代码确认内存返回的是摘要而非完整历史:

memory_vars = self.chain_memory.load_memory_variables({"query": "测试查询"})
print(memory_vars["history"])  # 输出应为摘要字符串,而非完整聊天记录

关键注意点

  • ConversationSummaryBufferMemory的摘要生成依赖你传入的llm参数(这里是ChatOpenAI),和对话使用的LLM(Claude/GEMINI)无关,无需担心多模型兼容问题。
  • 如果设置return_messages=True,内存返回的是BaseMessage对象列表,需确保Prompt模板能正确解析这种格式,否则建议改为return_messages=False直接返回字符串摘要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:16:08