【Langchain】memory所有类型介绍及代码示例

一、_chatMessageHistory

1.什么是_chatMessageHistory

AI记下你说了什, 它说了什么的"聊天记录本"

每次你问问题,它就往本子上写一条

AI 回答后,它也写一条

下次你再问问题,AI 可以翻开这个本子,看之前说过什么,这样回答就连贯了

2.代码中怎么用_chatMessageHistory

把memory传给chain时,它会自动调用 __chatMessageHistory,将结果都保存到_chatMessageHistory

示例

python 复制代码
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

memory = ConversationBufferMemory()
llm = ChatOpenAI(temperature=0)

chain = ConversationChain(llm=llm, memory=memory)

# 自动保存
chain.run("你好")

可以获取到保存的消息
# 获取消息列表
messages = memory.chat_memory._chat_message_history.messages

# 打印每条消息
for msg in messages:
    print(f"{msg.role}: {msg.content}")

二、conversationBufferMemory

1.conversationBufferMemory是什么

1.记录消息,_chatMessageHistory = 具体的消息记录本

2.ConversationBufferMemory = 管理这个记录本的 Memory,负责把新消息写进去、提供历史给 Chain/Agent 用

2.conversationBufferMemory怎么用

ini 复制代码
#1.创建Memory
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()

#2.让Chain/Agent使用它
llm = ChatOpenAI(temperature=0)
chain = ConversationChain(llm=llm, memory=memory)

#3.对话</br>
chain.run("你好")
chain.run("你还记得我刚才说的话吗?")

Memory 会自动把每轮消息记录到 _chatMessageHistory

下一轮对话 AI 会参考之前的消息

三、conversationChain

1.conversationChain是干啥的

Memory 记东西,Chain 用这些东西跟你聊天。

2.ConversationChain 怎么用

ini 复制代码
# 创建 Memory(自动记住对话)
memory = ConversationBufferMemory()

# 创建 LLM
llm = ChatOpenAI(temperature=0)

# 创建 ConversationChain
conversation = ConversationChain(llm=llm, memory=memory)
conversation.run("你好")  # 第一轮
conversation.run("你还记得我刚才说的话吗?")  # 第二轮,会参考第一轮的对话

四、conversationBufferWindowMemory

1.conversationBufferWindowMemory是干啥的

只保留几条记录

window:滑动窗口

2.conversationBufferWindowMemory怎么用

ini 复制代码
# 创建记忆对象 只记住最近三轮
memory = ConversionBufferWindowMemory(k=3) 
# 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")
# 3. 创建对话链,挂上记忆
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)
#聊天
conversation.predict(input="你好")

五、ConversationTokenBufferMemory

1.ConversationTokenBufferMemory是什么

按token数量决定保留多少记录

2.怎么看最近用了多少token

比如你这次给AI发消息,消耗了10个token,和之前加起来token的消耗总数已经超过1000了, 会把之前的对话删除掉,让消耗token数小于1000

1 token ≈ 0.75 个汉字 或 4 个英文字符。

六、ConversationSummaryMemory

1.ConversationSummaryMemory是什么

把旧的对话总结为一句话或几句话 节省token 同时保留核心信息

旧的对话,之前需要全部发送给模型,生成答案

用ConversationSummaryMemory后,不用全部发过去,发过去总结就行,可以节省token

2.ConversationSummaryMemory怎么用

ini 复制代码
# 1. 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 创建 Summary Memory
memory = ConversationSummaryMemory(
    llm=llm,                 # 用于生成 summary 的模型
    max_token_limit=1000,    # 可选,保留 summary 时总 token 上限
)

# 3. 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 4. 连续聊天
conversation.predict(input="你好")

七、ConversationEntityMemory

1.ConversationEntityMemory是什么

专门记住对话中的 人,事,物 和它们的属性

2.ConversationEntityMemory怎么用

ini 复制代码
# 1. 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 创建实体记忆对象
memory = ConversationEntityMemory(llm=llm)

# 3. 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 4. 对话示例
conversation.predict(input="我叫张三,今年22岁,喜欢篮球,住北京。")
会记住对话中的
姓名=张三
年龄=22
兴趣=篮球
居住地=北京

八、ConversationKGMemory

1.ConversationKGMemory是什么

它不仅记实体,还记实体之间的关系,用结构化方式帮助模型更智能回答问题

2.ConversationKGMemory怎么用

ini 复制代码
# 1. 创建模型
llm = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 创建知识图谱记忆对象
memory = ConversationKGMemory(
    llm=llm
)

# 3. 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)
相关推荐
ToTensor3 小时前
DataGen——合成数据生成器:把一句任务描述变成可校验的训练数据
langchain·agent
ever_up9739 小时前
LangChain基础知识概述1
人工智能·python·langchain
Java后端的Ai之路11 小时前
LangChain Deep Agents 从入门到企业实战
开发语言·人工智能·python·langchain·deepagents
靠谱者也13 小时前
AI Agent 从入门到实战:核心架构、工程挑战与落地实践
langchain·ai编程
JavaPub-rodert1 天前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain
烬羽1 天前
让大模型输出 JSON:从"正则剥 markdown"到"让它调个工具",一条可靠性升级之路
langchain·llm·openai
夫子3962 天前
【第三部分:第一个 Agent 应用】12. 使用状态机开发一个可控 Agent
langchain·llm·agent
旖旎夜光2 天前
【LangChain实战】LangChain 学习笔记(二):结构化输出、流式传输与消息管理
人工智能·笔记·python·学习·ai·langchain
Maiko Star2 天前
[LangChain Agent] 03 ReAct 框架:思考→行动→观察
langchain
minji...2 天前
LangChain AI应用开发框架核心组件的使用 - 消息组件的使用 : 消息,历史消息的缓存,历史消息的管理(裁剪过滤合并)
langchain