当前位置: 首页 > news >正文

AI Agent记忆系统设计:短期记忆与长期记忆的实现

AI Agent记忆系统设计:短期记忆与长期记忆的实现

在AI Agent的架构中,记忆系统(Memory System)是区分"智能助手"与"普通聊天机器人"çš„å ³é”®ç»„ä»¶ã€‚ä¸€ä¸ªæ²¡æœ‰è®°å¿†çš„Agentåªèƒ½å¤„ç†å•è½®å¯¹è¯ï¼Œè€Œå ·å¤‡å®Œå–„è®°å¿†ç³»ç»Ÿçš„Agentèƒ½å¤Ÿç†è§£ä¸Šä¸‹æ–‡ã€ç§¯ç´¯ç»éªŒã€æŒç»­è¿›åŒ–ã€‚æœ¬æ–‡å°†æ·±å ¥è®²è§£AI Agentè®°å¿†ç³»ç»Ÿçš„ä¸‰å¤§æ ¸å¿ƒç±»åž‹â€”â€”Buffer Memory、Summary Memory和Vector Memory,并给出完整的Pythonå®žçŽ°ä»£ç ã€‚

一、为什么记忆系统如此重要?

æƒ³è±¡ä½ åœ¨ä¸Žä¸€ä½åŠ©æ‰‹å¯¹è¯ï¼š

  • ä½ è¯´ï¼š"我住在上海"
  • äº”è½®ä¹‹åŽä½ é—®ï¼š"我住的城市今天天气如何?"

如果没有记忆系统,Agentå®Œå ¨æ— æ³•å›žç­”è¿™ä¸ªé—®é¢˜ã€‚è®°å¿†ç³»ç»Ÿèµ‹äºˆäº†Agent:

| 记忆类型 | 作用范围 | æ ¸å¿ƒåŠŸèƒ½ | |---------|---------|---------| | 短期记忆 | 当前会话 | 保持对话上下文连贯性 | | 长期记忆 | è·¨ä¼šè¯æŒä¹ åŒ– | 存储用户偏好、历史事实 | | 外部记忆 | 知识库/文档 | 扩展Agent的知识边界 |

二、短期记忆:Buffer Memory(缓冲记忆)

Buffer Memory是最基础的短期记忆形式,它直接保存最近的对话历史,通常以滑动窗口的形式维护。

2.1 原理与实现

Buffer Memoryçš„æ ¸å¿ƒæ€æƒ³å¾ˆç®€å•ï¼šä¿ç•™æœ€è¿‘Nè½®å¯¹è¯ï¼Œè¶ å‡ºçª—å£çš„è‡ªåŠ¨ä¸¢å¼ƒã€‚è¿™ç§æ–¹å¼è®¡ç®—å¼€é”€ä½Žã€å»¶è¿Ÿå°ï¼Œé€‚åˆå¯¹å®žæ—¶æ€§è¦æ±‚é«˜çš„åœºæ™¯ã€‚

from collections import deque from dataclasses import dataclass from typing import List, Optional from datetime import datetime @dataclass class Message: role: str # "user" 或 "assistant" content: str timestamp: datetime = None def __post_init__(self): if self.timestamp is None: self.timestamp = datetime.now() class BufferMemory: """滑动窗口缓冲记忆 保留最近 k 轮对话,适合维护短时上下文。 """ def __init__(self, max_turns: int = 10): self.max_turns = max_turns self.buffer = deque(maxlen=max_turns * 2) # æ¯è½®åŒ å«user+assistant def add_message(self, role: str, content: str) -> None: """æ·»åŠ ä¸€æ¡æ¶ˆæ¯åˆ°ç¼“å†²åŒº""" self.buffer.append(Message(role=role, content=content)) def get_history(self) -> List[Message]: """获取当前缓冲区中的所有消息""" return list(self.buffer) def get_formatted_history(self) -> str: """æ ¼å¼åŒ–ä¸ºå­—ç¬¦ä¸²ä¾›LLM使用""" lines = [] for msg in self.buffer: role_label = "用户" if msg.role == "user" else "助手" lines.append(f"[{role_label}] {msg.content}") return "\n".join(lines) def clear(self) -> None: """æ¸ ç©ºè®°å¿†""" self.buffer.clear() def is_empty(self) -> bool: return len(self.buffer) == 0 # 使用示例 buffer = BufferMemory(max_turns=3) # 模拟对话 buffer.add_message("user", "ä½ å¥½ï¼Œæˆ‘æƒ³è®¢ä¸€å¼ åŽ»åŒ—äº¬çš„æœºç¥¨") buffer.add_message("assistant", "好的,请问您想什么时候出发?") buffer.add_message("user", "明天上午") buffer.add_message("assistant", "明天上午的航班有CA1501和MU5101...") buffer.add_message("user", "我要CA1501") print("=== Buffer Memory å† å®¹ ===") print(buffer.get_formatted_history()) print(f"\n总消息数:{len(buffer.get_history())}")

