作者:Kimberly Milam 和 Antonio Gulli
发布日期:2025年11月
构建有状态、智能的LLM智能体
探索会话和记忆在构建有状态、智能LLM智能体中的关键作用
核心目标:探索会话(Sessions)和记忆(Memory)在构建有状态、智能LLM智能体中的关键作用
上下文工程:在LLM的上下文窗口中动态组装和管理信息的过程,以实现有状态、智能的智能体
会话:包含整个对话的容器,保存对话的按时间顺序的历史记录和智能体的工作记忆
记忆:长期持久化的机制,捕获和整合跨多个会话的关键信息,为LLM智能体提供连续和个性化的体验
核心理念:有状态和个性化的AI从上下文工程开始
定义:动态组装和管理LLM上下文窗口中的信息,使智能体能够记住、学习和个性化交互
提示工程:
上下文工程:
类比:上下文工程就像智能体的"mise en place"(备料过程)——厨师在烹饪前收集和准备所有食材的关键步骤
上下文工程组装一个复杂的负载,包含多种组件:
获取上下文
检索用户记忆、RAG文档和最近的对话事件
准备上下文
动态构建完整的LLM调用提示
调用LLM和工具
迭代调用直到生成最终响应
上传上下文
将新信息上传到持久化存储
图1:智能体的上下文管理流程
关键点:这个循环在智能体操作循环的每一轮对话中持续进行,确保智能体始终拥有最相关的上下文
定义:封装单个连续对话的即时对话历史和工作记忆的基础元素
对话历史:对话的构建块
工作记忆:结构化的"工作记忆"或草稿板
重要:生产智能体的执行环境通常是无状态的,因此对话历史必须保存到持久化存储以维持连续的用户体验
虽然核心思想相似,但不同的智能体框架以不同的方式实现会话、事件和状态
智能体框架充当代码与LLM之间的通用翻译器
使用显式的Session对象
没有正式的"session"对象
目标:最终目标是生成LLM可以理解的"request"。对于Gemini模型,这是List[Content]
挑战:在多智能体系统中,多个智能体协作,必须共享信息
共享统一历史:
独立个人历史:
实现方式:独立历史通常通过Agent-as-a-Tool或使用Agent-to-Agent (A2A) Protocol实现
挑战:框架的内部数据表示引入了关键的架构权衡
Memory(记忆)层:
关键洞察:Memory层允许异构智能体通过共享公共认知资源实现真正的协作智能,而无需自定义翻译器
将智能体迁移到生产环境时,会话管理系统必须从简单日志演变为强大的企业级服务
安全与隐私:
数据完整性:
性能与可扩展性:
挑战:随着对话扩展,对话的token使用量增加,导致成本、延迟和质量问题
上下文窗口限制:
每个LLM都有一次可以处理的最大文本量。如果对话历史超过此限制,API调用将失败
API成本:
大多数LLM提供商根据发送和接收的token数量收费。更短的历史意味着更少的token和每轮更低的成本
延迟:
向模型发送更多文本需要更长时间处理,导致用户响应时间更慢。压缩使智能体感觉快速和响应灵敏
质量:
随着token数量增加,由于上下文中的额外噪声和自回归错误,性能可能会变差
类比:管理长对话就像聪明的旅行者为长途旅行打包行李箱——成功的关键不在于你能带多少,而在于只带你需要的东西
压缩策略缩小长对话历史,将对话压缩以适应模型的上下文窗口
保留最后N轮:
基于Token的截断:
递归总结:
重要:高级压缩策略应该在后台异步执行昂贵的操作(如递归总结)并持久化结果
智能体必须决定何时需要压缩
基于计数的触发:
基于时间的触发:
基于事件的触发:
示例:可以使用ADK的EventsCompactionConfig在配置的轮数后触发基于LLM的总结
定义:从对话或数据源中提取的有意义信息的快照
会话:
记忆:
类比:会话就像你在特定项目上使用的工作台,而记忆就像有组织的文件柜
强大的记忆系统将基本聊天机器人转变为真正智能的智能体
个性化:
上下文窗口管理:
数据挖掘和洞察:
智能体自我改进:
创建、存储和利用记忆是一个协作过程,每个组件都有独特的角色
提供记忆的原始源数据
配置决定记住什么和何时
提供记忆交互的结构和工具
存储会话的逐轮对话
处理记忆的存储、检索和压缩
图2:会话、记忆和外部知识之间的信息流
关键点:记忆管理器是一个主动系统,而不仅仅是被动的向量数据库。它的核心价值在于能够智能地提取、整合和策划记忆
记忆经常与另一个关键架构模式进行比较:检索增强生成(RAG)
检索增强生成引擎:
记忆管理器:
类比:RAG是智能体的研究图书馆,而记忆管理器是其个人助理。一个真正智能的智能体需要两者
智能体的记忆可以根据信息如何存储和如何捕获进行分类
从源数据中提取的物质:
提供关于记忆的上下文:
陈述性记忆("知道什么"):
程序性记忆("知道如何"):
记忆管理器通常使用以下一种或多种模式来组织记忆
集合模式:
结构化用户档案模式:
滚动总结模式:
存储架构是决定智能体能够多快和多智能地检索记忆的关键决策
向量数据库:
知识图谱:
混合方法:
记忆还可以根据如何创建以及信息如何派生进行分类
显式 vs 隐式:
内部 vs 外部:
用户级范围:
会话级范围:
应用级范围:
描述智能体如何处理非文本信息(如图像、视频和音频)的关键概念
来自多模态源的记忆:
具有多模态内容的记忆:
当前趋势:大多数当代记忆管理器专注于处理多模态源,同时生成文本内容,因为生成和检索非结构化二进制数据需要专门的模型、算法和基础设施
定义:自主地将原始对话数据转换为结构化、有意义的洞察
记忆生成是一个LLM驱动的ETL(提取、转换、加载)管道
摄入
客户端提供原始数据源
提取与过滤
提取有意义内容
整合
冲突解决和去重
存储
持久化到持久存储层
图3:记忆生成的高级算法
核心优势:记忆管理器自动化此管道,提供将对话噪声转换为结构化知识的单一、连贯系统
目标:回答基本问题:"这次对话中的什么信息足够有意义,可以成为记忆?"
这不是简单总结;这是一个有针对性的、智能的过滤过程
基于架构:
自然语言:
少样本提示:
关键点:"有意义"不是一个普遍概念;它完全由智能体的目的和用例定义
定义:将新信息整合到一个连贯、准确和不断发展的知识库中
用户可能在不同的对话中以多种方式提到相同的事实。简单的提取过程会创建两个冗余记忆
用户的状态随时间变化。没有整合,智能体的记忆将包含相互矛盾的事实
一个简单的事实可以变得更细致。初始记忆可能会演变得更复杂的理解
并非所有记忆永远有用。智能体必须主动修剪旧的、陈旧的或低置信度的记忆
主要操作:UPDATE(更新)、CREATE(创建)、DELETE/INVALIDATE(删除/作废)
可信度直接来自记忆的来源——其起源的详细记录和历史
引导数据:
用户输入:
工具输出:
关键点:这些细节对于两个原因至关重要:它们决定了每个源在记忆整合期间的权重,以及智能体在推理期间应该多大程度上依赖该记忆
智能体必须决定何时应该尝试记忆生成。这是一个关键的架构选择
会话完成:
轮次节奏:
实时:
权衡:频繁生成确保记忆高度详细和新鲜,但成本最高。不频繁生成更具成本效益,但可能创建较低保真度的记忆
更高级的方法:允许智能体自己决定何时创建记忆
在此模式中,记忆生成被公开为工具(如create_memory)
工具定义应该定义什么类型的信息应该被认为是有意义的
智能体可以分析对话并自主决定在识别出值得持久化的有意义信息时调用此工具
优势:这将识别"有意义信息"的责任从外部记忆管理器转移到智能体(以及你作为开发者)本身
注意:记忆生成是一个昂贵的操作,需要LLM调用和数据库写入。对于生产中的智能体,记忆生成应该几乎总是作为后台过程异步处理
目标:发现与当前对话最相关的记忆
相关性(语义相似性):
这个记忆在概念上与当前对话有多相关?
最近性(基于时间):
这个记忆是最近创建的吗?
重要性(重要性):
这个记忆整体有多关键?
最佳策略:混合方法,结合所有三个维度的分数。仅依赖基于向量的相关性是一个常见的陷阱
主动检索:
反应式检索(Memory-as-a-Tool):
一旦检索到相关记忆,最后一步是策略性地将它们放入模型的上下文窗口
系统指令:
对话历史:
风险:系统指令中存在"过度影响"的风险,对话历史中存在"对话注入"的风险
最佳实践:混合策略通常最有效。使用系统提示作为稳定、全局的记忆,使用对话注入或记忆作为工具用于临时、情景的记忆
定义:改进智能体工作流和推理的机制
存储"如何"不是一个信息检索问题;它是一个推理增强问题
提取:
整合:
检索:
与微调的区别:微调是相对缓慢、离线的训练过程,改变模型权重。程序性记忆通过动态注入正确的"剧本"到提示中提供快速、在线的适应
评估智能体的记忆是一个多层过程
记忆生成质量:
记忆检索性能:
端到端任务成功:
持续改进:评估不是一次性事件;它是持续改进的引擎。迭代过程涉及建立基线、分析失败、调整系统和重新评估
将记忆启用的智能体从原型迁移到生产需要关注企业级架构关注点
架构:
可扩展性:
弹性:
流程:1. 智能体推送数据 → 2. 记忆管理器在后台处理 → 3. 记忆被持久化 → 4. 智能体检索记忆
记忆来源于并包含用户数据,因此需要严格的隐私和安全控制
数据隔离:
PII编辑:
Memory Poisoning:档案员受过训练,可以发现并丢弃伪造或故意误导的文档——这是防止记忆中毒的保障。系统必须在将信息提交到长期记忆之前验证和清理信息
核心要点:会话和记忆是构建有状态、智能LLM智能体的基础
上下文工程:
会话:
记忆:
生产就绪:
最终目标:通过有效的上下文工程、会话管理和记忆系统,开发者可以创建更强大、个性化和持久的AI体验
Context Engineering: Sessions, Memory
上下文工程:会话与记忆
作者:Kimberly Milam 和 Antonio Gulli
发布日期:2025年11月