common
__all__ = ['ActionCallDeltaMessageContent', 'ActionCallMessageContent', 'ActionResultMessageContent', 'AudioDeltaMessageContent', 'AudioMessageContent', 'BaseAction', 'BaseDeltaMessageContent', 'BaseMessage', 'BaseMessageContent', 'DeltaMessage', 'GenericMessageContent', 'ImageMessageContent', 'Message', 'Observable', 'PromptStack', 'Reference', 'TextDeltaMessageContent', 'TextMessageContent', 'ToolAction', 'observable']
module-attribute
Bases:
BaseDeltaMessageContent
Source Code in griptape/common/prompt_stack/contents/action_call_delta_message_content.py
@define class ActionCallDeltaMessageContent(BaseDeltaMessageContent): tag: Optional[str] = field(default=None, metadata={"serializable": True}) name: Optional[str] = field(default=None, metadata={"serializable": True}) path: Optional[str] = field(default=None, metadata={"serializable": True}) partial_input: Optional[str] = field(default=None, metadata={"serializable": True}) def __str__(self) -> str: parts = [] if self.name: parts.append(self.name) if self.path: parts.append(f".{self.path}") if self.tag: parts.append(f" ({self.tag})") if self.partial_input: if parts: parts.append(f" {self.partial_input}") else: parts.append(self.partial_input) return "".join(parts)
name = field(default=None, metadata={'serializable': True})
class-attribute instance-attributepartial_input = field(default=None, metadata={'serializable': True})
class-attribute instance-attributepath = field(default=None, metadata={'serializable': True})
class-attribute instance-attributetag = field(default=None, metadata={'serializable': True})
class-attribute instance-attribute
str()
Source Code in griptape/common/prompt_stack/contents/action_call_delta_message_content.py
def __str__(self) -> str: parts = [] if self.name: parts.append(self.name) if self.path: parts.append(f".{self.path}") if self.tag: parts.append(f" ({self.tag})") if self.partial_input: if parts: parts.append(f" {self.partial_input}") else: parts.append(self.partial_input) return "".join(parts)
ActionCallMessageContent
Bases:
BaseMessageContent
Source Code in griptape/common/prompt_stack/contents/action_call_message_content.py
@define class ActionCallMessageContent(BaseMessageContent): artifact: ActionArtifact = field(metadata={"serializable": True}) @classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> ActionCallMessageContent: action_call_deltas = [delta for delta in deltas if isinstance(delta, ActionCallDeltaMessageContent)] tag = None name = None path = None json_input = "" for delta in action_call_deltas: if delta.tag is not None: tag = delta.tag if delta.name is not None: name = delta.name if delta.path is not None: path = delta.path if delta.partial_input is not None: json_input += delta.partial_input if tag is not None and name is not None and path is not None: try: parsed_input = json.loads(json_input or "{}") except json.JSONDecodeError as exc: raise ValueError("Invalid JSON input for ToolAction") from exc action = ToolAction(tag=tag, name=name, path=path, input=parsed_input) else: raise ValueError("Missing required fields for ToolAction") artifact = ActionArtifact(value=action) return cls(artifact=artifact)
artifact = field(metadata={'serializable': True})
class-attribute instance-attribute
from_deltas(deltas)classmethod
Source Code in griptape/common/prompt_stack/contents/action_call_message_content.py
@classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> ActionCallMessageContent: action_call_deltas = [delta for delta in deltas if isinstance(delta, ActionCallDeltaMessageContent)] tag = None name = None path = None json_input = "" for delta in action_call_deltas: if delta.tag is not None: tag = delta.tag if delta.name is not None: name = delta.name if delta.path is not None: path = delta.path if delta.partial_input is not None: json_input += delta.partial_input if tag is not None and name is not None and path is not None: try: parsed_input = json.loads(json_input or "{}") except json.JSONDecodeError as exc: raise ValueError("Invalid JSON input for ToolAction") from exc action = ToolAction(tag=tag, name=name, path=path, input=parsed_input) else: raise ValueError("Missing required fields for ToolAction") artifact = ActionArtifact(value=action) return cls(artifact=artifact)
ActionResultMessageContent
Bases:
BaseMessageContent
Source Code in griptape/common/prompt_stack/contents/action_result_message_content.py
@define class ActionResultMessageContent(BaseMessageContent): artifact: BaseArtifact = field(metadata={"serializable": True}) action: ToolAction = field(metadata={"serializable": True}) @classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> ActionResultMessageContent: raise NotImplementedError
action = field(metadata={'serializable': True})
class-attribute instance-attributeartifact = field(metadata={'serializable': True})
class-attribute instance-attribute
from_deltas(deltas)classmethod
Source Code in griptape/common/prompt_stack/contents/action_result_message_content.py
@classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> ActionResultMessageContent: raise NotImplementedError
AudioDeltaMessageContent
Bases:
BaseDeltaMessageContent
Attributes
Name | Type | Description |
---|---|---|
id | Optional[str] | The ID of the audio data. |
data | Optional[str] | Base64 encoded audio data. |
transcript | Optional[str] | The transcript of the audio data. |
expires_at | Optional[int] | The Unix timestamp (in seconds) for when this audio data will no longer be accessible. |
Source Code in griptape/common/prompt_stack/contents/audio_delta_message_content.py
@define(kw_only=True) class AudioDeltaMessageContent(BaseDeltaMessageContent): """A delta message content for audio data. Attributes: id: The ID of the audio data. data: Base64 encoded audio data. transcript: The transcript of the audio data. expires_at: The Unix timestamp (in seconds) for when this audio data will no longer be accessible. """ id: Optional[str] = field(default=None, metadata={"serializable": True}) data: Optional[str] = field(default=None, metadata={"serializable": True}) transcript: Optional[str] = field(default=None, metadata={"serializable": True}) expires_at: Optional[int] = field(default=None, metadata={"serializable": True})
data = field(default=None, metadata={'serializable': True})
class-attribute instance-attributeexpires_at = field(default=None, metadata={'serializable': True})
class-attribute instance-attributeid = field(default=None, metadata={'serializable': True})
class-attribute instance-attributetranscript = field(default=None, metadata={'serializable': True})
class-attribute instance-attribute
AudioMessageContent
Bases:
BaseMessageContent
Source Code in griptape/common/prompt_stack/contents/audio_message_content.py
@define class AudioMessageContent(BaseMessageContent): artifact: AudioArtifact = field(metadata={"serializable": True}) @classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> AudioMessageContent: audio_deltas = [delta for delta in deltas if isinstance(delta, AudioDeltaMessageContent)] audio_data = [delta.data for delta in audio_deltas if delta.data is not None] transcript_data = [delta.transcript for delta in audio_deltas if delta.transcript is not None] expires_at = next(delta.expires_at for delta in audio_deltas if delta.expires_at is not None) audio_id = next(delta.id for delta in audio_deltas if delta.id is not None) audio_transcript = "".join(data for data in transcript_data) artifact = AudioArtifact( value=b"".join(base64.b64decode(data) for data in audio_data), format="wav", meta={ "audio_id": audio_id, "expires_at": expires_at, "transcript": audio_transcript, }, ) return cls(artifact=artifact)
artifact = field(metadata={'serializable': True})
class-attribute instance-attribute
from_deltas(deltas)classmethod
Source Code in griptape/common/prompt_stack/contents/audio_message_content.py
@classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> AudioMessageContent: audio_deltas = [delta for delta in deltas if isinstance(delta, AudioDeltaMessageContent)] audio_data = [delta.data for delta in audio_deltas if delta.data is not None] transcript_data = [delta.transcript for delta in audio_deltas if delta.transcript is not None] expires_at = next(delta.expires_at for delta in audio_deltas if delta.expires_at is not None) audio_id = next(delta.id for delta in audio_deltas if delta.id is not None) audio_transcript = "".join(data for data in transcript_data) artifact = AudioArtifact( value=b"".join(base64.b64decode(data) for data in audio_data), format="wav", meta={ "audio_id": audio_id, "expires_at": expires_at, "transcript": audio_transcript, }, ) return cls(artifact=artifact)
BaseAction
Bases:
SerializableMixin
, ABC
Source Code in griptape/common/actions/base_action.py
class BaseAction(SerializableMixin, ABC): ...
BaseDeltaMessageContent
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/contents/base_delta_message_content.py
@define class BaseDeltaMessageContent(ABC, SerializableMixin): index: int = field(kw_only=True, default=0, metadata={"serializable": True})
index = field(kw_only=True, default=0, metadata={'serializable': True})
class-attribute instance-attribute
BaseMessage
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-attributeSYSTEM_ROLE = 'system'
class-attribute instance-attributeUSER_ROLE = 'user'
class-attribute instance-attributecontent = field(metadata={'serializable': True})
class-attribute instance-attributerole = field(kw_only=True, metadata={'serializable': True})
class-attribute instance-attributeusage = 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-attributeoutput_tokens = field(kw_only=True, default=None, metadata={'serializable': True})
class-attribute instance-attributetotal_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
BaseMessageContent
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/contents/base_message_content.py
@define class BaseMessageContent(ABC, SerializableMixin): artifact: BaseArtifact = field(metadata={"serializable": True}) def __str__(self) -> str: return self.artifact.to_text() def __bool__(self) -> bool: return bool(self.artifact) def __len__(self) -> int: return len(self.artifact) def to_text(self) -> str: return str(self.artifact) @classmethod @abstractmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> BaseMessageContent: ...
artifact = field(metadata={'serializable': True})
class-attribute instance-attribute
bool()
Source Code in griptape/common/prompt_stack/contents/base_message_content.py
def __bool__(self) -> bool: return bool(self.artifact)
len()
Source Code in griptape/common/prompt_stack/contents/base_message_content.py
def __len__(self) -> int: return len(self.artifact)
str()
Source Code in griptape/common/prompt_stack/contents/base_message_content.py
def __str__(self) -> str: return self.artifact.to_text()
from_deltas(deltas)abstractmethodclassmethod
Source Code in griptape/common/prompt_stack/contents/base_message_content.py
@classmethod @abstractmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> BaseMessageContent: ...
to_text()
Source Code in griptape/common/prompt_stack/contents/base_message_content.py
def to_text(self) -> str: return str(self.artifact)
DeltaMessage
Bases:
BaseMessage
Source Code in griptape/common/prompt_stack/messages/delta_message.py
@define class DeltaMessage(BaseMessage): role: Optional[str] = field(kw_only=True, default=None, metadata={"serializable": True}) content: Optional[BaseDeltaMessageContent] = field(kw_only=True, default=None, metadata={"serializable": True})
content = field(kw_only=True, default=None, metadata={'serializable': True})
class-attribute instance-attributerole = field(kw_only=True, default=None, metadata={'serializable': True})
class-attribute instance-attribute
GenericMessageContent
Bases:
BaseMessageContent
Source Code in griptape/common/prompt_stack/contents/generic_message_content.py
@define class GenericMessageContent(BaseMessageContent): artifact: GenericArtifact = field(metadata={"serializable": True}) @classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> GenericMessageContent: raise NotImplementedError
artifact = field(metadata={'serializable': True})
class-attribute instance-attribute
from_deltas(deltas)classmethod
Source Code in griptape/common/prompt_stack/contents/generic_message_content.py
@classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> GenericMessageContent: raise NotImplementedError
ImageMessageContent
Bases:
BaseMessageContent
Source Code in griptape/common/prompt_stack/contents/image_message_content.py
@define class ImageMessageContent(BaseMessageContent): artifact: Union[ImageArtifact, ImageUrlArtifact] = field(metadata={"serializable": True}) @classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> ImageMessageContent: raise NotImplementedError
artifact = field(metadata={'serializable': True})
class-attribute instance-attribute
from_deltas(deltas)classmethod
Source Code in griptape/common/prompt_stack/contents/image_message_content.py
@classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> ImageMessageContent: raise NotImplementedError
Message
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-attributevalue
property
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)], )
Observable
Source Code in griptape/common/observable.py
class Observable: @define class Call: func: Callable = field(kw_only=True) instance: Optional[Any] = field(default=None, kw_only=True) args: tuple[Any, ...] = field(default=Factory(tuple), kw_only=True) kwargs: dict[str, Any] = field(default=Factory(dict), kw_only=True) decorator_args: tuple[Any, ...] = field(default=Factory(tuple), kw_only=True) decorator_kwargs: dict[str, Any] = field(default=Factory(dict), kw_only=True) def __call__(self) -> Any: return self.func(*self.args, **self.kwargs) @property def tags(self) -> Optional[list[str]]: return self.decorator_kwargs.get("tags")
Call
Source Code in griptape/common/observable.py
@define class Call: func: Callable = field(kw_only=True) instance: Optional[Any] = field(default=None, kw_only=True) args: tuple[Any, ...] = field(default=Factory(tuple), kw_only=True) kwargs: dict[str, Any] = field(default=Factory(dict), kw_only=True) decorator_args: tuple[Any, ...] = field(default=Factory(tuple), kw_only=True) decorator_kwargs: dict[str, Any] = field(default=Factory(dict), kw_only=True) def __call__(self) -> Any: return self.func(*self.args, **self.kwargs) @property def tags(self) -> Optional[list[str]]: return self.decorator_kwargs.get("tags")
args = field(default=Factory(tuple), kw_only=True)
class-attribute instance-attributedecorator_args = field(default=Factory(tuple), kw_only=True)
class-attribute instance-attributedecorator_kwargs = field(default=Factory(dict), kw_only=True)
class-attribute instance-attributefunc = field(kw_only=True)
class-attribute instance-attributeinstance = field(default=None, kw_only=True)
class-attribute instance-attributekwargs = field(default=Factory(dict), kw_only=True)
class-attribute instance-attributetags
property
PromptStack
Bases:
SerializableMixin
Source Code in griptape/common/prompt_stack/prompt_stack.py
@define class PromptStack(SerializableMixin): messages: list[Message] = field(factory=list, kw_only=True, metadata={"serializable": True}) tools: list[BaseTool] = field(factory=list, kw_only=True) output_schema: Optional[Union[Schema, type[BaseModel]]] = field(default=None, kw_only=True) @property def system_messages(self) -> list[Message]: return [message for message in self.messages if message.is_system()] @property def user_messages(self) -> list[Message]: return [message for message in self.messages if message.is_user()] @property def assistant_messages(self) -> list[Message]: return [message for message in self.messages if message.is_assistant()] def add_message(self, artifact: str | BaseArtifact, role: str) -> Message: content = self.__to_message_content(artifact) self.messages.append(Message(content=content, role=role)) return self.messages[-1] def add_system_message(self, artifact: str | BaseArtifact) -> Message: return self.add_message(artifact, Message.SYSTEM_ROLE) def add_user_message(self, artifact: str | BaseArtifact) -> Message: return self.add_message(artifact, Message.USER_ROLE) def add_assistant_message(self, artifact: str | BaseArtifact) -> Message: return self.add_message(artifact, Message.ASSISTANT_ROLE) def to_output_json_schema(self, schema_id: str = "Output Format") -> dict: if self.output_schema is None: raise ValueError("Output schema is not set") if isinstance(self.output_schema, Schema): json_schema = self.output_schema.json_schema(schema_id) elif isinstance(self.output_schema, type) and issubclass(self.output_schema, BaseModel): json_schema = build_strict_schema(self.output_schema.model_json_schema(), schema_id) else: raise ValueError(f"Unsupported output schema type: {type(self.output_schema)}") return json_schema @classmethod def from_artifact(cls, artifact: BaseArtifact) -> PromptStack: prompt_stack = cls() prompt_stack.add_user_message(artifact) return prompt_stack def __to_message_content(self, artifact: str | BaseArtifact) -> list[BaseMessageContent]: if isinstance(artifact, str): return [TextMessageContent(TextArtifact(artifact))] if isinstance(artifact, TextArtifact): return [TextMessageContent(artifact)] if isinstance(artifact, ImageArtifact): return [ImageMessageContent(artifact)] if isinstance(artifact, ImageUrlArtifact): return [ImageMessageContent(artifact)] if isinstance(artifact, AudioArtifact): return [AudioMessageContent(artifact)] if isinstance(artifact, GenericArtifact): return [GenericMessageContent(artifact)] if isinstance(artifact, ActionArtifact): action = artifact.value output = action.output if output is None: return [ActionCallMessageContent(artifact)] return [ActionResultMessageContent(output, action=action)] if isinstance(artifact, ListArtifact): processed_contents = [self.__to_message_content(artifact) for artifact in artifact.value] return [sub_content for processed_content in processed_contents for sub_content in processed_content] return [TextMessageContent(TextArtifact(artifact.to_text()))]
assistant_messages
propertymessages = field(factory=list, kw_only=True, metadata={'serializable': True})
class-attribute instance-attributeoutput_schema = field(default=None, kw_only=True)
class-attribute instance-attributesystem_messages
propertytools = field(factory=list, kw_only=True)
class-attribute instance-attributeuser_messages
property
__to_message_content(artifact)
Source Code in griptape/common/prompt_stack/prompt_stack.py
def __to_message_content(self, artifact: str | BaseArtifact) -> list[BaseMessageContent]: if isinstance(artifact, str): return [TextMessageContent(TextArtifact(artifact))] if isinstance(artifact, TextArtifact): return [TextMessageContent(artifact)] if isinstance(artifact, ImageArtifact): return [ImageMessageContent(artifact)] if isinstance(artifact, ImageUrlArtifact): return [ImageMessageContent(artifact)] if isinstance(artifact, AudioArtifact): return [AudioMessageContent(artifact)] if isinstance(artifact, GenericArtifact): return [GenericMessageContent(artifact)] if isinstance(artifact, ActionArtifact): action = artifact.value output = action.output if output is None: return [ActionCallMessageContent(artifact)] return [ActionResultMessageContent(output, action=action)] if isinstance(artifact, ListArtifact): processed_contents = [self.__to_message_content(artifact) for artifact in artifact.value] return [sub_content for processed_content in processed_contents for sub_content in processed_content] return [TextMessageContent(TextArtifact(artifact.to_text()))]
add_assistant_message(artifact)
Source Code in griptape/common/prompt_stack/prompt_stack.py
def add_assistant_message(self, artifact: str | BaseArtifact) -> Message: return self.add_message(artifact, Message.ASSISTANT_ROLE)
add_message(artifact, role)
Source Code in griptape/common/prompt_stack/prompt_stack.py
def add_message(self, artifact: str | BaseArtifact, role: str) -> Message: content = self.__to_message_content(artifact) self.messages.append(Message(content=content, role=role)) return self.messages[-1]
add_system_message(artifact)
Source Code in griptape/common/prompt_stack/prompt_stack.py
def add_system_message(self, artifact: str | BaseArtifact) -> Message: return self.add_message(artifact, Message.SYSTEM_ROLE)
add_user_message(artifact)
Source Code in griptape/common/prompt_stack/prompt_stack.py
def add_user_message(self, artifact: str | BaseArtifact) -> Message: return self.add_message(artifact, Message.USER_ROLE)
from_artifact(artifact)classmethod
Source Code in griptape/common/prompt_stack/prompt_stack.py
@classmethod def from_artifact(cls, artifact: BaseArtifact) -> PromptStack: prompt_stack = cls() prompt_stack.add_user_message(artifact) return prompt_stack
to_output_json_schema(schema_id='Output Format')
Source Code in griptape/common/prompt_stack/prompt_stack.py
def to_output_json_schema(self, schema_id: str = "Output Format") -> dict: if self.output_schema is None: raise ValueError("Output schema is not set") if isinstance(self.output_schema, Schema): json_schema = self.output_schema.json_schema(schema_id) elif isinstance(self.output_schema, type) and issubclass(self.output_schema, BaseModel): json_schema = build_strict_schema(self.output_schema.model_json_schema(), schema_id) else: raise ValueError(f"Unsupported output schema type: {type(self.output_schema)}") return json_schema
Reference
Bases:
SerializableMixin
Source Code in griptape/common/reference.py
@define(kw_only=True) class Reference(SerializableMixin): id: str = field(default=Factory(lambda: uuid.uuid4().hex), metadata={"serializable": True}) title: str = field(metadata={"serializable": True}) authors: list[str] = field(factory=list, metadata={"serializable": True}) source: Optional[str] = field(default=None, metadata={"serializable": True}) year: Optional[str] = field(default=None, metadata={"serializable": True}) url: Optional[str] = field(default=None, metadata={"serializable": True})
authors = field(factory=list, metadata={'serializable': True})
class-attribute instance-attributeid = field(default=Factory(lambda: uuid.uuid4().hex), metadata={'serializable': True})
class-attribute instance-attributesource = field(default=None, metadata={'serializable': True})
class-attribute instance-attributetitle = field(metadata={'serializable': True})
class-attribute instance-attributeurl = field(default=None, metadata={'serializable': True})
class-attribute instance-attributeyear = field(default=None, metadata={'serializable': True})
class-attribute instance-attribute
TextDeltaMessageContent
Bases:
BaseDeltaMessageContent
Source Code in griptape/common/prompt_stack/contents/text_delta_message_content.py
@define class TextDeltaMessageContent(BaseDeltaMessageContent): text: str = field(metadata={"serializable": True})
text = field(metadata={'serializable': True})
class-attribute instance-attribute
TextMessageContent
Bases:
BaseMessageContent
Source Code in griptape/common/prompt_stack/contents/text_message_content.py
@define class TextMessageContent(BaseMessageContent): artifact: BaseArtifact = field(metadata={"serializable": True}) @classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> TextMessageContent: text_deltas = [delta for delta in deltas if isinstance(delta, TextDeltaMessageContent)] artifact = TextArtifact(value="".join(delta.text for delta in text_deltas)) return cls(artifact=artifact)
artifact = field(metadata={'serializable': True})
class-attribute instance-attribute
from_deltas(deltas)classmethod
Source Code in griptape/common/prompt_stack/contents/text_message_content.py
@classmethod def from_deltas(cls, deltas: Sequence[BaseDeltaMessageContent]) -> TextMessageContent: text_deltas = [delta for delta in deltas if isinstance(delta, TextDeltaMessageContent)] artifact = TextArtifact(value="".join(delta.text for delta in text_deltas)) return cls(artifact=artifact)
ToolAction
Bases:
BaseAction
Attributes
Name | Type | Description |
---|---|---|
tag | str | The tag (unique identifier) of the action. |
name | str | The name (Tool name) of the action. |
path | Optional[str] | The path (Tool activity name) of the action. |
input | dict | The input (Tool params) of the action. |
tool | Optional[BaseTool] | The matched Tool of the action. |
output | Optional[BaseArtifact] | The output (Tool result) of the action. |
Source Code in griptape/common/actions/tool_action.py
@define(kw_only=True) class ToolAction(BaseAction): """Represents an instance of an LLM using a Tool. Attributes: tag: The tag (unique identifier) of the action. name: The name (Tool name) of the action. path: The path (Tool activity name) of the action. input: The input (Tool params) of the action. tool: The matched Tool of the action. output: The output (Tool result) of the action. """ tag: str = field(metadata={"serializable": True}) name: str = field(metadata={"serializable": True}) path: Optional[str] = field(default=None, metadata={"serializable": True}) input: dict = field(factory=dict, metadata={"serializable": True}) tool: Optional[BaseTool] = field(default=None) output: Optional[BaseArtifact] = field(default=None) def __str__(self) -> str: return json.dumps(self.to_dict()) def to_native_tool_name(self) -> str: parts = [self.name] if self.path is not None: parts.append(self.path) return "_".join(parts) @classmethod def from_native_tool_name(cls, native_tool_name: str) -> tuple[str, Optional[str]]: parts = native_tool_name.split("_", 1) if len(parts) == 1: name, path = parts[0], None else: name, path = parts return name, path
input = field(factory=dict, metadata={'serializable': True})
class-attribute instance-attributename = field(metadata={'serializable': True})
class-attribute instance-attributeoutput = field(default=None)
class-attribute instance-attributepath = field(default=None, metadata={'serializable': True})
class-attribute instance-attributetag = field(metadata={'serializable': True})
class-attribute instance-attributetool = field(default=None)
class-attribute instance-attribute
str()
Source Code in griptape/common/actions/tool_action.py
def __str__(self) -> str: return json.dumps(self.to_dict())
from_native_tool_name(native_tool_name)classmethod
Source Code in griptape/common/actions/tool_action.py
@classmethod def from_native_tool_name(cls, native_tool_name: str) -> tuple[str, Optional[str]]: parts = native_tool_name.split("_", 1) if len(parts) == 1: name, path = parts[0], None else: name, path = parts return name, path
to_native_tool_name()
Source Code in griptape/common/actions/tool_action.py
def to_native_tool_name(self) -> str: parts = [self.name] if self.path is not None: parts.append(self.path) return "_".join(parts)
- On this page
- ActionCallMessageContent
- ActionResultMessageContent
- AudioDeltaMessageContent
- AudioMessageContent
- BaseAction
- BaseDeltaMessageContent
- BaseMessage
- BaseMessageContent
- DeltaMessage
- GenericMessageContent
- ImageMessageContent
- Message
- Observable
- PromptStack
- Reference
- TextDeltaMessageContent
- TextMessageContent
- ToolAction
Could this page be better? Report a problem or suggest an addition!