Loop Steps
Parameter reference for the Loop step class, which repeats a sequence of steps until max_iterations or an end_condition is met.
| Parameter | Type | Default | Description |
|---|---|---|---|
steps | WorkflowSteps | Required | Steps to execute in each loop iteration |
name | Optional[str] | None | Name of the loop step |
description | Optional[str] | None | Description of the loop step |
max_iterations | int | 3 | Maximum number of iterations for the loop |
forward_iteration_output | bool | False | If True, each iteration receives the previous iteration's output as input. If False, all iterations receive the original loop input |
end_condition | Optional[Union[Callable[[List[StepOutput]], bool], Callable[[List[StepOutput]], Awaitable[bool]], str]] | None | Function or CEL expression string to evaluate if the loop should end |
human_review | Optional[HumanReview] | None | All HITL settings in a single config. See HumanReview Config. |
HumanReview configuration
Pass these settings inside human_review=HumanReview(...). They are not direct constructor arguments. See HumanReview for the complete configuration and supported combinations.
| Parameter | Type | Default | Description |
|---|---|---|---|
requires_confirmation | bool | False | Pause for user confirmation before starting the loop |
confirmation_message | Optional[str] | None | Message shown to user when requesting confirmation |
requires_iteration_review | bool | False | Pause after each iteration so the user can review and approve, edit, or reject. See Loop HITL. |
iteration_review_message | Optional[str] | None | Message shown to user during iteration review |
on_reject | Union[OnReject, str] | OnReject.skip | Action when rejected: skip, cancel, retry |
Constructor example (install agno first): |
from agno.workflow.loop import Loop
from agno.workflow.step import Step
from agno.workflow.types import HumanReview, StepInput, StepOutput
def prepare(step_input: StepInput) -> StepOutput:
return StepOutput(content=step_input.input)
prepare_step = Step(name="prepare", executor=prepare)
step = Loop(
steps=[prepare_step], max_iterations=2,
human_review=HumanReview(requires_confirmation=True),
)