session_id 来标识:复用同一个 session_id,智能体就能记住之前的轮次。
当用户开启对话时,VeADK 会自动创建一个 Session 对象,全程跟踪并管理该会话的所有内容。
短期记忆基于 Google ADK 的 Session 机制,更多背景见 Google ADK Session。
统一入口:ShortTermMemory
无论使用哪种后端,均通过统一的veadk.memory.short_term_memory.ShortTermMemory 接入。它根据 backend(或 db_url)选择存储方式,并提供统一的会话管理能力。
参数
后端行为
所有后端提供相同的会话管理能力,区别在于数据保存位置和连接方式:local只在当前进程内保存会话;sqlite把会话写入本地文件;mysql与postgresql把会话写入外部数据库,适合多实例共享。
选择后端
与 Runner 协作
短期记忆通常传给Runner,由 Runner 自动创建或恢复会话。运行时复用相同的 session_id 即可延续上下文。
若既没给
Runner 传 short_term_memory 也没传 session_service,Runner 会自动创建一个 local(内存)短期记忆兜底。会话管理接口
你通常无需直接创建或管理Session,而是通过 session_service 管理整个会话生命周期:
- 启动新会话
create_session():用户发起交互时创建新的Session。 - 恢复已有会话
get_session():通过session_id检索特定Session,接续之前的进度。 - 保存进度
append_event():把新的交互(Event)追加到会话历史。 - 列出会话
list_sessions():查询某用户与应用下的活跃会话。 - 清理会话
delete_session():删除Session及其关联数据。
after_create_session_callback:
async def)。如果回调抛出异常,异常会传递给调用方,智能体不会继续执行。
数据库后端下,
ShortTermMemory.create_session() 会先检查并复用同 session_id 的已有会话,避免重复创建。回调仅在首次创建时运行。上下文压缩
随着会话进行,历史会不断增长,导致模型处理的数据变多、响应变慢。上下文压缩用滑动窗口汇总历史:当会话历史超过设定阈值时,自动压缩较早的事件。配置上下文压缩
配置后,Runner 会在每次达到间隔时自动压缩会话历史。
自定义压缩器
用LlmEventSummarizer 指定压缩使用的模型和提示词模板。模型的 API Key 与 API Base 通过环境变量提供,这里从 os.environ 读取,不要硬编码: