Memory API Reference¶
Message¶
@dataclass
class Message:
role: str
content: str
timestamp: datetime
thread_id: Optional[str] = None
metadata: Optional[Dict[str, Any]] = None
The Message class represents a single message in the conversation history.
Attributes¶
role: The role of the message sender ("user","assistant", or"system")content: The actual message contenttimestamp: When the message was createdthread_id: Optional identifier for thread-specific messagesmetadata: Optional dictionary of additional message data
SimpleMemory¶
The default memory implementation providing thread support and message management.
Methods¶
add_message¶
Add a message to memory. If thread's message count exceedsmax_size, oldest messages are removed.
get_messages¶
Get messages from memory, optionally filtered by thread ID.get_last_message¶
Get the most recent message, optionally from a specific thread.get_messages_by_type¶
def get_messages_by_type(
self,
message_type: str,
thread_id: Optional[str] = None
) -> List[Message]
get_tool_results¶
def get_tool_results(
self,
thread_id: Optional[str] = None,
limit: Optional[int] = None
) -> List[Message]
get_conversation_summary¶
def get_conversation_summary(
self,
thread_id: Optional[str] = None,
limit: int = 5
) -> List[Dict[str, str]]
clear¶
Clear all messages and shared state.clear_thread¶
Clear all messages from a specific thread.get_thread_ids¶
Get list of all thread IDs in memory.BaseMemory¶
class BaseMemory:
def add_message(self, message: Message) -> None: ...
def get_messages(self, thread_id: Optional[str] = None) -> List[Message]: ...
def get_last_message(self, thread_id: Optional[str] = None) -> Optional[Message]: ...
def clear(self) -> None: ...
Abstract base class for implementing custom memory systems.
Required Methods¶
All custom memory implementations must implement these methods:
add_message: Add a message to memoryget_messages: Retrieve messages from memoryget_last_message: Get most recent messageclear: Clear all messages
SharedState¶
Simple key-value store for sharing state between agents.
Methods¶
set¶
Set a value in shared state.get¶
Get a value from shared state.clear¶
Clear all shared state.Message Types¶
The memory system uses these standard message types in metadata:
"user_message": Messages from users"assistant_response": Direct responses from assistants"tool_call_intent": Tool execution requests"tool_result": Results from tool executions"error": Error messages
Metadata Fields¶
Common metadata fields include:
"type": Message type identifier"timestamp": ISO format timestamp"thread_id": Thread identifier"run_id": Execution run identifier"tool_call_id": Tool execution identifier"has_tool_calls": Boolean indicating tool usage"agent": Name of the agent involved
Usage Examples¶
Basic Memory Usage¶
from bedrock_swarm.memory import SimpleMemory, Message
from datetime import datetime
# Create memory system
memory = SimpleMemory(max_size=1000)
# Add a message
message = Message(
role="user",
content="Hello",
timestamp=datetime.now(),
metadata={"type": "user_message"}
)
memory.add_message(message)
# Get messages
all_messages = memory.get_messages()
thread_messages = memory.get_messages(thread_id="thread_123")
recent_message = memory.get_last_message()
Thread Management¶
# Add messages to different threads
memory.add_message(Message(
role="user",
content="Thread 1 message",
timestamp=datetime.now(),
thread_id="thread_1"
))
memory.add_message(Message(
role="user",
content="Thread 2 message",
timestamp=datetime.now(),
thread_id="thread_2"
))
# Get thread-specific messages
thread_1_msgs = memory.get_messages(thread_id="thread_1")
thread_2_msgs = memory.get_messages(thread_id="thread_2")
# Clear specific thread
memory.clear_thread("thread_1")
Working with Tool Results¶
# Get tool execution results
tool_results = memory.get_tool_results(limit=5)
# Get messages by type
tool_calls = memory.get_messages_by_type("tool_call_intent")
responses = memory.get_messages_by_type("assistant_response")