首页/新闻资讯/正文详情

125.Agent-LangChain核心组件-删除消息removeMessage(模型输出后)

发布时间:2026/9/27 22:41:12 来源:云帆数科 栏目:资讯中心
125.Agent-LangChain核心组件-删除消息removeMessage(模型输出后)
摘要本文介绍如何在 LangChain 智能代理中通过after_model注解与RemoveMessage函数自动清理对话历史。核心思路是在每次模型响应后检查消息总数若超过阈值则删除最早的消息从而将上下文控制在可控范围内。文中提供了完整的 Python 示例代码演示了从环境配置、代理创建到多轮对话验证的完整流程。内容参考于图灵AI大模型全栈模型输出后是通过 after_model 注解来实现如下图红框删除消息是通过 RemoveMessage 函数来实现它是通过消息的id来删除下图红框是通过for循环得到所有消息的id然后调用 RemoveMessage 删除所有的消息代码fromlangchain.messagesimportRemoveMessagefromlangchain.agentsimportcreate_agent,AgentStatefromlangchain.agents.middlewareimportafter_modelfromlanggraph.checkpoint.memoryimportInMemorySaverfromlanggraph.runtimeimportRuntimefromlangchain_core.runnablesimportRunnableConfigfromlangchain_qwqimportChatQwenfromdotenvimportload_dotenvimportos# 加载环境变量load_dotenv()# 初始化模型llmChatQwen(modelqwen3.6-plus,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL))# 通过 after_model 注解设置模型输出后执行 delete_old_messages 函数after_modeldefdelete_old_messages(state:AgentState,runtime:Runtime)-dict|None: 删除旧消息以保持对话上下文在可控范围内。 工作原理 1. 每次模型响应后检查消息总数 2. 如果超过阈值2条删除最早的消息 3. 使用 RemoveMessage 标记删除LangGraph 会自动处理 参数 state: 当前代理状态包含所有消息历史 runtime: 运行时上下文提供额外配置信息 返回 dict | None: 包含要删除的消息列表或 None不执行删除 # 从状态中获取所有消息messagesstate[messages]# 检查消息数量是否超过限制保留最近2条iflen(messages)2:print(----------------------开始删除部分消息---------------------------)# 获取要删除的消息最早的2条messages_to_removemessages[:2]# 创建删除标记列表 10 通过循环删除前8条# RemoveMessage 是一个特殊对象告诉 LangGraph 要删除哪些消息removal_markers[RemoveMessage(idmsg.id)formsginmessages_to_remove]# 返回字典LangGraph 会自动处理删除操作return{messages:removal_markers}# 如果消息数量未超限不做任何操作returnNone# 创建智能代理 # 配置代理agentcreate_agent(# 使用的语言模型此处为示例模型名modelllm,# 工具列表示例为空实际可添加搜索、计算等工具tools[],# 系统提示词定义代理的基本行为准则system_prompt请保持回答简洁明了直击要点。,# 注册中间件列表# delete_old_messages 会在每次模型响应后自动执行middleware[delete_old_messages],# 检查点保存器用于保存和恢复对话状态# InMemorySaver 在内存中存储适合开发和测试checkpointerInMemorySaver(),)# 配置对话会话 # 配置对象设置当前对话线程ID# 相同的 thread_id 可以恢复之前的对话历史config:RunnableConfig{configurable:{thread_id:1# 线程ID用于标识不同的对话会话}}# 第一轮对话 print(*50)print(第一轮对话自我介绍)print(*50)streamagent.stream_events(# 用户输入消息{messages:[{role:user,content:你好我叫计算机王}]},config,versionv3,# 使用 v3 版本的流式事件协议)# 遍历流式响应打印当前状态快照forsnapshotinstream.values:# 提取并显示消息列表类型 内容messages_info[(msg.type,msg.content)formsginsnapshot[messages]]print(f当前消息历史 ({len(snapshot[messages])}条):)formsg_type,contentinmessages_info:print(f [{msg_type}]:{content[:50]}...)# 截断显示print(-*30)# 第二轮对话 print(\n*50)print(第二轮对话请求创作内容)print(*50)streamagent.stream_events({messages:[{role:user,content:请写一首关于猫咪的短诗}]},config,versionv3,)forsnapshotinstream.values:messages_info[(msg.type,msg.content)formsginsnapshot[messages]]print(f当前消息历史 ({len(snapshot[messages])}条):)formsg_type,contentinmessages_info:print(f [{msg_type}]:{content[:50]}...)print(-*30)# 第三轮对话 print(\n*50)print(第三轮对话询问个人信息)print(*50)streamagent.stream_events({messages:[{role:user,content:我叫什么名字}]},config,versionv3,)forsnapshotinstream.values:messages_info[(msg.type,msg.content)formsginsnapshot[messages]]print(f当前消息历史 ({len(snapshot[messages])}条):)formsg_type,contentinmessages_info:print(f [{msg_type}]:{content[:50]}...)print(-*30)

