Skip to content

Message Types

Standardized message objects used to maintain conversation state across different LLM providers and graph nodes.

maticlib.messages.message.BaseMessage

Base class for all message types in the library.

Acts as a container for message content and metadata about the message role.

Attributes:

Name Type Description
content str

The text content of the message.

message_type MessageType

The enum type of the message (System, Human, AI).

Source code in maticlib/messages/message.py
class BaseMessage:
    """
    Base class for all message types in the library.

    Acts as a container for message content and metadata about the message role.

    Attributes:
        content (str): The text content of the message.
        message_type (MessageType): The enum type of the message (System, Human, AI).
    """
    def __init__(
        self,
        content: str|None,
        message_type: str|int|MessageType
    ):
        """
        Initializes a new message.

        Args:
            content (str | None): The string content of the message.
            message_type (str | int | MessageType): The role/type of the message.

        Raises:
            TypeError: If content is not a string or if message_type handling fails.
        """
        if not isinstance(content, str):
            raise TypeError(f"Content is {type(content)}. It should be string.")

        self.content = content

        if isinstance(message_type, str):
            if message_type == MessageType.SystemMessage.name:
                self.message_type = MessageType.SystemMessage
            elif message_type == MessageType.HumanMessage.name:
                self.message_type = MessageType.HumanMessage
            elif message_type == MessageType.AIMessage.name:
                self.message_type = MessageType.AIMessage
            raise TypeError(content="")
        elif isinstance(message_type, int):
            if message_type == MessageType.SystemMessage.value:
                self.message_type = MessageType.SystemMessage
            elif message_type == MessageType.HumanMessage.value:
                self.message_type = MessageType.HumanMessage
            elif message_type == MessageType.AIMessage.value:
                self.message_type = MessageType.AIMessage
        elif isinstance(message_type, MessageType):
            self.message_type = message_type

__init__

__init__(content, message_type)

Initializes a new message.

Parameters:

Name Type Description Default
content str | None

The string content of the message.

required
message_type str | int | MessageType

The role/type of the message.

required

Raises:

Type Description
TypeError

If content is not a string or if message_type handling fails.

Source code in maticlib/messages/message.py
def __init__(
    self,
    content: str|None,
    message_type: str|int|MessageType
):
    """
    Initializes a new message.

    Args:
        content (str | None): The string content of the message.
        message_type (str | int | MessageType): The role/type of the message.

    Raises:
        TypeError: If content is not a string or if message_type handling fails.
    """
    if not isinstance(content, str):
        raise TypeError(f"Content is {type(content)}. It should be string.")

    self.content = content

    if isinstance(message_type, str):
        if message_type == MessageType.SystemMessage.name:
            self.message_type = MessageType.SystemMessage
        elif message_type == MessageType.HumanMessage.name:
            self.message_type = MessageType.HumanMessage
        elif message_type == MessageType.AIMessage.name:
            self.message_type = MessageType.AIMessage
        raise TypeError(content="")
    elif isinstance(message_type, int):
        if message_type == MessageType.SystemMessage.value:
            self.message_type = MessageType.SystemMessage
        elif message_type == MessageType.HumanMessage.value:
            self.message_type = MessageType.HumanMessage
        elif message_type == MessageType.AIMessage.value:
            self.message_type = MessageType.AIMessage
    elif isinstance(message_type, MessageType):
        self.message_type = message_type

maticlib.messages.system_message.SystemMessage

Bases: BaseMessage

Source code in maticlib/messages/system_message.py
4
5
6
7
8
9
class SystemMessage(BaseMessage):
    def __init__(self, content):
        if isinstance(content, str):
            super().__init__(content=content, message_type=MessageType.SystemMessage)
        else:
            raise TypeError(f"Content is {type(content)}. It should be string")

maticlib.messages.human_message.HumanMessage

Bases: BaseMessage

Source code in maticlib/messages/human_message.py
class HumanMessage(BaseMessage):
    def __init__(self, content: str):
        if isinstance(content, str):
            super().__init__(content=content, message_type=MessageType.HumanMessage)
        else:
            raise TypeError(f"Content is {type(content)}. It should be string")

maticlib.messages.ai_message.AIMessage

Bases: BaseMessage

Source code in maticlib/messages/ai_message.py
class AIMessage(BaseMessage):
    def __init__(self, content: str):
        if isinstance(content, str):
            super().__init__(content=content, message_type=MessageType.AIMessage)
        else:
            raise TypeError(f"Content is {type(content)}. It should be string")