news 2026/7/16 5:13:57

Google Agent Development Kit (ADK) 指南 第六章:记忆与状态管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Google Agent Development Kit (ADK) 指南 第六章:记忆与状态管理

Google Agent Development Kit (ADK) 指南 第六章:记忆与状态管理

系列教程:这是《Google ADK 指南》系列的第六章。

前置知识:已完成第五章,掌握工具集成。


目录

  1. 记忆系统基础
  2. 短期记忆
  3. 长期记忆
  4. 状态管理
  5. 记忆优化策略

1. 记忆系统基础

1.1 记忆的作用

记忆系统让 Agent 能够:

  • 💬保持上下文:多轮对话连贯
  • 👤记住用户:个性化服务
  • 📚积累经验:持续学习改进
  • 🔗关联信息:跨会话知识

1.2 记忆架构

┌─────────────────────────────────────────────────────┐ │ 记忆管理系统 │ ├─────────────────────────────────────────────────────┤ │ ┌───────────────┐ ┌───────────────┐ │ │ │ 短期记忆 │ │ 长期记忆 │ │ │ │ (对话历史) │ │ (向量存储) │ │ │ └───────┬───────┘ └───────┬───────┘ │ │ │ │ │ │ └────────┬─────────┘ │ │ ↓ │ │ ┌───────────────┐ │ │ │ 记忆管理器 │ │ │ │ (检索/更新) │ │ │ └───────────────┘ │ └─────────────────────────────────────────────────────┘

1.3 记忆类型对比

类型存储内容存储位置生命周期
短期记忆对话历史内存/Redis会话期间
长期记忆重要事实向量数据库永久
程序记忆技能规则配置文件永久
情景记忆特定事件数据库按需

2. 短期记忆

2.1 对话缓冲记忆

fromgoogle.adk.memoryimportConversationBufferMemory# 基础配置memory=ConversationBufferMemory(max_turns=10,# 保留 10 轮对话max_tokens=4000,# 最多 4000 tokensreturn_messages=True# 返回消息对象)# 使用agent=Agent(memory=memory)# 添加消息memory.add_message(role="user",content="你好")memory.add_message(role="assistant",content="你好!有什么可以帮助你的?")# 获取历史history=memory.get_history()# 输出:[("user", "你好"), ("assistant", "你好!...")]# 清除记忆memory.clear()

2.2 窗口记忆

fromgoogle.adk.memoryimportConversationWindowMemory# 只保留最近 N 轮memory=ConversationWindowMemory(window_size=5,# 最近 5 轮include_summary=True# 包含早期对话摘要)# 自动摘要早期对话# 对话 1-10: 摘要# 对话 11-15: 完整历史

2.3 实体记忆

fromgoogle.adk.memoryimportEntityMemory# 提取并存储实体信息memory=EntityMemory(entities=["user_name","preferences","location"],extraction_prompt="从对话中提取用户信息")# 自动提取memory.extract_and_store("我叫张三,喜欢喝咖啡")# 存储:{"user_name": "张三", "preferences": ["咖啡"]}# 查询实体name=memory.get_entity("user_name")# "张三"

3. 长期记忆

3.1 向量记忆

fromgoogle.adk.memoryimportVectorStoreMemoryfromgoogle.adk.vectorstoresimportVertexAISearch# 配置向量存储memory=VectorStoreMemory(store=VertexAISearch(project_id="your-project",location_id="global",index_id="memory-index"),embedding_model="text-embedding-004",top_k=5)# 添加记忆memory.add("用户喜欢红色产品",metadata={"user_id":"u123","category":"preference"})memory.add("用户住在北京",metadata={"user_id":"u123","category":"location"})# 语义搜索results=memory.search("用户偏好什么颜色?")# 返回最相关的记忆

3.2 总结记忆

fromgoogle.adk.memoryimportSummaryMemory# 自动总结对话memory=SummaryMemory(summarizer=Agent(model=Gemini("gemini-2.0-flash"),instruction="用一句话总结对话要点"),summary_interval=10# 每 10 轮总结一次)# 对话过程中自动创建总结# "用户咨询了产品 A 的价格和库存,表示考虑购买"

3.3 组合记忆

fromgoogle.adk.memoryimportCompositeMemory# 多层记忆系统memory=CompositeMemory(# 短期:最近对话short_term=ConversationBufferMemory(max_turns=10),# 中期:会话摘要mid_term=SummaryMemory(),# 长期:向量存储long_term=VectorStoreMemory(store=VertexAISearch(...)),# 实体:用户信息entity=EntityMemory(entities=["profile","preferences"]))# 检索时融合所有记忆context=memory.get_context(query="用户喜欢什么?")

4. 状态管理

4.1 会话状态

fromgoogle.adk.stateimportSessionState# 创建会话状态state=SessionState(session_id="session_123",ttl=3600# 1 小时过期)# 设置状态state.set("user_id","u123")state.set("cart_items",["item1","item2"])state.set("current_step","payment")# 获取状态user_id=state.get("user_id")cart=state.get("cart_items")# 更新状态state.update("cart_items",lambdax:x+["item3"])# 删除状态state.delete("current_step")# 清除所有state.clear()

4.2 工作流状态