相关推荐

手把手教你用 Cline + 腾讯云 DeepSeek R1 限时免费 API 接入 TaoToken 统一通道
手把手教你用 Cline + 腾讯云 DeepSeek R1 限时免费 API 接入 TaoToken 统一通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:41:05

兰州官网SEO技巧速查手册:不懂代码也能搞定
兰州官网SEO技巧速查手册:不懂代码也能搞定

兰州官网SEO技巧速查手册:不懂代码也能搞定 很多老板拿着“自己不会代码想做网站”这个死结,在兰州的建站圈里转了好几圈。花了几万块做出来的站,百度搜不到,客户也找不到,钱白花不说,还耽误生意。别急,这份《兰州官网seo技巧速查手册》就是为你… · 2026/9/27 22:41:05

RL-赵-(八)-Value函数拟合算法01-StateValue估算:TD函数逼近算法02【目标函数】【平稳分布/Stationary distribution】
RL-赵-(八)-Value函数拟合算法01-StateValue估算:TD函数逼近算法02【目标函数】【平稳分布/Stationary distribution】

二、Algorithm for State Value estimation 1、Objective function 首先,用一种更正式的方式: 令vπ(s)v_\pi(s)vπ​(s)和v^(s,w)\hat{v}(s,w)v^(s,w)分别表示true state value和approximate函数; 我们的目标是找到一个最优的 www,使得 v^(s,w)\hat{v}(s,w)v^(s,w) 对于每… · 2026/9/27 22:41:05

1553B 总线方式码与状态字核心概念与实操详解
1553B 总线方式码与状态字核心概念与实操详解

1. 核心概念与价值定位 1.1 方式码(方式代码)定义 方式码是 1553B 总线指令体系中专用系统级指令,区别于普通业务子地址通信; 当指令字中子地址字段 11111(十进制 31) 时,该指令判定为方式码… · 2026/9/27 23:15:13

CAN总线与菊花链选型实战指南:通信协议决策逻辑
CAN总线与菊花链选型实战指南:通信协议决策逻辑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:15:07

写毛利语论文,别让 AI 替你“懂”那个词:我的分阶段工具清单
写毛利语论文,别让 AI 替你“懂”那个词:我的分阶段工具清单

如果你是毛利语(te reo Māori)专业的学生,大概很熟悉这种崩溃:一个词查出来有好几个意思,长音符号 macron(ā、ē、ī、ō、ū) 稍不注意就可能改变词义;更别说 whakapapa、whenua、… · 2026/9/27 23:15:07

汽车电子入门:从STM32到FOC的电机控制实战路线
汽车电子入门:从STM32到FOC的电机控制实战路线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:15:07

STM32CubeMX 6.14入门:从下载安装到点灯调试实战指南
STM32CubeMX 6.14入门:从下载安装到点灯调试实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:15:07

青岛网站建设-中国互联一文搞懂
青岛网站建设-中国互联一文搞懂

青岛网站建设多少钱?中国互联方案对比避坑指南 不会写代码想做官网,最怕被坑。找青岛网站建设服务商,报价从3千到3万都有,到底多少钱才合理? 今天不吹牛,直接扒开“青岛网站建设-中国互联”这块牌子下的技术底裤。… · 2026/9/27 23:14:54

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码