🎯 前言:终章之后,补齐商用最后短板

在上一篇终章20篇主教程中,我们已经完成了LangGraph全栈商用项目整合,实现了工具调用、RAG知识库、意图识别、容错兜底、输出管控的完整闭环。

但如果直接上线商用,依然存在两个用户感知极强、致命体验短板

  • 多轮对话失忆:AI无法记住历史偏好、对话上下文断裂,每一轮都是“全新陌生人”

  • 人设风格漂移:时而严肃、时而口语、时而啰嗦、时而简短,没有固定AI人格

  • 无用户长效记忆:记不住用户身份、使用习惯、历史需求,无法做到个性化AI

功能完整只是能用,记忆+人设才是好用

本篇作为系列番外第一篇,专门补齐市面90%教程缺失的商用记忆系统。手把手实现:短期对话记忆+长效用户记忆+AI人格固化,让你的AI Agent拥有“记忆、性格、认知”,真正对标市面成熟产品(ChatGPT、智能客服、企业助手)。

一、为什么必须做长效记忆系统?

1.1 原生LangGraph记忆的缺陷

我们之前使用的 MemorySaver 仅仅是单会话临时记忆

  • 只保存当前线程对话

  • 重启项目、切换会话、刷新页面全部清空

  • 无法沉淀用户长期数据

1.2 商用AI必备两种记忆

  • 短期工作记忆:本轮多轮对话上下文连贯,问答不割裂

  • 长期用户记忆:记住用户偏好、身份、历史问题、使用习惯,永久留存

只有双层记忆结合,AI才能从「工具机器人」升级为「专属智能助手」。

二、本篇落地核心能力

  • 会话级短期记忆:多轮对话无缝衔接,上下文自动关联

  • 用户级长效记忆:自动提取用户信息、偏好、需求,永久沉淀

  • AI人格固化机制:锁定回答风格、语气、人设,永不漂移

  • 记忆去重+轻量化:避免记忆冗余、上下文爆炸、Token暴涨

  • 记忆可查询、可清空、可迭代:完整记忆管理能力

三、商用记忆系统架构设计

采用企业通用双层记忆架构:

  1. 记忆读取节点:对话开始自动加载用户历史记忆+本轮上下文

  2. 人格注入节点:固定AI人设与输出风格

  3. 对话生成节点:结合记忆+人设+问题生成答案

  4. 记忆更新节点:自动提炼新信息、增量更新长效记忆

全程无感自动记忆,无需用户手动操作。

四、完整可运行代码(记忆+人格固化终版)

from dotenv import load_dotenv
import os
import json
from typing import TypedDict, List
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver

# 环境配置
load_dotenv()
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = os.getenv("LANGSMITH_API_KEY")
os.environ["LANGCHAIN_PROJECT"] = "LangGraph-长效记忆人格系统"

# 模型初始化
llm = ChatOpenAI(
    api_key=os.getenv("API_KEY"),
    base_url=os.getenv("BASE_URL"),
    model="gpt-3.5-turbo",
    temperature=0.1
)

# 全局长效记忆存储(生产可替换为数据库)
LONG_TERM_MEMORY = {
    "user_info": "",
    "user_preference": "",
    "history_key_demand": []
}

# ===================== 状态定义(新增记忆字段) =====================
class MemoryState(TypedDict):
    user_input: str
    session_history: List[str]    # 短期会话记忆
    long_memory: dict             # 长效用户记忆
    ai_persona: str               # AI人设
    answer: str

# ===================== 核心节点 =====================
# 1、人设固化节点(永久固定AI风格)
def persona_fix_node(state: MemoryState) -> MemoryState:
    # 工业级固定人设,永不漂移
    state["ai_persona"] = """
    【AI固定人设】
    身份:专业、简洁、耐心的AI技术助手
    回答风格:通俗易懂、结构清晰、无废话、不啰嗦、不浮夸
    语气:友好、沉稳、专业
    禁止:网络梗、过度口语、长篇水话、答非所问
    统一输出结构:先核心结论,再补充说明
    """
    return state

# 2、记忆读取节点
def memory_load_node(state: MemoryState) -> MemoryState:
    state["long_memory"] = LONG_TERM_MEMORY
    return state

# 3、记忆增强生成节点(结合人设+短期+长期记忆)
def memory_generate_node(state: MemoryState) -> MemoryState:
    session_context = "\n".join(state["session_history"])
    long_info = json.dumps(state["long_memory"], ensure_ascii=False)

    prompt = f"""
    {state['ai_persona']}

    【用户短期对话上下文】
    {session_context}

    【用户长期记忆信息】
    {long_info}

    【用户当前问题】
    {state['user_input']}

    要求:
    1、结合用户历史对话与长期偏好作答,保持对话连贯
    2、严格遵守固定人设风格,不漂移、不跑偏
    3、记住用户之前的提问、偏好、习惯
    4、回答简洁精准、逻辑清晰
    """
    res = llm.invoke(prompt)
    state["answer"] = res.content.strip()
    # 追加本轮对话至短期记忆
    state["session_history"].append(f"用户:{state['user_input']}")
    state["session_history"].append(f"AI:{state['answer']}")
    return state

