LangChain memory 模块

发布时间:2026/9/12 9:11:40
LangChain memory 模块 当你在 ChatGPT 这类对话应用上试用过十万次后你会发现它能够记住过往的对话交流。举个例子我先问第一届板球世界杯谁夺冠了随后话锋一转聊完全不相干的内容5 加 5 等于几。接着我再提问这支获胜队伍的队长是谁。你注意看我此时并没有说明是哪一场赛事、哪项运动板球还是足球等等但模型记得我们聊的是板球所以给出了贴合语境的答案。人与人交谈也是同理我们开启一个话题接着不断交流但始终记得谈话的主题。再来看看 LLMChain。默认情况下这类链不具备记忆能力属于无状态组件。你去查看这条链自带的可用方法就会发现其中有一个名为 memory记忆的组件。单纯直接调用 LLMChatOpenAI/Ollama等基础模型对象不带任何记忆组件不能记住对话历史每一次调用都是独立请求模型不知道上一轮说了什么。核心本质大模型本身无服务端会话状态API 是无状态接口。 不管 OpenAI、Ollama、DeepSeek、通义千问本地 / 云端 API每次请求 独立的 HTTP 请求 模型服务端不会保存任何聊天记录。1. 这段代码印证结论from langchain_ollama import ChatOllama llm ChatOllama(modelqwen2.5) print(llm.invoke(我的名字是小明).content) print(llm.invoke(我叫什么名字).content)第二次调用模型大概率答不上来。 原因 两次invoke互相独立第二次请求体里只有当前用户提问没有上一轮对话消息。2. 想要记住历史唯一办法人工把完整消息序列一次性塞进本次请求from langchain_core.messages import HumanMessage, AIMessage from langchain_ollama import ChatOllama llm ChatOllama(modelqwen2.5) messages [] messages.append(HumanMessage(我的名字是小明)) resp llm.invoke(messages) messages.append(resp) messages.append(HumanMessage(我叫什么名字)) resp2 llm.invoke(messages) print(resp2.content)✅ 此时能记住不是 llm 对象自带记忆是你自己维护了 messages 列表。容易混淆的误区❌ 误区ChatOllama/ChatOpenAI对象内部自带缓存 对象只是一个封装请求参数的客户端内部不会缓存任何对话消息。实例复用也不会记住上下文。❌ 误区Ollama 命令行能记住对话API 也可以 ollama run qwen 能记忆是ollama CLI 客户端自己维护消息列表不是模型服务自动保存调用 Ollama HTTP API 默认同样无状态。✅ 真相 记忆只能存在你的程序侧 手动列表 / ConversationBufferMemory / RunnableWithMessageHistory / Redis 会话存储全都只是帮你管理messages。一句话精炼总结基础 LLM 实例只是一个发送请求的客户端本身不存储任何对话上下文上下文能否延续完全取决于你每次调用时有没有把历史消息一并传入本次请求。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询