base_message

Bases:

ABC, [`SerializableMixin`](../../../mixins/serializable_mixin.md#griptape.mixins.serializable_mixin.SerializableMixin "SerializableMixin (griptape.mixins.serializable_mixin.SerializableMixin)")
Source Code in griptape/common/prompt_stack/messages/base_message.py
@define
class BaseMessage(ABC, SerializableMixin):
    @define
    class Usage(SerializableMixin):
        input_tokens: Optional[float] = field(kw_only=True, default=None, metadata={"serializable": True})
        output_tokens: Optional[float] = field(kw_only=True, default=None, metadata={"serializable": True})

        @property
        def total_tokens(self) -> float:
            return (self.input_tokens or 0) + (self.output_tokens or 0)

        def __add__(self, other: BaseMessage.Usage) -> BaseMessage.Usage:
            return BaseMessage.Usage(
                input_tokens=(self.input_tokens or 0) + (other.input_tokens or 0),
                output_tokens=(self.output_tokens or 0) + (other.output_tokens or 0),
            )

    USER_ROLE = "user"
    ASSISTANT_ROLE = "assistant"
    SYSTEM_ROLE = "system"

    content: list[Union[BaseMessageContent, BaseDeltaMessageContent]] = field(metadata={"serializable": True})
    role: str = field(kw_only=True, metadata={"serializable": True})
    usage: Usage = field(kw_only=True, default=Factory(lambda: BaseMessage.Usage()), metadata={"serializable": True})

    def is_system(self) -> bool:
        return self.role == self.SYSTEM_ROLE

    def is_user(self) -> bool:
        return self.role == self.USER_ROLE

    def is_assistant(self) -> bool:
        return self.role == self.ASSISTANT_ROLE
  • ASSISTANT_ROLE = 'assistant' class-attribute instance-attribute

  • SYSTEM_ROLE = 'system' class-attribute instance-attribute

  • USER_ROLE = 'user' class-attribute instance-attribute

  • content = field(metadata={'serializable': True}) class-attribute instance-attribute

  • role = field(kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute

  • usage = field(kw_only=True, default=Factory(lambda: BaseMessage.Usage()), metadata={'serializable': True}) class-attribute instance-attribute

Usage

Bases: SerializableMixin

Source Code in griptape/common/prompt_stack/messages/base_message.py
@define
class Usage(SerializableMixin):
    input_tokens: Optional[float] = field(kw_only=True, default=None, metadata={"serializable": True})
    output_tokens: Optional[float] = field(kw_only=True, default=None, metadata={"serializable": True})

    @property
    def total_tokens(self) -> float:
        return (self.input_tokens or 0) + (self.output_tokens or 0)

    def __add__(self, other: BaseMessage.Usage) -> BaseMessage.Usage:
        return BaseMessage.Usage(
            input_tokens=(self.input_tokens or 0) + (other.input_tokens or 0),
            output_tokens=(self.output_tokens or 0) + (other.output_tokens or 0),
        )
  • input_tokens = field(kw_only=True, default=None, metadata={'serializable': True}) class-attribute instance-attribute

  • output_tokens = field(kw_only=True, default=None, metadata={'serializable': True}) class-attribute instance-attribute

  • total_tokens property

is_assistant()

Source Code in griptape/common/prompt_stack/messages/base_message.py
def is_assistant(self) -> bool:
    return self.role == self.ASSISTANT_ROLE

is_system()

Source Code in griptape/common/prompt_stack/messages/base_message.py
def is_system(self) -> bool:
    return self.role == self.SYSTEM_ROLE

is_user()

Source Code in griptape/common/prompt_stack/messages/base_message.py
def is_user(self) -> bool:
    return self.role == self.USER_ROLE

Could this page be better? Report a problem or suggest an addition!