Skip to content

base_text_input_task

T = TypeVar('T', bound=BaseArtifact) module-attribute

logger = logging.getLogger(Defaults.logging_config.logger_name) module-attribute

BaseTextInputTask

Bases: RuleMixin, BaseTask[T], ABC

Source code in griptape/tasks/base_text_input_task.py
@define
class BaseTextInputTask(RuleMixin, BaseTask[T], ABC):
    DEFAULT_INPUT_TEMPLATE = "{{ args[0] }}"

    _input: Union[str, TextArtifact, Callable[[BaseTask], TextArtifact]] = field(
        default=DEFAULT_INPUT_TEMPLATE,
        alias="input",
    )

    @property
    def input(self) -> TextArtifact:
        if isinstance(self._input, TextArtifact):
            return self._input
        elif isinstance(self._input, Callable):
            return self._input(self)
        else:
            return TextArtifact(J2().render_from_string(self._input, **self.full_context))

    @input.setter
    def input(self, value: str | TextArtifact | Callable[[BaseTask], TextArtifact]) -> None:
        self._input = value

    def before_run(self) -> None:
        super().before_run()

        logger.info("%s %s\nInput: %s", self.__class__.__name__, self.id, self.input.to_text())

    def after_run(self) -> None:
        super().after_run()

        logger.info(
            "%s %s\nOutput: %s",
            self.__class__.__name__,
            self.id,
            self.output.to_text() if self.output is not None else "",
        )

DEFAULT_INPUT_TEMPLATE = '{{ args[0] }}' class-attribute instance-attribute

_input = field(default=DEFAULT_INPUT_TEMPLATE, alias='input') class-attribute instance-attribute

input property writable

after_run()

Source code in griptape/tasks/base_text_input_task.py
def after_run(self) -> None:
    super().after_run()

    logger.info(
        "%s %s\nOutput: %s",
        self.__class__.__name__,
        self.id,
        self.output.to_text() if self.output is not None else "",
    )

before_run()

Source code in griptape/tasks/base_text_input_task.py
def before_run(self) -> None:
    super().before_run()

    logger.info("%s %s\nInput: %s", self.__class__.__name__, self.id, self.input.to_text())