Create Memories From Text and Message History

Create user memories from direct text and from a message list using MemoryManager.

memory_creation.py
"""
Create Memories From Text and Message History
=============================================

This example shows how to create user memories from direct text and from a
message list using MemoryManager.
"""

from agno.db.postgres import PostgresDb
from agno.memory import MemoryManager, UserMemory
from agno.models.message import Message
from agno.models.openai import OpenAIChat
from rich.pretty import pprint

# ---------------------------------------------------------------------------
# Setup
# ---------------------------------------------------------------------------
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
memory_db = PostgresDb(db_url=db_url)

# ---------------------------------------------------------------------------
# Create Memory Manager
# ---------------------------------------------------------------------------
memory = MemoryManager(model=OpenAIChat(id="gpt-5.6-luna"), db=memory_db)

# ---------------------------------------------------------------------------
# Run Memory Manager
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    john_doe_id = "john_doe@example.com"
    memory.add_user_memory(
        memory=UserMemory(
            memory="""
I enjoy hiking in the mountains on weekends,
reading science fiction novels before bed,
cooking new recipes from different cultures,
playing chess with friends,
and attending live music concerts whenever possible.
Photography has become a recent passion of mine, especially capturing landscapes and street scenes.
I also like to meditate in the mornings and practice yoga to stay centered.
"""
        ),
        user_id=john_doe_id,
    )

    memories = memory.get_user_memories(user_id=john_doe_id)
    print("John Doe's memories:")
    pprint(memories)

    jane_doe_id = "jane_doe@example.com"
    memory.create_user_memories(
        messages=[
            Message(role="user", content="My name is Jane Doe"),
            Message(role="assistant", content="That is great!"),
            Message(role="user", content="I like to play chess"),
            Message(role="assistant", content="That is great!"),
        ],
        user_id=jane_doe_id,
    )

    memories = memory.get_user_memories(user_id=jane_doe_id)
    print("Jane Doe's memories:")
    pprint(memories)

add_user_memory() stores John's supplied text directly without calling a model. create_user_memories(messages=...) asks the configured model to extract memories for Jane from the conversation.

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno "psycopg[binary]" openai sqlalchemy

Export your OpenAI API key

export OPENAI_API_KEY="your_openai_api_key_here"

Run PgVector

docker run -d \
  -e POSTGRES_DB=ai \
  -e POSTGRES_USER=ai \
  -e POSTGRES_PASSWORD=ai \
  -e PGDATA=/var/lib/postgresql \
  -v pgvolume:/var/lib/postgresql \
  -p 5532:5432 \
  --name pgvector \
  agnohq/pgvector:18

Run the example

Save the code above as memory_creation.py, then run:

python memory_creation.py

Full source: cookbook/11_memory/memory_manager/02_memory_creation.py