尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LangChain 学习笔记 05:聊天记录很多,不等于模型真的有记忆
用户说“还是按上次那个地址寄”系统怎样知道“上次那个地址”指什么这是聊天应用开始变得像助手的时刻也是状态管理真正变麻烦的时刻。第 6 章集中讨论 Memory。读这一章前我容易把记忆理解成“把历史对话都塞回 Prompt”读完以后最大的变化是开始区分原始记录、当前上下文和长期事实。版本说明LangChain 的记忆与 Agent 状态接口已经历多次演进。这里讨论的是记忆设计问题不建议直接照搬书中的旧类名。模型本身不会记住上一轮一次模型调用通常只看到本次请求提供的内容。所谓“记得”其实是应用在调用前读取状态、把相关信息放进上下文并在调用后保存新状态。可以把它拆成三类类型示例保存方式会话历史用户和助手的原始消息按会话持久化工作记忆本轮回答需要的最近消息或摘要动态选择后放入上下文长期记忆用户偏好、地址、任务进度结构化存储并按需读取三者混成一个无限增长的消息列表会同时带来成本、噪声、隐私和一致性问题。常见策略各自牺牲了什么完整缓冲保留全部消息最容易实现也最忠实。但对话越长token 成本越高早期关键信息还可能被大量闲聊淹没。窗口记忆只保留最近若干轮成本可控却可能把前面已经确认的重要约束丢掉。摘要记忆把旧对话压缩成摘要。它节省上下文但摘要也是模型生成的可能遗漏数字、否定条件和用户态度。摘要最好保留版本并允许回查原始消息。实体或结构化记忆抽取姓名、偏好、地址和任务状态查询效率高但需要处理更新、冲突和删除。例如用户说“以后不要寄到公司”系统不能只新增一条偏好而要正确替换旧状态。一个预约助手该怎样记假设用户先说“周五下午帮我约牙医”几轮后又说“改到下周一上午”。如果只保存聊天文本模型每次都要从长记录里重新推断最终时间。更稳妥的做法是同时维护结构化状态{service:牙医,date:下周一,period:上午,confirmed:false}模型负责从自然语言中提取候选修改程序负责日期解析、字段校验和最终写入。真正提交预约前还要把明确日期和时间展示给用户确认。这个例子也说明Memory 不只是“聊天体验功能”它已经接近业务状态管理。记忆最难的是冲突不是存储用户可能先说喜欢简洁回答后来又要求某个话题详细解释资料库可能保存旧公司名称当前会话里用户又给出新名称。因此长期记忆至少需要来源、更新时间、作用范围和可信级别。遇到冲突时可以按明确规则选择或者向用户询问而不是让模型默默猜一个。敏感信息还要考虑授权、加密、保留期限和删除能力。能保存不代表应该保存能从历史推断出来也不代表可以长期固化。这章给我的启发记忆模块真正要解决的不是“怎样装下更多聊天记录”而是“此刻哪些信息值得进入上下文”。原始消息负责追溯摘要帮助压缩结构化状态支撑业务长期记忆提供跨会话连续性。把这些职责分开系统才不会一边声称记得用户一边又把过期信息当成事实。
RELATED

相关推荐

电力系统同步相量计算:算法比较与工程优化

电力系统同步相量计算:算法比较与工程优化

1. 电力系统同步相量计算的背景与挑战在现代电力系统监测与控制中,同步相量测量单元(PMU)已成为智能电网的核心设备。作为电力系统动态监测的"眼睛",PMU需要实时提供电压、电流的幅值和相位信息,其测量精度直接关系到状态估计、故障…

📅 2026/8/24 9:59:33
Unity 2D渲染分层:Spine角色穿模问题的SkeletonRenderSeparator解决方案

Unity 2D渲染分层:Spine角色穿模问题的SkeletonRenderSeparator解决方案

1. 项目概述:当2D角色与场景“穿模”时 在Unity里做2D项目,尤其是使用Spine动画的角色,有一个问题几乎每个开发者都会遇到,那就是“穿插”或者叫“穿模”。想象一下,你的角色跑向一棵树,理想情况是角色的身…

📅 2026/9/27 5:06:51
3分钟快速上手:终极Markdown阅读器让你的Chrome浏览器秒变专业文档编辑器

3分钟快速上手:终极Markdown阅读器让你的Chrome浏览器秒变专业文档编辑器

3分钟快速上手:终极Markdown阅读器让你的Chrome浏览器秒变专业文档编辑器 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader 还在为…

📅 2026/8/24 9:59:47
MORE NEWS

更多资讯

📰

OpenWrite 多平台分发:搭建技术博客发布流水线

上周有人问我一个特别具体的问题:一篇两千多字的技术稿,为什么能在草稿箱里躺三天还没发出去。我让他把过程复述一遍,答案就出来了——他在一个平台写完,复制到第二个平台,发现代码块高亮没了;回去改一遍&a…

📰

PostgreSQL 16 PITR 实战:基于 WAL 归档的任意时间点恢复与脚本化实现

数据库出故障时最怕什么?不是磁盘坏道,也不是机房断电,而是备份明明有,恢复出来的数据却停在了错误的时点。像“昨晚凌晨的全量备份 今天白天的一堆 binlog”这种经典组合,在 PostgreSQL 里对应的就是 Point-in-Time …

📰

PostgreSQL 16 PITR时间点恢复实战:从WAL归档到误删数据精确恢复

1. 先搞清楚:PostgreSQL 16 的 PITR 到底能帮你解决什么问题说句实在话,我见过太多团队在 PostgreSQL 上跑了几年,备份策略还停留在“每天凌晨pg_dump一次,出事了就恢复到昨晚”。平时看着没啥问题,可真到关键时刻——…

📰

数据库约束条件实战:主键、唯一、外键与CHECK如何选型

做数据库这么多年,我接手过的最头疼的一张表,是一张几千万行的订单流水表。上线前三个月一切岁月静好,等数据量一上来,各种问题接踵而至:订单号重复、关联用户对不上、状态值永远是"pending"没法推进。后来排…

📰

MySQL自动备份实战:用Navicat配置定时备份与恢复

数据库备份这件事,真的不能等出事了才想起来做了这么多年开发,我一直觉得数据库备份是那种“大家都知道重要、但很少有人认真对待”的事。直到有一次我帮朋友恢复一个跑了两年的业务库,因为备份文件是三个月前的,最后硬生生丢了将…

📰

C语言void完全指南:void指针、函数设计与编译避坑

1. void到底代表了什么:先把它说透 C语言里,void可能是看着最简单、用起来门道最多的关键字。我在嵌入式开发和通用容器库中没少和它打交道。这一篇我打算把void的用法从头到尾捋一遍:从“空类型”的定义,到函数设计、void指针、以…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