Workflow Base Classes¶
Base classes for creating custom workflows.
Classes¶
Workflow¶
Abstract base class for workflow implementations.
from mamba_agents import Workflow, WorkflowConfig, WorkflowState
class MyWorkflow(Workflow[None, str, dict]):
@property
def name(self) -> str:
return "my_workflow"
def _create_initial_state(self, prompt: str) -> WorkflowState[dict]:
return WorkflowState(context={"prompt": prompt})
async def _execute(self, prompt, state, deps=None) -> str:
# Implementation
return "result"
WorkflowState¶
Tracks workflow progress and execution history.
WorkflowStep¶
Represents a single step in workflow execution.
WorkflowResult¶
Result of workflow execution.
API Reference¶
Workflow
¶
Workflow(
config: WorkflowConfig | None = None,
hooks: WorkflowHooks[StateT, OutputT] | None = None,
)
Bases: ABC
Abstract base class for agentic workflows.
Workflows orchestrate Agent instances through multi-step execution patterns. Subclasses implement specific workflow types (ReAct, Plan-Execute, Reflection).
Example
from mamba_agents import Agent from mamba_agents.workflows import Workflow, WorkflowConfig
Create a custom workflow by extending Workflow¶
class MyWorkflow(Workflow[None, str, dict]): ... @property ... def name(self) -> str: ... return "my_workflow" ... ... def _create_initial_state(self, prompt: str) -> WorkflowState[dict]: ... return WorkflowState(context={"prompt": prompt}) ... ... async def _execute(self, prompt, state, deps): ... # Implement workflow logic ... return "result"
Initialize workflow.
| PARAMETER | DESCRIPTION |
|---|---|
config
|
Workflow execution configuration.
TYPE:
|
hooks
|
Optional hooks for observability.
TYPE:
|
Source code in src/mamba_agents/workflows/base.py
name
abstractmethod
property
¶
Get the workflow name/type identifier.
| RETURNS | DESCRIPTION |
|---|---|
str
|
Workflow type identifier. |
run
async
¶
run(
prompt: str, deps: DepsT | None = None
) -> WorkflowResult[OutputT, StateT]
Run the workflow.
| PARAMETER | DESCRIPTION |
|---|---|
prompt
|
Initial user prompt/task.
TYPE:
|
deps
|
Optional dependencies for agent calls.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
WorkflowResult[OutputT, StateT]
|
WorkflowResult with output and execution details. |
Source code in src/mamba_agents/workflows/base.py
run_sync
¶
run_sync(
prompt: str, deps: DepsT | None = None
) -> WorkflowResult[OutputT, StateT]
Run the workflow synchronously.
| PARAMETER | DESCRIPTION |
|---|---|
prompt
|
Initial user prompt/task.
TYPE:
|
deps
|
Optional dependencies for agent calls.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
WorkflowResult[OutputT, StateT]
|
WorkflowResult with output and execution details. |
Source code in src/mamba_agents/workflows/base.py
WorkflowState
dataclass
¶
WorkflowState(
current_step: int = 1,
total_steps: int = 0,
iteration_count: int = 0,
is_complete: bool = False,
is_failed: bool = False,
steps: list[WorkflowStep[Any]] = list(),
context: StateT | None = None,
metadata: dict[str, Any] = dict(),
)
Current state of workflow execution.
Tracks progress, decisions, and execution history.
| ATTRIBUTE | DESCRIPTION |
|---|---|
current_step |
Current step number (1-indexed).
TYPE:
|
total_steps |
Total steps executed so far.
TYPE:
|
iteration_count |
Current iteration count within workflow.
TYPE:
|
is_complete |
Whether workflow has completed.
TYPE:
|
is_failed |
Whether workflow failed.
TYPE:
|
steps |
List of all executed steps.
TYPE:
|
context |
Workflow-specific state data.
TYPE:
|
metadata |
Additional workflow metadata.
TYPE:
|
add_step
¶
add_step(step: WorkflowStep[Any]) -> None
get_latest_step
¶
get_latest_step() -> WorkflowStep[Any] | None
get_step
¶
get_step(step_number: int) -> WorkflowStep[Any] | None
WorkflowStep
dataclass
¶
WorkflowStep(
step_number: int,
step_type: str,
description: str,
input_data: Any,
output_data: OutputT | None = None,
agent_result: Any = None,
error: str | None = None,
started_at: datetime = (lambda: now(UTC))(),
completed_at: datetime | None = None,
metadata: dict[str, Any] = dict(),
)
A single step in workflow execution.
| ATTRIBUTE | DESCRIPTION |
|---|---|
step_number |
Sequential step number (1-indexed).
TYPE:
|
step_type |
Type identifier (e.g., "agent_call", "decision", "reflection").
TYPE:
|
description |
Human-readable step description.
TYPE:
|
input_data |
Input provided to this step.
TYPE:
|
output_data |
Output produced by this step.
TYPE:
|
agent_result |
AgentResult if step invoked an agent.
TYPE:
|
error |
Error message if step failed.
TYPE:
|
started_at |
Step start timestamp.
TYPE:
|
completed_at |
Step completion timestamp.
TYPE:
|
metadata |
Additional step-specific metadata.
TYPE:
|
WorkflowResult
dataclass
¶
WorkflowResult(
success: bool,
output: OutputT | None = None,
state: WorkflowState[StateT] | None = None,
error: str | None = None,
total_steps: int = 0,
total_iterations: int = 0,
duration_seconds: float = 0.0,
termination_reason: str = "unknown",
)
Result of workflow execution.
| ATTRIBUTE | DESCRIPTION |
|---|---|
success |
Whether workflow completed successfully.
TYPE:
|
output |
Final workflow output.
TYPE:
|
state |
Final workflow state.
TYPE:
|
error |
Error message if workflow failed.
TYPE:
|
total_steps |
Total steps executed.
TYPE:
|
total_iterations |
Total iterations across all steps.
TYPE:
|
duration_seconds |
Total execution time.
TYPE:
|
termination_reason |
Why the workflow stopped.
TYPE:
|
ok
classmethod
¶
ok(
output: OutputT,
state: WorkflowState[StateT],
duration: float,
reason: str = "completed",
) -> WorkflowResult[OutputT, StateT]
Create successful result.
Source code in src/mamba_agents/workflows/base.py
fail
classmethod
¶
fail(
error: str,
state: WorkflowState[StateT] | None = None,
duration: float = 0.0,
reason: str = "error",
) -> WorkflowResult[Any, StateT]
Create failed result.