大模型:临时会话
大模型的临时会话临时会话指的是在一次对话会话Session期间大模型能够记住之前交流过的内容从而理解上下文、进行连贯对话的能力。会话结束后这些记忆通常会被丢弃。核心机制1. 上下文窗口Context Window大模型本身是无状态的每次调用都是独立的。所谓的“记忆”实际上是把历史对话记录拼接在每次请求中一起发送给模型。模型根据上下文窗口内的全部内容进行推理和生成。上下文窗口大小有限如 128K、200K、1M tokens超出部分会被截断或丢失。2. 消息列表Message List每次对话由一组消息组成每条消息包含角色system/user/assistant和内容。新消息不断追加到列表末尾形成对话历史。下次请求时将整个消息列表或截取最近的一部分传给模型。3. Checkpoint / State状态持久化在 Agent 或复杂工作流中临时会话的本质是状态管理每一步执行都会更新状态下一次调用从最新状态继续。状态不仅包含消息列表还包含中间变量、工具调用结果、流程控制信息等。通过将状态保存在内存或外部存储中实现会话的持续和恢复。临时会话的典型实现方式1. 手动维护消息列表最基础messages[{role:system,content:你是一个友好的助手。}]whileTrue:user_inputinput(你: )messages.append({role:user,content:user_input})responsemodel.invoke(messages)messages.append({role:assistant,content:response})print(助手:,response)2. 使用RunnableWithMessageHistoryLangChain 风格自动管理消息历史的存储和注入。通过session_id区分不同会话。支持多种历史存储后端内存、Redis、文件等。fromlangchain_core.runnables.historyimportRunnableWithMessageHistoryfromlangchain_core.chat_historyimportInMemoryChatMessageHistory store{}defget_history(session_id):ifsession_idnotinstore:store[session_id]InMemoryChatMessageHistory()returnstore[session_id]conversationRunnableWithMessageHistory(chain,get_history,input_messages_keyinput,history_messages_keychat_history)resultconversation.invoke({input:你好},{configurable:{session_id:user_001}})3. LangGraph 的 State 管理图Graph的执行过程中State 是全局共享的。每次节点更新 State下一次调用从上次的 State 继续。结合 Checkpointer 可实现会话持久化和恢复。fromlanggraph.graphimportStateGraph,MessagesStatefromlanggraph.checkpoint.memoryimportMemorySaver graphbuilder.compile(checkpointerMemorySaver())# 第一次调用resultgraph.invoke({messages:[HumanMessage(content你好)]},{configurable:{thread_id:session_001}})# 第二次调用同一 thread_id自动恢复历史resultgraph.invoke({messages:[HumanMessage(content我刚才说了什么)]},{configurable:{thread_id:session_001}})临时会话 vs 长期记忆对比维度临时会话长期记忆作用范围单次会话内同一session_id/thread_id跨会话、跨用户存储内容对话历史、当前状态、中间变量用户画像、知识图谱、持久化偏好生命周期会话结束或程序重启后可能丢失永久保存实现方式消息列表、State、Checkpointer外部存储数据库、向量库访问方式自动注入框架管理需手动读写临时会话的局限性上下文窗口限制对话过长时会丢失早期信息。Token 成本每次请求都携带全部历史成本线性增长。信息遗忘模型对长文本中间部分的内容“注意力”会减弱Lost-in-the-Middle 问题。应对策略消息裁剪只保留最近 N 轮对话ConversationBufferWindowMemory。摘要压缩使用 LLM 对旧消息生成摘要ConversationSummaryMemory。向量记忆将历史消息向量化按需检索相关片段VectorStoreRetrieverMemory。状态快照使用 Checkpointer 保存完整状态支持时间旅行和故障恢复。应对策略代码示例下面分别给出四种策略的代码示例帮助你直观理解每种方式如何实现。1. 消息裁剪ConversationBufferWindowMemory适用框架LangChain原理只保留最近 K 轮对话超出部分自动丢弃。fromlangchain.memoryimportConversationBufferWindowMemoryfromlangchain.chainsimportConversationChainfromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelgpt-3.5-turbo)# 只保留最近 2 轮对话即 2 次 user 2 次 assistantmemoryConversationBufferWindowMemory(k2)conversationConversationChain(llmllm,memorymemory,verboseTrue)conversation.predict(input我叫小明我喜欢编程。)conversation.predict(input你还记得我叫什么吗)# 此时 memory 中只包含最近两轮消息之前的“我叫小明”可能被丢弃取决于 k 值print(memory.buffer)# 查看当前存储的对话历史2. 摘要压缩ConversationSummaryMemory适用框架LangChain原理每次调用 LLM 将历史对话压缩成一段摘要保留核心信息节省 Token。fromlangchain.memoryimportConversationSummaryMemoryfromlangchain.chainsimportConversationChainfromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelgpt-3.5-turbo)# 使用 LLM 生成摘要memoryConversationSummaryMemory(llmllm)conversationConversationChain(llmllm,memorymemory,verboseTrue)conversation.predict(input我叫小明我喜欢编程。)conversation.predict(input我还喜欢打篮球。)conversation.predict(input你还记得我的爱好吗)# 查看当前存储的摘要print(memory.load_memory_variables({})[history])# 输出可能类似Human 说他的名字是小明喜欢编程和打篮球。3. 向量记忆VectorStoreRetrieverMemory适用框架LangChain原理将历史消息向量化存入向量库查询时只检索最相关的片段适合超长对话。fromlangchain.memoryimportVectorStoreRetrieverMemoryfromlangchain.vectorstoresimportChromafromlangchain.embeddingsimportOpenAIEmbeddingsfromlangchain.chainsimportConversationChainfromlangchain_openaiimportChatOpenAI# 初始化向量库embeddingOpenAIEmbeddings()vectorstoreChroma(collection_namememory,embedding_functionembedding,persist_directory./chroma_memory)# 创建检索器每次检索返回最相似的 2 条记忆retrievervectorstore.as_retriever(search_kwargs{k:2})# 创建向量记忆memoryVectorStoreRetrieverMemory(retrieverretriever)# 保存记忆每次对话后调用memory.save_context({input:我叫小明我喜欢编程。},{output:好的我记住了。小明喜欢编程。})memory.save_context({input:我还喜欢打篮球。},{output:记住了小明还喜欢打篮球。})# 查询相关记忆resultmemory.load_memory_variables({input:小明有什么爱好})print(result[history])# 输出会包含“小明喜欢编程”和“小明喜欢打篮球”的相关片段4. 状态快照Checkpointer适用框架LangGraph原理在图的每个节点执行后自动保存整个 State 的快照。支持恢复、回退和会话持久化。4.1 内存版MemorySaverfromlanggraph.graphimportStateGraph,MessagesStatefromlanggraph.checkpoint.memoryimportMemorySaverfromlangchain_core.messagesimportHumanMessage# 构建一个简单图builderStateGraph(MessagesState)builder.add_node(chat,lambdastate:{messages:[llm.invoke(state[messages])]})builder.set_entry_point(chat)graphbuilder.compile(checkpointerMemorySaver())# 第一次调用保存状态config{configurable:{thread_id:user_001}}resultgraph.invoke({messages:[HumanMessage(content我叫小明)]},configconfig)# 第二次调用从同一 thread_id 恢复状态resultgraph.invoke({messages:[HumanMessage(content我叫什么名字)]},configconfig)print(result[messages][-1].content)# 模型会回答“小明”4.2 持久化版SqliteSaverimportsqlite3fromlanggraph.checkpoint.sqliteimportSqliteSaver# 创建 SQLite 存储connsqlite3.connect(checkpoints.db,check_same_threadFalse)checkpointerSqliteSaver(conn)# 编译图时传入 checkpointergraphbuilder.compile(checkpointercheckpointer)# 之后的使用与 MemorySaver 完全一致只是状态会持久化到磁盘# 程序重启后相同 thread_id 仍能恢复历史策略对比总结策略适用场景优点缺点消息裁剪对话轮次可控不关心早期内容实现简单Token 可控可能丢失重要早期信息摘要压缩长对话但需保留核心信息节省 Token保留语义摘要摘要可能丢失细节需额外 LLM 调用向量记忆超长对话或知识库场景可扩展至海量历史按需检索实现复杂有额外检索延迟状态快照Agent 工作流、故障恢复保存完整状态支持时间旅行存储开销大需持久化支持根据你的实际场景可以组合使用这些策略例如短对话用消息裁剪长对话用摘要向量记忆关键工作流用状态快照。

