内存存储
为了在会话和执行周期之间持久化记忆,请将记忆存储在数据库等持久化存储中。
如果您在生产环境中使用 Memory,持久化存储至关重要,因为您希望在应用程序重启时保留用户的记忆。
Agno 的内存系统支持多种持久化存储选项。
存储选项
Memory 类通过可插入的数据库接口支持不同的后端存储选项。目前,Agno 提供:
- SQLite 存储
- PostgreSQL 存储
- MongoDB 存储
- Redis 存储
设置存储
要配置内存存储,您需要创建一个数据库实例并将其传递给 Memory 的构造函数:
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
# 为内存创建 SQLite 数据库
memory_db = SqliteMemoryDb(
table_name="memories", # 要使用的表名
db_file="path/to/memory.db" # SQLite 数据库文件
)
# 使用存储后端初始化 Memory
memory = Memory(db=memory_db)
数据模型
在使用持久化存储时,Memory 系统存储:
- 用户记忆 - 关于用户的が事实和见解
- 最后更新时间戳 - 用于跟踪记忆上次修改的时间
- 记忆 ID - 每个记忆的唯一标识符
存储示例
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.schema import UserMemory
# 创建一个 SQLite 内存数据库
memory_db = SqliteMemoryDb(
table_name="user_memories",
db_file="tmp/memory.db"
)
# 使用存储后端初始化 Memory
memory = Memory(db=memory_db)
# 添加一个将在重启后持久化的用户记忆
user_id = "user@example.com"
memory.add_user_memory(
memory=UserMemory(
memory="用户在应用程序中偏好深色模式",
topics=["preferences", "ui"]
),
user_id=user_id
)
# 检索记忆(将从数据库加载)
user_memories = memory.get_user_memories(user_id=user_id)
for m in user_memories:
print(f"Memory: {m.memory}")
print(f"Topics: {m.topics}")
print(f"Last Updated: {m.last_updated}")
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.postgres import PostgresMemoryDb
from agno.memory.v2.schema import UserMemory
# 创建一个 PostgreSQL 内存数据库
memory_db = PostgresMemoryDb(
table_name="user_memories",
connection_string="postgresql://user:password@localhost:5432/mydb"
)
# 使用存储后端初始化 Memory
memory = Memory(db=memory_db)
# 添加用户记忆
user_id = "user@example.com"
memory.add_user_memory(
memory=UserMemory(
memory="用户拥有高级订阅",
topics=["subscription", "account"]
),
user_id=user_id
)
# 无论后端如何,内存操作都保持不变
print(f"用户存储了 {len(memory.get_user_memories(user_id=user_id))} 条记忆")
与 Agent 存储集成
在构建具有内存的代理时,您通常需要存储代理会话和记忆。Agno 通过允许您配置两个存储系统,使此过程变得容易:
from agno.agent import Agent
from agno.memory.v2.memory import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.models.openai import OpenAIChat
from agno.storage.sqlite import SqliteStorage
# 创建内存存储
memory_db = SqliteMemoryDb(
table_name="memories",
db_file="tmp/memory.db"
)
memory = Memory(db=memory_db)
# 创建代理存储
agent_storage = SqliteStorage(
table_name="agent_sessions",
db_file="tmp/agent_storage.db"
)
# 使用内存和存储创建代理
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
memory=memory,
storage=agent_storage,
enable_user_memories=True,
)
内存管理
在使用持久化存储时,Memory 系统提供了多个函数来管理存储的记忆:
# 删除特定记忆
memory.delete_user_memory(user_id="user@example.com", memory_id="memory_123")
# 替换/更新记忆
memory.replace_user_memory(
memory_id="memory_123",
memory=UserMemory(memory="关于用户的更新信息"),
user_id="user@example.com"
)
# 清除所有记忆
memory.clear()
开发者资源
Responses are generated using AI and may contain mistakes.