【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
)
相关推荐
985小水博一枚呀1 天前
【AI大模型学习路线】第三阶段之RAG与LangChain——第十九章(实战基于Advanced RAG的PDF问答)系统部署与测试?
人工智能·学习·langchain·pdf
至此流年莫相忘1 天前
LangChain HelloWorld
langchain
玲小珑1 天前
LangChain.js 完全开发手册(十五)实战综合项目一:智能文档处理系统
前端·langchain·ai编程
成子不是橙子2 天前
Langchain | Ollama | Python快速上手使用LLM的DEMO
开发语言·python·langchain·ollama
AI大模型2 天前
AI智能体开发框架LangChain & LangGraph快速入门实战(包含LangSmith)
程序员·langchain·llm
DevYK2 天前
企业级Agent开发教程(四) 基于 MongoDB 实现持久化记忆缓存
langchain·agent
shut up4 天前
LangChain - 如何使用阿里云百炼平台的Qwen-plus模型构建一个桌面文件查询AI助手 - 超详细
人工智能·python·langchain·智能体
liliangcsdn4 天前
如何基于ElasticsearchRetriever构建RAG系统
大数据·elasticsearch·langchain
东方佑4 天前
基于FastAPI与LangChain的Excel智能数据分析API开发实践
langchain·excel·fastapi