API Reference
Complete API documentation.
MemoryManager
Initialization
MemoryManager(
store: PostgresMemoryStore,
embedding_model: str = None,
embedding_dimension: int = 0,
llm_for_extraction: Optional[str] = None
)
Core Memory
get_core_memory()
await manager.get_core_memory(
chat_id: Optional[str] = None,
user_id: Optional[str] = None
) -> Dict[str, str]
Returns: {'persona': '...', 'user': '...', 'facts': '...', 'context': '...'}
update_memory_block()
await manager.update_memory_block(
label: str, # 'persona', 'user', 'facts', 'context'
content: str,
chat_id: Optional[str] = None,
user_id: Optional[str] = None
) -> bool
format_core_memory_for_context()
await manager.format_core_memory_for_context(
chat_id: Optional[str] = None,
user_id: Optional[str] = None
) -> str
Returns formatted string for system prompt.
Archival Memory
search_memories()
await manager.search_memories(
query: str,
limit: int = 10,
chat_id: Optional[str] = None,
user_id: Optional[str] = None,
use_hybrid: bool = True
) -> List[Dict[str, Any]]
Returns list of memory dicts with id, content, importance, similarity, created_at, metadata.
retrieve_relevant_memories()
await manager.retrieve_relevant_memories(
query: str,
chat_id: Optional[str] = None,
user_id: Optional[str] = None,
limit: int = 5
) -> str
Returns formatted string with relevant memories or empty string.
process_message_for_memories()
await manager.process_message_for_memories(
message: Dict[str, Any], # {'role': 'user', 'content': '...'}
chat_id: str,
user_id: str
) -> Dict[str, Any]
Returns: {'extracted_facts': [...], 'memories_created': [...], 'memories_updated': [...], 'conflicts_detected': [...]}
get_memory_stats()
await manager.get_memory_stats(user_id: str) -> Dict[str, Any]
Returns: {'total_memories': int, 'user_id': str}
LanceDBMemoryStore
Initialization
LanceDBMemoryStore(
uri: str = ".suzent/data/memory",
embedding_dim: int = CONFIG.embedding_dimension
)
await store.connect()
Parameters:
uri: Path to LanceDB storage directory (default:.suzent/data/memory)embedding_dim: Dimension of embedding vectors (default: from CONFIG)
Memory Blocks
get_all_memory_blocks()
await store.get_all_memory_blocks(
chat_id: Optional[str] = None,
user_id: Optional[str] = None
) -> Dict[str, str]
set_memory_block()
await store.set_memory_block(
label: str,
content: str,
chat_id: Optional[str] = None,
user_id: Optional[str] = None
) -> bool
Archival Memory
add_memory()
await store.add_memory(
content: str,
embedding: List[float],
user_id: str,
chat_id: Optional[str] = None,
metadata: Optional[Dict[str, Any]] = None,
importance: float = 0.5
) -> str # Returns memory ID
update_memory()
await store.update_memory(
memory_id: str,
content: Optional[str] = None,
embedding: Optional[List[float]] = None,
metadata: Optional[Dict[str, Any]] = None,
importance: Optional[float] = None
) -> bool
delete_memory()
await store.delete_memory(memory_id: str) -> bool
delete_all_memories()
await store.delete_all_memories(
user_id: str,
chat_id: Optional[str] = None
) -> int # Returns count deleted
Search
semantic_search()
await store.semantic_search(
query_embedding: List[float],
user_id: str,
limit: int = 10,
chat_id: Optional[str] = None,
min_importance: float = 0.0
) -> List[Dict[str, Any]]
hybrid_search()
await store.hybrid_search(
query_embedding: List[float],
query_text: str,
user_id: str,
limit: int = 10,
chat_id: Optional[str] = None,
semantic_weight: float = 0.7,
fts_weight: float = 0.3,
recency_boost: float = 0.1,
importance_boost: float = 0.2
) -> List[Dict[str, Any]]
Listing
list_memories()
await store.list_memories(
user_id: str,
chat_id: Optional[str] = None,
limit: int = 20,
offset: int = 0,
order_by: str = 'created_at', # or 'importance', 'access_count', 'accessed_at'
order_desc: bool = True
) -> List[Dict[str, Any]]
get_memory_stats()
await store.get_memory_stats(user_id: str) -> Dict[str, Any]
Returns detailed statistics with importance distribution.
get_memory_count()
await store.get_memory_count(
user_id: str,
chat_id: Optional[str] = None
) -> int
Agent Tools
MemorySearchTool
MemorySearchTool(memory_manager: MemoryManager)
tool.set_context(chat_id, user_id)
result = tool.forward(query: str, limit: int = 10) -> str
Returns formatted string with search results.
MemoryBlockUpdateTool
MemoryBlockUpdateTool(memory_manager: MemoryManager)
tool.set_context(chat_id, user_id)
result = tool.forward(
block: str, # 'persona', 'user', 'facts', 'context'
operation: str, # 'replace', 'append', 'search_replace'
content: str,
search_pattern: Optional[str] = None
) -> str
Returns success or error message.
Type Definitions
Memory Dict
{
'id': UUID,
'content': str,
'embedding': List[float],
'metadata': Dict[str, Any],
'importance': float,
'created_at': datetime,
'updated_at': datetime,
'accessed_at': datetime,
'access_count': int,
'similarity': float, # Search relevance
}
Extraction Report
{
'extracted_facts': List[str],
'memories_created': List[str], # Memory IDs
'memories_updated': List[str],
'conflicts_detected': List[Dict]
}
Extracted Fact
{
'content': str,
'category': str, # personal, preference, goal, context, technical
'importance': float, # 0.0-1.0
'tags': List[str]
}