mirror of https://github.com/dapr/dapr-agents.git
				
				
				
			
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
from dapr_agents.types import BaseMessage
 | 
						|
from pydantic import BaseModel, ConfigDict
 | 
						|
from abc import ABC, abstractmethod
 | 
						|
from typing import List
 | 
						|
 | 
						|
class MemoryBase(BaseModel, ABC):
 | 
						|
    """
 | 
						|
    Abstract base class for managing message memory. This class defines a standard interface for memory operations,
 | 
						|
    allowing for different implementations of message storage mechanisms in subclasses.
 | 
						|
    """
 | 
						|
 | 
						|
    model_config = ConfigDict(arbitrary_types_allowed=True)
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def add_message(self, message: BaseMessage):
 | 
						|
        """
 | 
						|
        Adds a single message to the memory storage.
 | 
						|
 | 
						|
        Args:
 | 
						|
            message (BaseMessage): The message object to be added.
 | 
						|
 | 
						|
        Note:
 | 
						|
            This method must be implemented by subclasses.
 | 
						|
        """
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def add_messages(self, messages: List[BaseMessage]):
 | 
						|
        """
 | 
						|
        Adds a list of messages to the memory storage.
 | 
						|
 | 
						|
        Args:
 | 
						|
            messages (List[BaseMessage]): A list of message objects to be added.
 | 
						|
 | 
						|
        Note:
 | 
						|
            This method must be implemented by subclasses.
 | 
						|
        """
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def add_interaction(self, user_message: BaseMessage, assistant_message: BaseMessage):
 | 
						|
        """
 | 
						|
        Adds a user-assistant interaction to the memory storage.
 | 
						|
 | 
						|
        Args:
 | 
						|
            user_message (BaseMessage): The user message.
 | 
						|
            assistant_message (BaseMessage): The assistant message.
 | 
						|
        """
 | 
						|
        pass
 | 
						|
    
 | 
						|
    @abstractmethod
 | 
						|
    def get_messages(self) -> List[BaseMessage]:
 | 
						|
        """
 | 
						|
        Retrieves all messages from the memory storage.
 | 
						|
 | 
						|
        Returns:
 | 
						|
            List[BaseMessage]: A list of all stored messages.
 | 
						|
 | 
						|
        Note:
 | 
						|
            This method must be implemented by subclasses.
 | 
						|
        """
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def reset_memory(self):
 | 
						|
        """
 | 
						|
        Clears all messages from the memory storage.
 | 
						|
 | 
						|
        Note:
 | 
						|
            This method must be implemented by subclasses.
 | 
						|
        """
 | 
						|
        pass |