教程5.1:内存中对话代理


文档摘要

教程 5.1:内存中对话代理 欢迎来到会话管理的第一步!本教程将教你如何创建一个 AI 代理,它能够在单个会话内记住对话内容,使用 。 你将学到的内容 InMemorySessionService:用于临时对话的基本会话管理 会话创建:如何创建和管理对话会话 状态管理:存储和检索对话上下文 事件跟踪:记录对话历史 多轮对话:构建能够记住上下文的代理 核心概念:内存中会话 InMemorySessionService 将会话数据存储在你电脑的 RAM(内存)中。

教程 5.1:内存中对话代理

欢迎来到会话管理的第一步!本教程将教你如何创建一个 AI 代理,它能够在单个会话内记住对话内容,使用 InMemorySessionService

你将学到的内容

  • InMemorySessionService:用于临时对话的基本会话管理
  • 会话创建:如何创建和管理对话会话
  • 状态管理:存储和检索对话上下文
  • 事件跟踪:记录对话历史
  • 多轮对话:构建能够记住上下文的代理

核心概念:内存中会话

InMemorySessionService 将会话数据存储在你电脑的 RAM(内存)中。这意味着:

  • 快速访问 - 无需数据库查询
  • 简单设置 - 无需外部依赖
  • 临时存储 - 程序停止时数据会丢失
  • 无持久化 - 无法在程序重启后记住信息

非常适合:

  • 开发与测试
  • 临时对话
  • 记忆功能原型设计
  • 单次会话应用

关键组件

1. InMemorySessionService

from google.adk.sessions import InMemorySessionService

2. 会话生命周期

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ CREATE │───▶│ USE │───▶│ CLOSE │ │ SESSION │ │ SESSION │ │ SESSION │ └─────────────┘ └─────────────┘ └─────────────┘

3. 会话数据结构

{ "session_id": "unique_session_id", "user_id": "user_identifier", "state": { "conversation_history": [...], "user_preferences": {...}, "current_context": "..." }, "events": [ {"type": "user_input", "content": "...", "timestamp": "..."}, {"type": "agent_response", "content": "...", "timestamp": "..."} ] }

教程概览

在本教程中,我们将创建一个 个人助理代理,它能够:

  • 记住你的名字和偏好
  • 跟踪对话历史
  • 提供个性化回复
  • 展示基本的会话管理功能

项目结构

5_1_in_memory_conversation/ ├── README.md # This file - concept explanation ├── requirements.txt # Dependencies ├── agent.py # Main agent with session management └── app.py # Streamlit web interface

学习目标

完成本教程后,你将理解:

  • ✅ 如何创建和管理会话
  • ✅ 如何存储和检索对话状态
  • ✅ 如何跟踪对话事件
  • ✅ 如何构建多轮对话
  • ✅ 基本的会话生命周期管理

开始使用

  1. 安装依赖

    pip install -r requirements.txt
  2. 设置你的环境

    # Create a .env file with your Google AI API key echo "GOOGLE_API_KEY=your_api_key_here" > .env
  3. 运行代理

    # Start the Streamlit app streamlit run app.py
  4. 测试记忆功能

    • 告诉代理你的名字:“我的名字是 John”
    • 询问你的偏好:“你对我了解些什么?”
    • 进行一次对话,看看它如何记住上下文

代码详解

关键会话管理代码:

# 1. Create session service session_service = InMemorySessionService() # 2. Create a new session session = await session_service.create_session( app_name="personal_assistant", user_id="user123" ) # 3. Update session state await session_service.update_session_state( session_id=session.session_id, state={"user_name": "John", "preferences": ["travel", "music"]} ) # 4. Add events to track conversation await session_service.add_event( session_id=session.session_id, event_type="user_input", content="My name is John" )

测试你的代理

尝试以下对话流程来测试记忆功能:

流程 1:个人信息

User: "My name is Alice" Agent: "Nice to meet you, Alice! How can I help you today?" User: "What's my name?" Agent: "Your name is Alice! I remember you told me that."

流程 2:偏好设置

User: "I love pizza and hiking" Agent: "Great! I'll remember that you love pizza and hiking." User: "What are my interests?" Agent: "Based on our conversation, you love pizza and hiking!"

流程 3:上下文连续性

User: "I'm planning a trip" Agent: "That sounds exciting! Since you mentioned hiking, would you like recommendations for hiking destinations?" User: "Yes, where should I go?" Agent: "Given your love for hiking, I'd recommend..."

下一步

完成本教程后,你将准备好:

专业提示

  • 测试多轮对话:进行长时间对话,观察记忆功能的实际效果
  • 监控会话状态:使用 Web 界面检查代理记住的内容
  • 试验不同状态:尝试在会话状态中存储不同类型的数据
  • 理解局限性:记住,内存中会话是临时的

重要提示

  • 数据丢失:内存中会话在你重启应用时会丢失
  • 单进程:会话仅在同一 Python 进程内有效
  • 内存占用:过大的对话历史会消耗大量 RAM
  • 仅限开发:请在开发环境中使用内存中会话,不要用于生产环境

免责声明
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文语言版本的文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


作者与出处
原作者: Shubhamsaboo
来源:Shubhamsaboo
许可证:Apache-2.0
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: Shubhamsaboo 转发
评论区 (0)
U