Source code for council.controllers.execution_unit

from __future__ import annotations

from typing import Optional

from council.chains import ChainBase
from council.contexts import Budget, ChatMessage


[docs] class ExecutionUnit: """ Represents an execution unit to be executed by an Agent Parameters: chain(ChainBase): the chain to be executed budget(Budget): the budget granted for this execution initial_state(Optional[ChatMessage]): an optional message that will be injected in the chain context name(Optional[str]): a unique name for the execution. Defaults to :attr:`Chain.name` rank(Optional[int]): execution rank for execution, executed by ascending order. Same rank are executed in parallel. If not set, default to sequential execution. """ def __init__( self, chain: ChainBase, budget: Budget, initial_state: Optional[ChatMessage] = None, name: Optional[str] = None, rank: Optional[int] = None, ): self._chain = chain self._budget = budget self._initial_state = initial_state self._name = name or chain.name self._rank = rank or -1 @property def chain(self) -> ChainBase: """ The chain to be executed Returns: Chain: """ return self._chain @property def budget(self) -> Budget: """ The budget for the execution Returns: Budget: """ return self._budget @property def initial_state(self) -> Optional[ChatMessage]: """ An optional message to put in the chain context Returns: Optional[ChatMessage] """ return self._initial_state @property def name(self) -> str: """ Name of the execution unit Returns: str: """ return self._name @property def rank(self) -> int: """ Execution Rank Returns: int: """ return self._rank