Official Python SDK for MemoryStack - Semantic memory management for AI agents
Project description
MemoryStack - Python SDK
Official Python SDK for MemoryStack - A semantic memory layer for AI applications.
Installation
pip install memorystack
Quick Start
from memorystack import MemoryStackClient
# Initialize the client (only API key required)
client = MemoryStackClient(api_key="your-api-key")
# Add a conversation to memory
result = client.add_conversation(
"I love Python programming",
"That's great! Python is excellent for AI and data science.",
user_id="user_123" # optional: for B2B use cases
)
print(f"Created {result.memories_created} memories")
Features
- ✅ Simple API: Easy-to-use methods for memory management
- ✅ Multi-Agent Support: Full agent lifecycle, teams, and handoffs
- ✅ Type Hints: Full type annotations for better IDE support
- ✅ Multimodal: Support for text, images, documents, and audio
- ✅ Agent Patterns: Sequential workflows, routing, autonomous agents
- ✅ B2B & B2C: Works for both personal and multi-tenant applications
- ✅ Pagination: Built-in cursor-based pagination
- ✅ Error Handling: Comprehensive exception handling
Usage
Initialize Client
from memorystack import MemoryStackClient
import os
# Only API key is required
client = MemoryStackClient(api_key=os.environ["MEMORYSTACK_API_KEY"])
Create Memories
Simple Conversation
# Add a simple conversation
result = client.add_conversation(
"What is the capital of France?",
"The capital of France is Paris."
)
With User ID (B2B)
# For B2B applications with end users
result = client.add_conversation(
"I prefer dark mode",
"I'll remember that preference.",
user_id="alice_123" # end user ID
)
Single Message
# Add a single message
client.add_message(
"My favorite color is blue",
user_id="user_456"
)
List Memories
Personal Memories
# Get your personal memories
memories = client.get_personal_memories(limit=20)
print(f"Found {memories.count} memories")
for memory in memories.results:
print(f"- {memory.content} ({memory.memory_type})")
User Memories (B2B)
# Get memories for a specific end user
user_memories = client.get_user_memories("alice_123", limit=50)
With Pagination
cursor = None
all_results = []
while True:
response = client.list_memories(
user_id="alice_123",
limit=50,
cursor=cursor
)
all_results.extend(response.results)
cursor = response.next_cursor
if not cursor:
break
print(f"Total memories: {len(all_results)}")
Search Memories
# Semantic search
results = client.search_memories(
query="user preferences",
limit=10,
mode="hybrid" # hybrid, vector, or text
)
for memory in results["results"]:
print(f"- {memory['content']} (score: {memory.get('similarity', 'N/A')})")
Get Usage Statistics
stats = client.get_stats()
print(f"Plan: {stats.plan_tier}")
print(f"API Calls: {stats.usage['current_month_api_calls']} / {stats.usage['monthly_api_limit']}")
print(f"Total Memories: {stats.totals['total_memories']}")
Error Handling
from memorystack import (
MemoryStackError,
AuthenticationError,
RateLimitError,
ValidationError
)
try:
client.add_message("Hello world")
except AuthenticationError as e:
print(f"Auth failed: {e.message}")
except RateLimitError as e:
print(f"Rate limit: {e.message}")
except ValidationError as e:
print(f"Invalid request: {e.message}")
except MemoryStackError as e:
print(f"Error: {e.message}")
print(f"Status: {e.status_code}")
Common error codes:
401- Invalid or missing API key429- Rate limit exceeded400- Invalid request payload500- Internal server error
Best Practices
1. Use Environment Variables
import os
from memorystack import MemoryStackClient
client = MemoryStackClient(api_key=os.environ["MEMORYSTACK_API_KEY"])
2. Handle Errors Gracefully
from memorystack import MemoryStackError
try:
result = client.add_message("Important fact")
print(f"Success: {result.memories_created}")
except MemoryStackError as e:
print(f"Failed to save memory: {e.message}")
# Implement retry logic or fallback
3. Use User IDs for B2B
# Always pass user_id for multi-tenant applications
client.add_conversation(
user_message,
assistant_response,
user_id=request.user.id # your application's user ID
)
4. Add Metadata for Context
from datetime import datetime
client.create_memory(
messages=[...],
user_id="alice_123",
metadata={
"session_id": "sess_xyz",
"source": "mobile_app",
"version": "1.2.3",
"timestamp": datetime.utcnow().isoformat()
}
)
Examples
Chatbot Integration
from memorystack import MemoryStackClient
import os
memory_client = MemoryStackClient(api_key=os.environ["MEMORYSTACK_API_KEY"])
def handle_chat_message(user_id: str, message: str):
# Your AI logic here
response = generate_ai_response(message)
# Save to memory
memory_client.add_conversation(
message,
response,
user_id=user_id
)
return response
Personal Assistant
# Store user preferences
client.add_message(
"I prefer meetings in the morning",
metadata={"category": "preference", "type": "scheduling"}
)
# Retrieve preferences later
preferences = client.list_memories(
user_id="self",
memory_type="preference",
limit=100
)
Support
- Documentation: https://memorystack.app/docs
- Issues: https://github.com/memorystack-labs/memorystack-python/issues
- Email: support@memorystack.app
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
memorystack-1.0.2.tar.gz
(27.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memorystack-1.0.2.tar.gz.
File metadata
- Download URL: memorystack-1.0.2.tar.gz
- Upload date:
- Size: 27.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
737aaa4b4966f7de044269353a2c35dc35403f41f9e1763d66cd1d555a42e983
|
|
| MD5 |
0fe95e118c2ecdb89913ff07e005e05b
|
|
| BLAKE2b-256 |
521145d7f60bcaf4caacdb5130b17c7093ef04115c475e5bd6e8d54da6233565
|
File details
Details for the file memorystack-1.0.2-py3-none-any.whl.
File metadata
- Download URL: memorystack-1.0.2-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfd2855dbf9beafd876510e6779c5b8a984c24783270d8aae15b69d48433520e
|
|
| MD5 |
7af0fb74efb776bcbfbed7218e433ab0
|
|
| BLAKE2b-256 |
14ed9087c2dfa81740238e5bf4efb86c47e4574d2d00171992b6eaffb3a2a08d
|