️ 教程 5.2:持久化对话代理 欢迎来到持久化会话管理!本教程将教你如何使用 和 SQLite 创建一个能够跨多个会话记住对话的 AI 代理。 你将学到的内容 DatabaseSessionService:使用 SQLite 的持久化会话存储 跨会话记忆:在程序重启后仍能记住对话 数据库管理:设置和管理会话数据库 数据持久化:长期存储对话历史 会话恢复:检索之前的对话 核心概念:持久化会话 DatabaseSessionService 将会话数据存储在 SQLite 数据库文件中。
欢迎来到持久化会话管理!本教程将教你如何使用 DatabaseSessionService 和 SQLite 创建一个能够跨多个会话记住对话的 AI 代理。
DatabaseSessionService 将会话数据存储在 SQLite 数据库文件中。这意味着:
非常适合:
from google.adk.sessions import DatabaseSessionService
┌─────────────────────────────────────────────────────────────┐ │ SQLITE DATABASE │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ SESSIONS │ │ STATE │ │ EVENTS │ │ │ ├─────────────┤ ├─────────────┤ ├─────────────┤ │ │ │ session_id │ │ session_id │ │ event_id │ │ │ │ user_id │ │ state_data │ │ session_id │ │ │ │ app_name │ │ updated_at │ │ event_type │ │ │ │ created_at │ └─────────────┘ │ content │ │ │ └─────────────┘ │ timestamp │ │ │ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ CREATE │───▶│ USE │───▶│ CLOSE │ │ SESSION │ │ SESSION │ │ SESSION │ │ (DB) │ │ (DB) │ │ (DB) │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Database │ │ Database │ │ Database │ │ Created │ │ Updated │ │ Archived │ └─────────────┘ └─────────────┘ └─────────────┘
在本教程中,我们将创建一个 简单持久化代理,它能够:
5_2_persistent_conversation/ ├── README.md # This file - concept explanation ├── requirements.txt # Dependencies ├── agent.py # Main agent with database session management ├── app.py # Streamlit web interface └── sessions.db # SQLite database (created automatically)
完成本教程后,你将掌握:
安装依赖:
pip install -r requirements.txt
设置你的环境:
# Create a .env file with your Google AI API key echo "GOOGLE_API_KEY=your_api_key_here" > .env
运行代理:
# Start the Streamlit app streamlit run app.py
测试持久化功能:
# 1. Create database session service session_service = DatabaseSessionService( db_url="sqlite:///sessions.db" ) # 2. Initialize database (creates tables) await session_service.initialize() # 3. Create or retrieve session session = await session_service.get_session( app_name="demo", user_id="user123", session_id="session_user123" ) # 4. Use with Runner for agent execution async for event in runner.run_async( user_id=user_id, session_id=session_id, new_message=user_content ): # Handle response
尝试以下持久化测试:
Session 1: User: "My name is Bob" Agent: "Nice to meet you, Bob!" Session 2 (after restart): User: "What's my name?" Agent: "Your name is Bob!"
Session 1: User: "I love coding" Agent: "That's great! Coding is a wonderful skill." Session 2 (after restart): User: "What do I love?" Agent: "You love coding!"
1. Have a conversation 2. Check for sessions.db file in project directory 3. Restart the app 4. Continue conversation - it remembers!
完成本教程后,你将准备好:
sessions.db 文件免责声明:
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文语言版本的文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。