prompttrail.agent.subroutine package

Submodules

prompttrail.agent.subroutine.session_init_strategy module

class prompttrail.agent.subroutine.session_init_strategy.CleanSessionStrategy

Bases: SessionInitStrategy

Strategy to create a clean session with no messages

initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.session_init_strategy.FilteredInheritStrategy(filter_fn: Callable[[Message], bool])

Bases: SessionInitStrategy

Strategy to inherit messages based on custom filter

__init__(filter_fn: Callable[[Message], bool])
initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.session_init_strategy.InheritSystemStrategy

Bases: SessionInitStrategy

Strategy to inherit system messages from parent

initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.session_init_strategy.LastNMessagesStrategy(n: int)

Bases: SessionInitStrategy

Strategy to inherit last N messages from parent

__init__(n: int)
initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.session_init_strategy.SessionInitStrategy

Bases: ABC

Base class defining how to initialize subroutine session

abstract initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

prompttrail.agent.subroutine.squash_strategy module

class prompttrail.agent.subroutine.squash_strategy.FilterByRoleStrategy(roles: List[str])

Bases: SquashStrategy

Strategy to retain messages with specific roles

__init__(roles: List[str])
squash(messages: List[Message]) List[Message]

Execute message squashing process

Parameters:

messages – List of messages to squash

Returns:

Squashed list of messages

class prompttrail.agent.subroutine.squash_strategy.LLMFilteringStrategy(model: Model, prompt: str)

Bases: SquashStrategy

Strategy to filter messages using LLM with custom prompt

__init__(model: Model, prompt: str)

Initialize LLMFilteringStrategy

Parameters:
  • model – LLM model to use for filtering

  • prompt – Custom prompt template for filtering messages

squash(messages: List[Message]) List[Message]

Filter messages using LLM with custom prompt

Parameters:

messages – List of messages to filter

Returns:

Filtered list of messages based on LLM response

class prompttrail.agent.subroutine.squash_strategy.LLMSummarizingStrategy(model: Model, prompt: str)

Bases: SquashStrategy

Strategy to summarize messages using LLM with custom prompt

__init__(model: Model, prompt: str)

Initialize LLMSummarizingStrategy

Parameters:
  • model – LLM model to use for summarization

  • prompt – Custom prompt template for summarizing messages

squash(messages: List[Message]) List[Message]

Summarize messages using LLM with custom prompt

Parameters:

messages – List of messages to summarize

Returns:

List containing a single summarized message

class prompttrail.agent.subroutine.squash_strategy.LastMessageStrategy

Bases: SquashStrategy

Strategy to retain only the last message

squash(messages: List[Message]) List[Message]

Execute message squashing process

Parameters:

messages – List of messages to squash

Returns:

Squashed list of messages

class prompttrail.agent.subroutine.squash_strategy.SquashStrategy

Bases: ABC

Base class defining message squashing strategy

initialize(parent_session: Session, subroutine_session: Session) None

Initialize session information

abstract squash(messages: List[Message]) List[Message]

Execute message squashing process

Parameters:

messages – List of messages to squash

Returns:

Squashed list of messages

Module contents

Subroutine package for PromptTrail agent.

class prompttrail.agent.subroutine.CleanSessionStrategy

Bases: SessionInitStrategy

Strategy to create a clean session with no messages

initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.FilterByRoleStrategy(roles: List[str])

Bases: SquashStrategy

Strategy to retain messages with specific roles

__init__(roles: List[str])
squash(messages: List[Message]) List[Message]

Execute message squashing process

Parameters:

messages – List of messages to squash

Returns:

Squashed list of messages

class prompttrail.agent.subroutine.FilteredInheritStrategy(filter_fn: Callable[[Message], bool])

Bases: SessionInitStrategy

Strategy to inherit messages based on custom filter

__init__(filter_fn: Callable[[Message], bool])
initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.InheritSystemStrategy

Bases: SessionInitStrategy

Strategy to inherit system messages from parent

initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.LLMFilteringStrategy(model: Model, prompt: str)

Bases: SquashStrategy

Strategy to filter messages using LLM with custom prompt

__init__(model: Model, prompt: str)

Initialize LLMFilteringStrategy

Parameters:
  • model – LLM model to use for filtering

  • prompt – Custom prompt template for filtering messages

squash(messages: List[Message]) List[Message]

Filter messages using LLM with custom prompt

Parameters:

messages – List of messages to filter

Returns:

Filtered list of messages based on LLM response

class prompttrail.agent.subroutine.LLMSummarizingStrategy(model: Model, prompt: str)

Bases: SquashStrategy

Strategy to summarize messages using LLM with custom prompt

__init__(model: Model, prompt: str)

Initialize LLMSummarizingStrategy

Parameters:
  • model – LLM model to use for summarization

  • prompt – Custom prompt template for summarizing messages

squash(messages: List[Message]) List[Message]

Summarize messages using LLM with custom prompt

Parameters:

messages – List of messages to summarize

Returns:

List containing a single summarized message

class prompttrail.agent.subroutine.LastMessageStrategy

Bases: SquashStrategy

Strategy to retain only the last message

squash(messages: List[Message]) List[Message]

Execute message squashing process

Parameters:

messages – List of messages to squash

Returns:

Squashed list of messages

class prompttrail.agent.subroutine.SessionInitStrategy

Bases: ABC

Base class defining how to initialize subroutine session

abstract initialize(parent_session: Session) Session

Create and initialize a session for subroutine

Parameters:

parent_session – Parent session that invoked the subroutine

Returns:

Initialized session for subroutine use

class prompttrail.agent.subroutine.SquashStrategy

Bases: ABC

Base class defining message squashing strategy

initialize(parent_session: Session, subroutine_session: Session) None

Initialize session information

abstract squash(messages: List[Message]) List[Message]

Execute message squashing process

Parameters:

messages – List of messages to squash

Returns:

Squashed list of messages

class prompttrail.agent.subroutine.SubroutineTemplate(template: Template, template_id: str | None = None, session_init_strategy: SessionInitStrategy | None = None, squash_strategy: SquashStrategy | None = None, before_transform: List[SessionTransformer] | SessionTransformer | None = None, after_transform: List[SessionTransformer] | SessionTransformer | None = None, runner: Runner | None = None, model: Model | None = None)

Bases: Template

Template for executing subroutines with isolated session management.

This template allows for executing other templates in an isolated session context, with flexible strategies for session initialization and message handling. The execution environment is completely isolated from the parent session, with the ability to override the model or provide a custom runner.

Parameters:
  • template – The template to execute as a subroutine

  • template_id – Optional identifier for the template

  • session_init_strategy – Strategy for initializing the subroutine session

  • squash_strategy – Strategy for handling messages after subroutine execution

  • before_transform – Transformers to apply before execution

  • after_transform – Transformers to apply after execution

  • runner – Optional complete runner override for isolated environment

  • model – Optional model override (cannot be used with runner)

__init__(template: Template, template_id: str | None = None, session_init_strategy: SessionInitStrategy | None = None, squash_strategy: SquashStrategy | None = None, before_transform: List[SessionTransformer] | SessionTransformer | None = None, after_transform: List[SessionTransformer] | SessionTransformer | None = None, runner: Runner | None = None, model: Model | None = None)

Initialize SubroutineTemplate.

Parameters:
  • template – The template to execute as a subroutine

  • template_id – Optional identifier for the template

  • session_init_strategy – Strategy for initializing the subroutine session

  • squash_strategy – Strategy for handling messages after subroutine execution

  • before_transform – Transformers to apply before execution

  • after_transform – Transformers to apply after execution

  • runner – Optional complete runner override for isolated environment

  • model – Optional model override (cannot be used with runner)

Raises:

ValueError – If both runner and model are provided

create_stack(session: Session) Stack

Create stack frame for this template.

Parameters:

session – The current session context

Returns:

Stack frame for subroutine execution