AI学习——记忆系统

记忆系统---支持多轮对话

  • [一、先搞懂:短期记忆 vs 长期记忆](#一、先搞懂:短期记忆 vs 长期记忆)
    • [1. 短期记忆(Short-Term Memory)](#1. 短期记忆(Short-Term Memory))
    • [2. 长期记忆(Long-Term Memory)](#2. 长期记忆(Long-Term Memory))
  • [二、LangChain 最常用 3 种记忆](#二、LangChain 最常用 3 种记忆)
    • [1. ConversationBufferMemory(最简单记忆)](#1. ConversationBufferMemory(最简单记忆))
    • [2. ConversationSummaryMemory(总结记忆)](#2. ConversationSummaryMemory(总结记忆))
    • [3. ConversationBufferWindowMemory(窗口记忆)](#3. ConversationBufferWindowMemory(窗口记忆))
  • [三、核心:Agent + 记忆 = 真正多轮对话](#三、核心:Agent + 记忆 = 真正多轮对话)
  • [四、带记忆的对话 Agent](#四、带记忆的对话 Agent)
  • 五、运行效果
  • [六、3 个记忆组件对比](#六、3 个记忆组件对比)
  • 七、总结

介绍:

  1. 短期记忆 vs 长期记忆
  2. LangChain 核心记忆组件
  3. 给 Agent 加上记忆,实现真正多轮对话

一、先搞懂:短期记忆 vs 长期记忆

1. 短期记忆(Short-Term Memory)

  • 保存当前对话上下文
  • 关掉程序就消失
  • 作用:让 AI 知道刚才聊了什么
  • 例子:你刚才问了什么,AI 要记得

2. 长期记忆(Long-Term Memory)

  • 永久保存
  • 存在文件/数据库/向量库
  • 作用:记住用户习惯、历史对话、知识库
  • 例子:你喜欢什么风格、你之前的论文题目

二、LangChain 最常用 3 种记忆

1. ConversationBufferMemory(最简单记忆)

  • 所有对话原文全部存起来
  • 优点:最简单
  • 缺点:对话越长越占token

2. ConversationSummaryMemory(总结记忆)

  • 不存原文,存对话总结
  • 优点:省token、适合长对话

3. ConversationBufferWindowMemory(窗口记忆)

  • 只保留最近 N 轮对话
  • 优点:轻量、稳定、最常用

三、核心:Agent + 记忆 = 真正多轮对话

没有记忆 → 问完就忘

有记忆 → 能连贯聊天、记住上下文


四、带记忆的对话 Agent

功能

  • 带短期记忆
  • 多轮对话不丢失上下文
  • 可连续提问
  • 基于你之前学的 ReAct Agent
python 复制代码
# 安装依赖
# pip install langchain langchain-openai
python 复制代码
# ==========================
# 1. 导入模块
# ==========================
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory  # 记忆核心
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool
from langchain import hub

# ==========================
# 2. 初始化LLM
# ==========================
llm = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0.3,
    api_key="你的API_KEY",
    base_url="https://api.chatanywhere.tech/v1"
)

# ==========================
# 3. 【核心】添加记忆!
# 记忆会自动保存对话历史
# ==========================
memory = ConversationBufferMemory(
    memory_key="chat_history",  # 记忆键(固定)
    return_messages=True       # 返回消息格式
)

# ==========================
# 4. 定义工具
# ==========================
def simple_calculate(expression):
    return str(eval(expression))

tools = [
    Tool(
        name="Calculator",
        func=simple_calculate,
        description="用于计算数学表达式"
    )
]

# ==========================
# 5. 创建带记忆的 Agent
# ==========================
prompt = hub.pull("hwchase17/react-chat")  # 支持记忆的提示词
agent = create_react_agent(llm, tools, prompt)

# 执行器 + 记忆
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    memory=memory,  # 把记忆加进来
    verbose=True,
    max_iterations=3
)

# ==========================
# 6. 多轮对话测试
# ==========================
print("=== 带记忆的AI助手(输入exit退出)===")
while True:
    user_input = input("你:")
    if user_input.lower() == "exit":
        print("对话结束")
        break
    
    # 运行Agent(记忆自动保存)
    response = agent_executor.invoke({"input": user_input})
    print("AI:", response["output"])

五、运行效果

复制代码
你:我叫小明
AI:好的,我记住你叫小明啦!

你:我是谁?
AI:你是小明!

你:10+20等于多少?
AI:等于30。

你:刚才算的结果是多少?
AI:刚才算的是 10+20=30。

这就是记忆的作用!

没有记忆,AI 根本不知道"刚才算的是什么"。


六、3 个记忆组件对比

组件 特点 适合场景
ConversationBufferMemory 存全部原文,最简单 短对话
ConversationBufferWindowMemory 只存最近几轮 长对话
ConversationSummaryMemory 存总结,省token 超长篇对话

七、总结

  • 记忆 = 保存对话历史
  • Agent 每次提问都会带上历史
  • 所以能理解上下文、实现多轮对话

相关推荐
凯丨1 小时前
会“做梦“的 AI:用一句话生成可以玩的世界——读懂世界模型 Genie 3
人工智能·microsoft
ACP广源盛139246256731 小时前
GSV2221@ACP# 高带宽低功耗显示转换芯片,赋能 TRAE SOLO 设备高清扩展升级
人工智能·嵌入式硬件·电脑·音视频
大强同学1 小时前
我用 Claude Code,把 NotebookLM 变成了 Obsidian 插件
人工智能·agent·claude·skill·notebooklm
xcLeigh1 小时前
Python入门:Python3 operator模块全面学习教程
开发语言·python·学习·教程·python3·operator
Dest1ny-安全1 小时前
2026最新CTF知识库:12大Web漏洞深度文章+1156篇历年大赛WP+50+脚本+Payload速查 +AI/RAG离线在线知识库
java·学习·安全·web安全·servlet
Likelong~2 小时前
Agent vs Workflow
ai
J2虾虾2 小时前
Spring AI Alibaba - Memory 短期记忆
人工智能·spring·microsoft
魔法阵维护师2 小时前
从零开发游戏需要学习的c#模块,第三十二章(Boss 战系统)
学习·游戏·c#
洵有兮2 小时前
Shell 脚本编程学习总结(基础 + 变量 + 条件 + 流程控制 + 函数数组)
linux·学习