代码
cookbook/agent_concepts/memory/04_custom_memory_creation.py
Copy
from agno.memory.v2 import Memory
from agno.memory.v2.db.sqlite import SqliteMemoryDb
from agno.memory.v2.manager import MemoryManager
from agno.models.anthropic.claude import Claude
from agno.models.google import Gemini
from agno.models.message import Message
from rich.pretty import pprint
memory_db = SqliteMemoryDb(table_name="memory", db_file="tmp/memory.db")
# 为本示例重置
memory_db.clear()
memory = Memory(
model=Gemini(id="gemini-2.0-flash-exp"),
memory_manager=MemoryManager(
model=Gemini(id="gemini-2.0-flash-exp"),
memory_capture_instructions="""\
记忆应仅包含有关用户学术兴趣的详细信息。
仅包含他们感兴趣的科目。
忽略姓名、爱好和个人兴趣。
""",
),
db=memory_db,
)
john_doe_id = "john_doe@example.com"
memory.create_user_memories(
message="""\
我的名字是 John Doe。
我喜欢在周末去山上徒步,
睡前阅读科幻小说,
烹饪来自不同文化的新食谱,
和朋友下象棋。
我对学习宇宙的历史和其他天文学话题感兴趣。
""",
user_id=john_doe_id,
)
memories = memory.get_user_memories(user_id=john_doe_id)
print("John Doe 的记忆:")
pprint(memories)
# 使用默认记忆管理器
memory = Memory(model=Claude(id="claude-3-5-sonnet-latest"), db=memory_db)
jane_doe_id = "jane_doe@example.com"
# 发送消息历史并添加记忆
memory.create_user_memories(
messages=[
Message(role="user", content="你好,你怎么样?"),
Message(role="assistant", content="我很好,谢谢!"),
Message(role="user", content="你有什么能力?"),
Message(
role="assistant",
content="我可以帮助你完成家庭作业,并回答关于宇宙的问题。",
),
Message(role="user", content="我叫 Jane Doe"),
Message(role="user", content="我喜欢下棋"),
Message(
role="user",
content="实际上,忘了我喜欢下棋这件事。我更喜欢玩《龙与地下城》这样的桌面游戏。",
),
Message(
role="user",
content="我也对学习宇宙的历史和其他天文学话题感兴趣。",
),
Message(role="assistant", content="太棒了!"),
Message(
role="user",
content="我对物理学真的很感兴趣。能给我讲讲量子力学吗?",
),
],
user_id=jane_doe_id,
)
memories = memory.get_user_memories(user_id=jane_doe_id)
print("Jane Doe 的记忆:")
pprint(memories)
用法
1
创建虚拟环境
打开
Terminal
并创建一个 python 虚拟环境。Copy
python3 -m venv .venv
source .venv/bin/activate
2
安装库
Copy
pip install -U agno rich
3
运行示例
Copy
python cookbook/agent_concepts/memory/04_custom_memory_creation.py