AI 长期记忆的 8 种优化策略及 LangChain 代码实现
在基于大模型的 Agent 系统中,长期记忆的状态维护至关重要。根据 OpenAI AI 应用研究主管 Lilian Weng 在《基于大模型的 Agent 构成》中的观点,记忆被视为关键组件之一。本文将结合 LangChain 框架,详细解析 8 种不同的记忆维护方式及其在不同场景中的应用实例。
1. 获取全量历史对话 (ConversationBufferMemory)
适用场景:一般客服场景、短文本交互。
在电信公司的客服聊天机器人场景中,如果用户在对话中先是询问了账单问题,接着又谈到了网络连接问题,ConversationBufferMemory 可以用来记住整个与用户的对话历史。这有助于 AI 在回答网络问题时还记得账单问题的相关细节,从而提供更连贯的服务。
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "你好"}, {"output": "怎么了"})
variables = memory.load_memory_variables({})
print(variables)
- 优点:保留所有历史,上下文最完整。
- 缺点:随着对话轮数增加,Token 消耗会线性增长,可能导致超出模型上下文窗口限制。
2. 滑动窗口获取最近部分对话内容 (ConversationBufferWindowMemory)
适用场景:商品咨询场景、对时效性要求高的问答。
在一个电商平台上,如果用户询问关于特定产品的问题(如手机的电池续航时间),然后又问到了配送方式,ConversationBufferWindowMemory 可以帮助 AI 只专注于最近的一两个问题(如配送方式),而不是整个对话历史,以提供更快速和专注的答复。
from langchain.memory import ConversationBufferWindowMemory
# 只保留最后 2 次互动的记忆
memory = ConversationBufferWindowMemory(k=2)
memory.save_context({"input": "手机电池怎么样?"}, {"output": "续航很强"})
memory.save_context({"input": "怎么配送?"}, {"output": "次日达"})
variables = memory.load_memory_variables({})
print(variables)
- 优点:控制 Token 使用,关注近期上下文。
- 缺点:丢失了早期的重要信息,不适合需要长程关联的场景。


