langchain学习之第二部分memory机制

langchain学习文章目录

第一部分 langchain入门以及prompt、解析器使用



前言

今天记录第二部分Memory机制
来存储和检索对话上下文,使得多轮对话更加连贯。这样,应用程序可以记住用户之前的输入和状态,从而提供更智能和个性化的响应。
导包,以及初始化请看第一部分。


一、ConversationBufferMemory

	记录整个对话的所有内容。适用于需要完整对话历史的应用。
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
conversation = ConversationChain(llm=model,memory=memory,verbose=False)
conversation.predict(input='你好,我是xx')
conversation.predict(input='今天是几月几号')
print(memory.buffer)#会得到所有聊天信息内容

二、ConversationBufferWindowMemory

	只记录对话的最近几轮内容。这在对话较长且只需要最近几轮内容的场景中非常有用。参数k表示模型记住k轮对话
from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=1)  #参数k表示模型记住k轮对话
memory.save_context({'input':'我是xx'},{'output':'很高兴认识你'})
memory.save_context({'input':'你好'},{'output':'你也好呀'})
memory.load_memory_variables({}) #上面设置k=1,只保留一轮对话也就是:你好

三、ConversationTokenBufferMemory

	根据标记(tokens)的数量记录对话内容。这在对话需要控制标记数量(如避免超过API限制)的场景中非常有用。

max_token_limit存储最大token长度,需要计算token所以参数还需要llm来计算

from langchain.memory import ConversationTokenBufferMemory
memory = ConversationTokenBufferMemory(llm=model,max_token_limit=20)
memory.save_context({'input':'我是张成'},{'output':'很高兴认识你'})
memory.save_context({'input':'你好'},{'output':'你也好呀'})
memory.load_memory_variables({})#max_token_limit设置20,也就只能保留最后一轮

四、ConversationSummaryBufferMemory

	过生成摘要来记录对话内容。这适用于需要保留对话核心内容但不需要详细记录的场景。

max_token_limit存储最大token长度,需要计算token所以参数还需要llm来计算

from langchain.memory import ConversationSummaryBufferMemory
text='今天的行程安排xxxxxxxxxxxxxxxxxxxxxxxxxx'
memory = ConversationSummaryBufferMemory(llm=model,max_token_limit=20)
memory.save_context({'input':'今天我的安排是什么'},{'output':f'{text}'})
memory.load_memory_variables({}) 

总结

以上就是今天要讲的内容,本文仅仅简单介绍了memory的使用,还有另外两种机制,分别是向量和实体memory机制,可以再看看。

### LangChain的主要特点 LangChain 是一种专为开发基于大语言模型 (LLM) 应用而设计的强大框架,其主要特点是提供了一系列模块化工具和灵活的功能支持。以下是 LangChain 的一些关键特性: #### 1. **Prompt Templates(提示模板)** LangChain 提供了一种简单的方式来管理和定制 Prompt 模板。这使得开发者可以轻松调整输入给 LLM 的结构化数据形式,从而优化模型的表现[^2]。 #### 2. **Memory(记忆机制)** 该框架内置了多种记忆管理方案,允许应用程序记住之前的对话历史或上下文信息。这种能力对于构建具有连贯性和情境感知的聊天机器人至关重要[^2]。 #### 3. **Agents(智能代理)** 通过集成 Agents 功能,LangChain 支持复杂的任务自动化处理流程。例如,它可以调用外部 API 或者执行一系列操作以完成特定目标[^2]。 #### 4. **Retrieval(知识检索)** 为了增强查询效率并减少计算成本,LangChain 实现了高效的知识库检索方法。这种方法特别适用于需要快速访问大量非结构化文本数据的应用场景[^2]。 --- ### LangChain的核心功能 除了上述提到的独特优势外,LangChain 还具备以下几项重要功能: - **链式逻辑控制** 开发人员可以通过组合多个组件形成复杂的工作流链条,实现端到端的任务解决过程。 - **插件扩展性** 用户可以根据需求安装额外的第三方服务作为补充资源,进一步提升系统的灵活性与适应范围。 - **跨平台兼容性** 不论是在云端还是本地环境中部署项目,LangChain 都能保持良好的性能表现,并且易于维护更新。 --- ### 主要应用场景 鉴于以上描述的技术亮点,LangChain 广泛应用于以下几个方面: #### 对话系统 利用 Memory 和 Agent 特性打造更加自然流畅的人机交互体验;比如客服中心自动回复解决方案或者虚拟助手产品原型开发阶段测试验证工作等等[^2]。 #### 数据分析报告生成器 借助 Retrieval 技术加速海量资料筛选速度的同时结合自定义 Prompts 来满足不同业务部门个性化报表制作需求[^2]。 #### 教育培训辅助工具 针对学生学习过程中遇到的各种疑问点设立专项答疑环节并通过 Chain 结构串联起整个教学辅导体系。 ```python from langchain.prompts import PromptTemplate from langchain.llms import OpenAI from langchain.chains import LLMChain llm = OpenAI(temperature=0.9) prompt_template_name = "What is a good name for a company that makes {product}?" prompt = PromptTemplate(template=prompt_template_name, input_variables=["product"]) chain = LLMChain(llm=llm, prompt=prompt) response = chain.run(product="colorful socks") print(response) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值