Scenario 1: Basic Usage
This scenario guides you through the basics of powermem - storing, retrieving, and managing memories.
Prerequisites
- Python 3.10+
- powermem installed (
pip install powermem)
Configuration
Powermem can automatically load configuration from a .env file in your project directory. This is the recommended way to configure powermem for your use case.
Creating a .env File
-
Copy the example configuration file:
cp .env.example .env -
Edit the
.envfile and configure
Note: When you call
auto_config(), powermem will automatically:
- Look for a
.envfile in the current directory- Load configuration from environment variables
For more configuration options, see the full example in .env.example or refer to the Configuration Guide.
Step 1: Setup
First, let's create a simple Python script and import powermem:
# basic_usage_example.py
from powermem import Memory, auto_config
# Load configuration (auto-loads from .env or uses defaults)
config = auto_config()
# Create memory instance
memory = Memory(config=config)
print("✓ Memory initialized successfully!")
Run this code:
python basic_usage_example.py
Expected output:
✓ Memory initialized successfully!
Step 2: Add Your First Memory
Now let's add a simple memory:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
# Add a memory
result = memory.add(
messages="User likes Python programming",
user_id="user123"
)
# Get memory ID from result
results_list = result.get('results', [])
memory_id = results_list[0].get('id', 'N/A') if results_list else 'N/A'
print(f"✓ Memory added! ID: {memory_id}")
Run this code:
python basic_usage_example.py
Expected output:
✓ Memory added! ID: xxxxxx
Step 3: Add Multiple Memories
Let's add several memories for a user:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add multiple memories
memories = [
"User likes Python programming",
"User prefers email support over phone calls",
"User works as a software engineer",
"User favorite color is blue"
]
for mem in memories:
result = memory.add(messages=mem, user_id=user_id)
print(f"✓ Added: {mem}")
print(f"\n✓ All memories added for user {user_id}")
Run this code:
python basic_usage_example.py
Expected output:
✓ Added: User likes Python programming
✓ Added: User prefers email support over phone calls
✓ Added: User works as a software engineer
✓ Added: User favorite color is blue
✓ All memories added for user user123
Step 4: Search Memories
Now let's search for memories:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add some memories first
memory.add("User likes Python programming", user_id=user_id)
memory.add("User prefers email support", user_id=user_id)
memory.add("User works as a software engineer", user_id=user_id)
# Search for memories
print("Searching for 'user preferences'...")
results = memory.search(
query="user preferences",
user_id=user_id,
limit=5
)
print(f"\nFound {len(results.get('results', []))} memories:")
for i, result in enumerate(results.get('results', []), 1):
print(f" {i}. {result['memory']}")
Run this code:
python basic_usage_example.py
Expected output:
Searching for 'user preferences'...
Found 3 memories:
1. Prefers email support
2. Likes Python programming
3. Works as a software engineer
Step 5: Add Metadata
Let's add memories with metadata for better organization:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add memories with metadata
memory.add(
messages="User likes Python programming",
user_id=user_id,
metadata={
"category": "preference",
"importance": "high",
"source": "conversation"
}
)
memory.add(
messages="User prefers email support",
user_id=user_id,
metadata={
"category": "communication",
"importance": "medium"
}
)
print("✓ Memories added with metadata")
Step 6: Search with Metadata Filters
Search memories using metadata filters:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add memories with metadata
memory.add(
messages="User likes Python programming",
user_id=user_id,
metadata={"category": "preference"}
)
memory.add(
messages="User prefers email support",
user_id=user_id,
metadata={"category": "communication"}
)
# Search with metadata filter
# Note: category is extracted from metadata and stored as a top-level field
print("Searching with metadata filter...")
results = memory.search(
query="user preferences",
user_id=user_id,
filters={"category": "preference"}
)
print(f"\nFound {len(results.get('results', []))} memories:")
for result in results.get('results', []):
print(f" - {result['memory']}")
print(f" Metadata: {result.get('metadata', {})}")
Run this code:
python basic_usage_example.py
Expected output:
Searching with metadata filter...
Found 1 memories:
- Likes Python programming
Metadata: {'last_searched_at': datetime.datetime(2025, 11, 6, 13, 9, 32, 250703), 'search_count': 4, 'category': 'preference', 'fulltext_content': 'Likes Python programming', 'access_count': 1, 'search_relevance_score': 0.25}
Step 7: Get All Memories
Retrieve all memories for a user:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add some memories
memory.add("User likes Python", user_id=user_id)
memory.add("User prefers email", user_id=user_id)
memory.add("User works as engineer", user_id=user_id)
# Get all memories
all_memories = memory.get_all(user_id=user_id)
print(f"\nTotal memories for {user_id}: {len(all_memories.get('results', []))}")
print("\nAll memories:")
for i, mem in enumerate(all_memories.get('results', []), 1):
print(f" {i}. {mem['memory']}")
Run this code:
python basic_usage_example.py
Expected output:
Total memories for user123: 3
All memories:
1. Likes Python programming
2. Prefers email support
3. Works as engineer
Step 8: Update a Memory
Update an existing memory:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add a memory (using infer=False for predictable behavior)
result = memory.add(
messages="User likes Python programming",
user_id=user_id,
infer=False # Disable intelligent mode for predictable behavior
)
# Get memory ID from result
results_list = result.get('results', [])
if not results_list:
raise ValueError("No memory was added. Check the result: " + str(result))
memory_id = results_list[0].get('id')
if not memory_id:
raise ValueError("Memory ID not found in result")
# Update the memory
updated = memory.update(
memory_id=memory_id,
content="User loves Python programming, especially for data science"
)
print(f"✓ Memory updated!")
print(f" Old: User likes Python programming")
print(f" New: {updated.get('data', 'N/A')}")
Run this code:
python basic_usage_example.py
Expected output:
✓ Memory updated!
Old: User likes Python programming
New: User loves Python programming, especially for data science
Step 9: Delete a Memory
Delete a memory:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add a memory (using infer=False for predictable behavior)
result = memory.add(
messages="User likes Python programming",
user_id=user_id,
infer=False # Disable intelligent mode for predictable behavior
)
# Get memory ID from result
results_list = result.get('results', [])
if not results_list:
raise ValueError("No memory was added. Check the result: " + str(result))
memory_id = results_list[0].get('id')
if not memory_id:
raise ValueError("Memory ID not found in result")
# Delete the memory
success = memory.delete(memory_id)
if success:
print(f"✓ Memory {memory_id} deleted successfully!")
else:
print(f"✗ Failed to delete memory")
Run this code:
python basic_usage_example.py
Expected output:
✓ Memory xxx deleted successfully!
Step 10: Delete All Memories
Delete all memories for a user:
# basic_usage_example.py
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
user_id = "user123"
# Add some memories
memory.add("Memory 1", user_id=user_id)
memory.add("Memory 2", user_id=user_id)
memory.add("Memory 3", user_id=user_id)
# Get count before deletion
all_memories = memory.get_all(user_id=user_id)
count_before = len(all_memories.get('results', []))
# Delete all memories (returns True/False)
success = memory.delete_all(user_id=user_id)
if success:
print(f"✓ Deleted {count_before} memories for {user_id}")
else:
print(f"✗ Failed to delete memories")
Run this code:
python basic_usage_example.py
Expected output:
✓ Deleted x memories for user123
Complete Example
Here's a complete example combining all the steps:
# complete_basic_example.py
from powermem import Memory, auto_config
def main():
# Load configuration
config = auto_config()
# Initialize memory
memory = Memory(config=config)
user_id = "demo_user"
print("=" * 60)
print("Powermem Basic Usage Example")
print("=" * 60)
# Step 1: Add memories
print("\n1. Adding memories...")
memories = [
"User likes Python programming",
"User prefers email support",
"User works as a software engineer",
"User favorite color is blue"
]
for mem in memories:
memory.add(messages=mem, user_id=user_id, metadata={"source": "demo"})
print(f" ✓ Added: {mem}")
# Step 2: Search memories
print("\n2. Searching memories...")
results = memory.search(
query="user preferences",
user_id=user_id,
limit=5
)
print(f" Found {len(results.get('results', []))} memories:")
for result in results.get('results', []):
print(f" - {result['memory']}")
# Step 3: Get all memories
print("\n3. Getting all memories...")
all_memories = memory.get_all(user_id=user_id)
print(f" Total: {len(all_memories.get('results', []))} memories")
# Step 4: Cleanup
print("\n4. Cleaning up...")
# Get count before deletion
all_memories_before = memory.get_all(user_id=user_id)
count_before = len(all_memories_before.get('results', []))
# Delete all memories (returns True/False)
delete_success = memory.delete_all(user_id=user_id)
if delete_success:
print(f" ✓ Deleted {count_before} memories")
else:
print(" ✗ Failed to delete memories")
print("\n" + "=" * 60)
print("Example completed successfully!")
print("=" * 60)
if __name__ == "__main__":
main()
Run this code:
python complete_basic_example.py
Extension Exercises
Exercise 1: Multiple Users
Try managing memories for multiple users:
from powermem import Memory, auto_config
config = auto_config()
memory = Memory(config=config)
# Add memories for different users
memory.add("User 1 likes Python", user_id="user1")
memory.add("User 2 likes Java", user_id="user2")
# Search for each user
results1 = memory.search("preferences", user_id="user1")
results2 = memory.search("preferences", user_id="user2")
memory.add(
messages="User preference",
user_id="user123",
metadata={
"category": "preference",
"importance": "high",
"source": "conversation",
"timestamp": "2024-01-01",
"tags": ["python", "programming"]
}
)
# Search by category
results = memory.search(
query="programming languages",
user_id="user123"
)
print(results)
# Search with different limits
results = memory.search(
query="user information",
user_id="user123",
limit=10
)
print(results)