fromgoogle.adk.stateimportWorkflowState# 多步骤工作流状态state=WorkflowState(workflow_id="order_process",steps=["validate","payment","ship","complete"])# 推进状态state.next_step()# validate → paymentstate.goto("ship")# 直接跳转到 ship# 检查状态ifstate.current_step=="payment":process_payment()# 状态回滚state.rollback()# 回到上一步# 状态持久化state.save()# 保存到数据库state.load()# 从数据库加载

4.3 用户状态

fromgoogle.adk.stateimportUserState# 用户级别状态user_state=UserState(user_id="u123",storage="redis"# 或 "database", "gcs")# 用户画像user_state.set_profile({"name":"张三","level":"VIP","preferences":{"color":"红色","category":"电子产品"},"history":["order_001","order_002"]})# 访问计数user_state.increment("visit_count")user_state.increment("purchase_count")# 最后活跃时间user_state.update("last_active",datetime.now())

5. 记忆优化策略

5.1 记忆压缩

fromgoogle.adk.memoryimportCompressedMemory# 压缩长对话memory=CompressedMemory(compressor=Agent(model=Gemini("gemini-2.0-flash"),instruction="压缩对话,保留关键信息"),compression_ratio=0.3,# 压缩到 30%trigger_tokens=3000# 超过 3000 tokens 时压缩)# 原始对话:3000 tokens# 压缩后:900 tokens

5.2 记忆优先级

fromgoogle.adk.memoryimportPrioritizedMemory# 给记忆设置优先级memory=PrioritizedMemory(priority_rules={"user_name":10,# 高优先级"preferences":8,"chat_history":5,# 低优先级"temporary":1})# 空间不足时,优先保留高优先级记忆

5.3 记忆过期

fromgoogle.adk.memoryimportExpiringMemory# 设置记忆过期时间memory=ExpiringMemory(default_ttl=86400,# 默认 1 天rules={"session_data":3600,# 会话数据 1 小时"user_profile":604800,# 用户信息 7 天"preferences":2592000# 偏好 30 天})# 自动清理过期记忆memory.cleanup_expired()

5.4 记忆缓存

fromgoogle.adk.memoryimportCachedMemory# 缓存频繁访问的记忆memory=CachedMemory(backend="redis",ttl=300,# 5 分钟max_size=1000)# 热点记忆自动缓存# 减少数据库查询

5.5 性能监控

fromgoogle.adk.memoryimportMonitoredMemory memory=MonitoredMemory(base_memory=ConversationBufferMemory(...),metrics=["access_latency","storage_size","hit_rate"])# 获取指标metrics=memory.get_metrics()# {"access_latency": 0.05, "storage_size": "1MB", "hit_rate": 0.95}

系列教程导航

  • 第一章:ADK 简介与对比
  • 第二章:环境搭建与快速开始
  • 第三章:核心概念与架构
  • 第四章:Agent 开发与编排
  • 第五章:工具集成与自定义
  • 第六章:记忆与状态管理 ← 本章
  • 第七章:企业级功能与安全
  • 第八章:实战案例与最佳实践
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 13:54:47

用ArgoCD自动化部署kubeflow:手把手教你玩转deployKF发行版(v0.1.4最新版)

基于ArgoCD的Kubeflow自动化部署实战指南 在当今机器学习工程化的浪潮中,Kubernetes已成为部署和管理ML工作负载的事实标准。而Kubeflow作为Kubernetes原生的机器学习平台,正被越来越多的企业用于构建端到端的ML流水线。本文将聚焦于如何利用ArgoCD这一G…

作者头像 李华
网站建设 2026/7/14 13:54:46

电视直播3 1.0 | 流畅好用的电视直播应用,内置多种频道,包括央视、卫视、地方台、斗鱼轮播和电影轮播

电视直播3是一款流畅好用的电视直播应用,内置多种频道,涵盖央视、卫视、地方电视台、斗鱼轮播和电影轮播。该应用具备高清画质,能让用户享受稳定且高质量的观看体验。其特点为:拥有多种内置频道,满足不同用户的观看需求…

作者头像 李华
网站建设 2026/7/14 13:55:04

PCB设计避坑指南:晶体晶振布局布线的5个常见错误及解决方案

PCB设计避坑指南:晶体晶振布局布线的5个常见错误及解决方案 在高速数字电路设计中,晶体和晶振电路如同系统的心跳发生器,其稳定性直接决定了整个电路的性能表现。许多工程师在完成主控芯片和高速信号布线后,往往对这颗小小的"…

作者头像 李华
网站建设 2026/7/14 13:55:04

Electron模拟浏览器环境全攻略:以微信登录页为例解析webPreferences配置

Electron浏览器环境模拟实战:深度解析微信登录页适配方案 在桌面应用开发领域,Electron凭借其跨平台特性和强大的Web集成能力,已成为构建现代应用程序的首选框架之一。然而,当我们需要在Electron应用中嵌入第三方网页时&#xff0…

作者头像 李华
网站建设 2026/7/14 13:55:03

AI人脸隐私卫士解决社交照片隐私泄露:自动识别打码实战

AI人脸隐私卫士解决社交照片隐私泄露:自动识别打码实战 关键词:AI人脸打码、MediaPipe、隐私保护、图像脱敏、本地离线处理、动态模糊、WebUI 摘要:在社交媒体分享、家庭相册整理、公共场合照片发布时,你是否担心照片中的人脸信…

作者头像 李华