Loop Iterative Accumulation
Demonstrates loop iterations carrying forward output from previous iterations.
Each iteration receives the previous iteration's output via step_input.get_last_step_content(), enabling iterative processing patterns like accumulation, refinement, and convergence.
This example increments a numeric value by 10 each iteration, stopping when it reaches 50 or more.
1from kern.workflow import Loop, Step, Workflow2from kern.workflow.types import StepInput, StepOutput345def increment_executor(step_input: StepInput) -> StepOutput:6 """Increment the previous step's numeric content by 10."""7 last_content = step_input.get_last_step_content()8 if last_content and last_content.isdigit():9 new_value = int(last_content) + 1010 return StepOutput(content=str(new_value))11 return StepOutput(content="0")121314workflow = Workflow(15 name="Iterative Accumulation Workflow",16 steps=[17 Step(18 name="Initial Value",19 executor=lambda step_input: StepOutput(content=step_input.input),20 ),21 Loop(22 name="Increment Loop",23 steps=[24 Step(25 name="Increment Step",26 executor=increment_executor,27 )28 ],29 end_condition=lambda step_outputs: int(step_outputs[-1].content) >= 50,30 max_iterations=10,31 forward_iteration_output=True, # Default: each iteration gets previous output32 ),33 ],34)3536if __name__ == "__main__":37 # Starting from 35: iteration 1 -> 45, iteration 2 -> 55 (>= 50, stops)38 workflow.print_response("35")