相关新闻

为什么很多人会误解水泵的‘力气’大小

为什么很多人会误解水泵的‘力气’大小

为什么很多人会误解水泵的‘力气’大小 你是不是也听过这样的说法:“买水泵就选功率大的,劲儿足!”可结果装上后发现,水还是上不了三楼,或者电费蹭蹭涨?其实,水泵的“力气”并不只看功率&#x…

2026/7/6 6:22:53 阅读更多 →
西安GEO公司推荐与避雷指南

西安GEO公司推荐与避雷指南

1. 西安企业做GEO常见踩坑情况不少西安本地企业在布局AI流量渠道时,很容易踩中服务陷阱:有的机构只讲概念不落地,收了费用后只给几份通用文档就结束服务;有的只做前端内容铺设,没有配套线索承接工具,引来的…

2026/7/6 6:22:53 阅读更多 →
AMD Ryzen调试工具SMUDebugTool:5步解锁处理器隐藏性能

AMD Ryzen调试工具SMUDebugTool:5步解锁处理器隐藏性能

AMD Ryzen调试工具SMUDebugTool:5步解锁处理器隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…

2026/7/6 6:20:52 阅读更多 →

最新新闻

Axure RP终极汉化指南:3分钟让你的英文界面变中文

Axure RP终极汉化指南:3分钟让你的英文界面变中文