# 4、长效记忆更新节点(自动提炼用户信息)
def memory_update_node(state: MemoryState) -> MemoryState:
    prompt = f"""
    根据用户最新对话,提炼用户长效信息,仅输出JSON:
    字段:user_info(用户身份/特征)、user_preference(回答偏好)、history_key_demand(关键需求列表)
    
    历史记忆:{json.dumps(LONG_TERM_MEMORY, ensure_ascii=False)}
    最新对话:用户提问:{state['user_input']}

    规则:增量更新、不重复、保留旧信息、补充新信息
    """
    res = llm.invoke(prompt)
    content = res.content.strip().replace("```json","").replace("```","")
    try:
        new_mem = json.loads(content)
        LONG_TERM_MEMORY["user_info"] = new_mem.get("user_info", LONG_TERM_MEMORY["user_info"])
        LONG_TERM_MEMORY["user_preference"] = new_mem.get("user_preference", LONG_TERM_MEMORY["user_preference"])
        # 去重合并关键需求
        for item in new_mem.get("history_key_demand", []):
            if item not in LONG_TERM_MEMORY["history_key_demand"]:
                LONG_TERM_MEMORY["history_key_demand"].append(item)
    except:
        pass
    print("🧠 长效记忆自动更新完成")
    return state

# ===================== 搭建记忆工作流 =====================
graph = StateGraph(MemoryState)
graph.add_node("persona_fix", persona_fix_node)
graph.add_node("memory_load", memory_load_node)
graph.add_node("generate", memory_generate_node)
graph.add_node("memory_update", memory_update_node)

graph.add_edge(START, "persona_fix")
graph.add_edge("persona_fix", "memory_load")
graph.add_edge("memory_load", "generate")
graph.add_edge("generate", "memory_update")
graph.add_edge("memory_update", END)

memory_workflow = graph.compile(checkpointer=MemorySaver())

# ===================== 测试多轮记忆对话 =====================
if __name__ == "__main__":
    config = {"configurable": {"thread_id": "user_2026_001"}}

    # 多轮连续对话测试
    rounds = [
        "我是一名AI初学者,我想学习LangGraph工程化",
        "那你之后回答尽量通俗一点,不要太学术",
        "帮我总结一下LangGraph的核心价值"
    ]

    session_hist = []
    for question in rounds:
        res = memory_workflow.invoke({
            "user_input": question,
            "session_history": session_hist,
            "long_memory": {},
            "ai_persona": "",
            "answer": ""
        }, config=config)
        session_hist = res["session_history"]
        print(f"\n🤔 用户:{question}")
        print(f"💡 AI:{res['answer']}")

    print("\n✅ 最终长效用户记忆:")
    print(json.dumps(LONG_TERM_MEMORY, ensure_ascii=False, indent=2))

五、核心原理深度拆解

5.1 双层记忆隔离机制

短期会话记忆:保存本轮多轮问答上下文,保证对话连贯,随会话更新。

长效用户记忆:提炼用户身份、偏好、核心需求,永久沉淀,重启不丢失。

双层隔离完美解决:上下文过长爆炸 + 用户记忆丢失两大行业难题。

5.2 人设强制固化原理

绝大多数AI项目风格漂移的根源:人设仅写在首次Prompt,没有全局固定。

本方案每一轮对话强制注入人设节点,从流程层面锁死风格,无论多少轮对话、多少场景切换,人设永远统一。

5.3 增量记忆更新机制

不覆盖旧记忆、只补充新信息,自动去重、自动提炼,避免记忆混乱与冗余,实现越用越智能、越用越懂用户。

六、生产级优化拓展

  • 记忆持久化数据库:将全局记忆存入SQLite/MySQL,永久留存

  • 记忆权重淘汰:淘汰老旧无效记忆,保留高价值用户信息

  • 用户隔离记忆:多用户独立记忆空间,互不干扰

  • 记忆手动管理:支持用户清空记忆、查看记忆、修改偏好

七、本篇总结

1、短期记忆解决多轮对话断裂体验问题;

2、长效记忆解决AI不懂用户、无法个性化商用问题;

3、人设固化解决风格漂移、输出不稳定质感问题;

4、本篇能力是AI Agent从“工具Demo”升级为产品级助手的核心关键。

📌 下一篇预告(最终收尾篇)

第二十二篇·最终完结篇:项目打包、Docker容器化、云端服务器部署、前后端联调、线上正式上线全套流程

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