from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory() memory.chat_memory.add_user_message("你好,我是人类!") memory.chat_memory.add_ai_message("你好,我是AI,有什么可以帮助你的吗?") memory.load_memory_variables({})
输出:
#实现一个最近的对话窗口,超过窗口条数的对话将被删除 from langchain.memory import ConversationBufferWindowMemory memory = ConversationBufferWindowMemory(k=2) memory.save_context({"input":"你好,我是人类!"},{"output":"你好,我是AI,有什么可以帮助你的吗?"}) memory.save_context({"input":"我想吃鸡肉"},{"output":"好的,我帮你找找鸡肉的做法"}) memory.load_memory_variables({})
当对话持续进行且对话内容很多时,可用ConversationSummaryBufferMemory来存储对话摘要。
这是一种非常有用的方式,它会根据token的数量来自动判断是否需要进行摘要。
当token数量超过阈值,会自动进行摘要。在缓冲区中,会保留最近的k条对话,比较久的对话会被删除,在删除前会进行摘要。
from langchain.memory import ConversationSummaryBufferMemory from langchain.llms import OpenAI llm = OpenAI(temperature=0) memory = ConversationSummaryBufferMemory( llm=llm, max_token_limit=10, return_messages=True ) memory.save_context( {"input":"帮我找一下JavaEdge"}, {"output":"对不起请问什么是JavaEdge?"} ) memory.save_context( {"input":"JavaEdge是一个培训讲师"}, {"output":"好的,我知道了。"} ) memory.save_context( {"input":"今天他要讲一门关于RAG的课程"}, {"output":"好的,我知道了。需要RAG的资料吗?"} )
memory.load_memory_variables({})
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM应用开发
目前主攻降低软件复杂性设计、构建高可用系统方向。
参考: