AI大模型企业应用实战(17)-利用memory为LLM解决长短时记忆问题
2024/6/23 23:32:39
本文主要是介绍AI大模型企业应用实战(17)-利用memory为LLM解决长短时记忆问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 利用内存实现短时记忆
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({})
2 利用Entity memory构建实体记忆
3 利用知识图谱来构建记忆
4 利用对话摘要来兼容内存中的长对话
当对话持续进行且对话内容很多时,可用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({})
5 使用token来刷新内存缓冲区
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM应用开发
目前主攻降低软件复杂性设计、构建高可用系统方向。
参考:
- 编程严选网
这篇关于AI大模型企业应用实战(17)-利用memory为LLM解决长短时记忆问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25树形模型进阶:从入门到初级应用教程
- 2024-12-25搜索算法进阶:新手入门教程
- 2024-12-25算法高级进阶:新手与初级用户指南
- 2024-12-25随机贪心算法进阶:初学者的详细指南
- 2024-12-25贪心算法进阶:从入门到实践
- 2024-12-25线性模型进阶:初学者的全面指南
- 2024-12-25朴素贪心算法教程:初学者指南
- 2024-12-25树形模型教程:从零开始的图形建模入门指南
- 2024-12-25搜索算法教程:初学者必备指南
- 2024-12-25算法高级教程:入门与初级用户指南