message#
T = TypeVar('T', bound=BaseMessageContent)module-attribute
Bases: BaseMessage “)
Source Code in griptape/common/prompt_stack/messages/message.py
@define
class Message(BaseMessage):
def __init__(self, content: str | list[BaseMessageContent], **kwargs: Any) -> None:
if isinstance(content, str):
content = [TextMessageContent(TextArtifact(value=content))]
self.__attrs_init__(content, **kwargs) # pyright: ignore[reportAttributeAccessIssue]
content: list[BaseMessageContent] = field(metadata={"serializable": True})
@property
def value(self) -> Any:
return self.to_artifact().value
def __str__(self) -> str:
return self.to_text()
def has_all_content_type(self, content_type: type[T]) -> bool:
return all(isinstance(content, content_type) for content in self.content)
def has_any_content_type(self, content_type: type[T]) -> bool:
return any(isinstance(content, content_type) for content in self.content)
def get_content_type(self, content_type: type[T]) -> list[T]:
return [content for content in self.content if isinstance(content, content_type)]
def is_text(self) -> bool:
return all(isinstance(content, TextMessageContent) for content in self.content)
def to_text(self) -> str:
return "".join(
[content.artifact.to_text() for content in self.content if isinstance(content, TextMessageContent)],
)
def to_artifact(self, meta: Optional[dict] = None) -> BaseArtifact:
if meta is None:
meta = {}
if len(self.content) == 1:
artifact = self.content[0].artifact
else:
artifact = ListArtifact([content.artifact for content in self.content])
artifact.meta.update(meta)
return artifact
content = field(metadata={'serializable': True})class-attribute instance-attributevalueproperty
init(content, **kwargs)#
Source Code in griptape/common/prompt_stack/messages/message.py
def __init__(self, content: str | list[BaseMessageContent], **kwargs: Any) -> None:
if isinstance(content, str):
content = [TextMessageContent(TextArtifact(value=content))]
self.__attrs_init__(content, **kwargs) # pyright: ignore[reportAttributeAccessIssue]
str()#
Source Code in griptape/common/prompt_stack/messages/message.py
def __str__(self) -> str:
return self.to_text()
get_content_type(content_type)#
Source Code in griptape/common/prompt_stack/messages/message.py
def get_content_type(self, content_type: type[T]) -> list[T]:
return [content for content in self.content if isinstance(content, content_type)]
has_all_content_type(content_type)#
Source Code in griptape/common/prompt_stack/messages/message.py
def has_all_content_type(self, content_type: type[T]) -> bool:
return all(isinstance(content, content_type) for content in self.content)
has_any_content_type(content_type)#
Source Code in griptape/common/prompt_stack/messages/message.py
def has_any_content_type(self, content_type: type[T]) -> bool:
return any(isinstance(content, content_type) for content in self.content)
is_text()#
Source Code in griptape/common/prompt_stack/messages/message.py
def is_text(self) -> bool:
return all(isinstance(content, TextMessageContent) for content in self.content)
to_artifact(meta=None)#
Source Code in griptape/common/prompt_stack/messages/message.py
def to_artifact(self, meta: Optional[dict] = None) -> BaseArtifact:
if meta is None:
meta = {}
if len(self.content) == 1:
artifact = self.content[0].artifact
else:
artifact = ListArtifact([content.artifact for content in self.content])
artifact.meta.update(meta)
return artifact
to_text()#
Source Code in griptape/common/prompt_stack/messages/message.py
def to_text(self) -> str:
return "".join(
[content.artifact.to_text() for content in self.content if isinstance(content, TextMessageContent)],
)