Axure RP终极汉化指南:3分钟让你的英文界面变中文 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英…

2026/7/6 7:15:06 阅读更多 →
工业级条码扫描系统架构与核心技术解析

工业级条码扫描系统架构与核心技术解析

1. 工业级条码扫描系统架构解析LV30条码扫描器与MKV42F64VLH16微控制器的组合,构成了一个完整的工业级条码识别解决方案。这套系统在硬件设计上采用了模块化架构,主要包含三个核心部分:光学采集模块:LV30扫描器采用1/3英寸全局快门…

2026/7/6 7:13:06 阅读更多 →
STM32F439ZG驱动RGB灯带实现智能灯光控制系统

STM32F439ZG驱动RGB灯带实现智能灯光控制系统

1. 项目概述:用智能灯光打造沉浸式空间体验这个项目的核心目标是通过IN-PC55TBTRGB全彩LED灯带和STM32F439ZG高性能微控制器的组合,将普通空间转化为动态光影艺术装置。作为一名嵌入式开发工程师,我最近完成了这个智能灯光控制系统的完整实现…

2026/7/6 7:11:06 阅读更多 →
基于CEC1302与IN-PC55TBTRGB的环境光效系统设计

基于CEC1302与IN-PC55TBTRGB的环境光效系统设计

1. IN-PC55TBTRGB与CEC1302的硬件组合解析这个项目核心在于利用IN-PC55TBTRGB可编程RGB LED和CEC1302控制器,打造沉浸式环境照明系统。IN-PC55TBTRGB是Inolux推出的5x5mm可寻址RGB LED模块,采用串行移位寄存器设计,支持逐颗编程控制。实测单个…

2026/7/6 7:11:06 阅读更多 →
基于MC6470 IMU与dsPIC30F4011的运动控制系统设计

基于MC6470 IMU与dsPIC30F4011的运动控制系统设计

1. 项目背景与核心器件选型在工业自动化和机器人控制领域,精确的运动控制和位置感知一直是核心技术挑战。MC6470作为一款6自由度(6DOF)惯性测量单元(IMU),集成了三轴加速度计和三轴陀螺仪,能够提供高精度的运动追踪数据。而dsPIC30F4011是Mic…

2026/7/6 7:09:05 阅读更多 →
N_m3u8DL-RE流媒体下载:3个实用技巧轻松搞定在线视频保存

N_m3u8DL-RE流媒体下载:3个实用技巧轻松搞定在线视频保存

N_m3u8DL-RE流媒体下载:3个实用技巧轻松搞定在线视频保存 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE…

2026/7/6 7:07:05 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