2.2 Token感知的Buffer Memory

åœ¨å®žé™ ç”Ÿäº§çŽ¯å¢ƒä¸­ï¼Œæ›´é«˜çº§çš„åšæ³•æ˜¯æŒ‰Tokenæ•°é‡è€Œéžè½®æ•°æŽ§åˆ¶çª—å£å¤§å°ï¼Œå› ä¸ºä¸åŒLLM有固定的上下文长度限制。

http://www.gsyq.cn/news/1622034.html

相关文章:

  • Anthropic Mythos门控能力解析:多步推理与跨文档验证
  • 门窗百叶全品类维护保养手册|铝合金、PVC、实木、卷帘通用养护技巧
  • Anthropic架构归零:请求编排层的原生化革命
  • DeepSeek R1:面向工程落地的可验证大模型架构解析
  • AI模型集成与智能代理架构实战指南
  • GitHub今日热榜 | 2026-07-01:健身数据集登顶
  • 计算机Java毕设实战-基于 SpringBoot 的高校摄影社团成员信息运维系统的设计与实现 校园摄影赛事报名管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 2026春招AI抢人大战:小白程序员如何抓住高薪风口,手把手教你收藏必看攻略!
  • 端侧AI与大模型技术:2026年趋势与本地部署实践
  • 大模型Function Calling实战:让Agent拥有工具调用能力
  • 11万的家用机器人,1.1万人已经下单了
  • APBA,3-Aminophenylboronic Acid,3-氨基苯硼酸的简介与应用概述
  • 2026深度实测|企业级AI编程软件权威选型指南(制造业MES产线场景)
  • 大旅商学院解析传统与新型旅行社的培训课程对比
  • 从0到1拿下ICP许可证:条件、材料、流程、外资政策一篇说清(2026版)
  • iOS 15-16设备激活锁绕过终极指南:applera1n工具深度实战
  • OmenSuperHub终极指南:3步解锁惠普游戏本隐藏性能
  • 模板驱动文档自动化:从填空题到装配流水线
  • AI 项目管理工具 PMProject 实战应用指南
  • [Ru(bpy)2(PNT)]2+ 邻菲咯啉双齿螯合 Ru (II)金属配合物
  • 磨齿机数据采集智能运维系统方案
  • 微信聊天记录永久保存完全指南:让AI记住你的每一段对话
  • 工作太忙没时间想选题?直接套用这5个MBA论文模板
  • 如何在通达信中实现智能缠论分析:ChanlunX插件完整指南
  • 5步实现Switch游戏画面投屏:SysDVR完整使用指南
  • Phalcon Compliance 3.1重磅更新,三大维度全面升级,更快、更顺、更省心!
  • MuleSoft企业级AI编排:让大模型真正读懂SAP、Salesforce和Oracle
  • Three.js 3d热力图-体积版教程
  • 家政服务小程序开发功能玩法分析:同城预约、智能派单与商用落地
  • CentOS系统版本查看实用方法_元一软件