Skip to content

StepTypes API Reference

The StepTypes module defines the types of steps available in an agent's workflow, such as THINK, ACT, OBSERVE, and SYNTHESIZE.

Class Definition

Bases: Enum

Type classification for workflow steps.

Defines the different types of steps that can exist in a workflow, each representing a different kind of operation or phase in the agent's processing.

Attributes:

Name Type Description
THINK

Analysis and reasoning steps that process information

ACT

Decision-making and action steps that perform operations

OBSERVE

Data collection and observation steps that gather information

SYNTHESIZE

Integration steps that combine or summarize information

Example

Using step types:

# Reference step types
step_type = StepType.THINK
print(step_type.name)  # Output: "THINK"

# Use in step decoration
@think("analyze")  # Uses StepType.THINK internally
def analyze_data(self, input_data: str) -> str:
    return f"Analysis of {input_data}"

# Compare step types
if step.step_type == StepType.ACT:
    print("This is an action step")

Notes
  • Each step type has default configurations (temperature, etc.)
  • Step types influence tool availability through scoping
  • Custom steps typically default to ACT type behavior
Source code in clientai/agent/steps/types.py
class StepType(Enum):
    """Type classification for workflow steps.

    Defines the different types of steps that can exist
    in a workflow, each representing a different kind
    of operation or phase in the agent's processing.

    Attributes:
        THINK: Analysis and reasoning steps that process information
        ACT: Decision-making and action steps that perform operations
        OBSERVE: Data collection and observation steps that gather information
        SYNTHESIZE: Integration steps that combine or summarize information

    Example:
        Using step types:
        ```python
        # Reference step types
        step_type = StepType.THINK
        print(step_type.name)  # Output: "THINK"

        # Use in step decoration
        @think("analyze")  # Uses StepType.THINK internally
        def analyze_data(self, input_data: str) -> str:
            return f"Analysis of {input_data}"

        # Compare step types
        if step.step_type == StepType.ACT:
            print("This is an action step")
        ```

    Notes:
        - Each step type has default configurations (temperature, etc.)
        - Step types influence tool availability through scoping
        - Custom steps typically default to ACT type behavior
    """

    THINK = auto()
    ACT = auto()
    OBSERVE = auto()
    SYNTHESIZE = auto()