Loops

Repeat agent actions until a condition is met

Loops let agents repeat actions until a goal is achieved.

Diagram

Loop Flow

No

Yes

Start

🤖 Action

Done?

✅ End

Quick Start

  1. Simple Loop
    rust
    use praisonai::r#loop;
    
    let workflow = r#loop(agent)
        .until(|result| result.contains("DONE"))
        .max_iterations(5);
    
    workflow.run("Keep improving until satisfied").await?;
  2. With Counter
    rust
    use praisonai::r#loop;
    
    let workflow = r#loop(agent)
        .times(3);  // Run exactly 3 times
    
    workflow.run("Generate 3 ideas").await?;

How It Works

Diagram
AgentWorkflowAgentWorkflowloop[Until done or max iterations]Run taskResultCheck conditionFinal result

Configuration

OptionTypeDefaultDescription
max_iterationsusize10Maximum loop count
untilFnNoneStop condition
timesusizeNoneFixed iteration count

Common Patterns

Refinement Loop

rust
use praisonai::r#loop;

// Keep improving until quality is good
let workflow = r#loop(editor)
    .until(|result| quality_score(result) > 0.9)
    .max_iterations(5);

Retry Pattern

rust
use praisonai::r#loop;

// Retry until success
let workflow = r#loop(api_caller)
    .until(|result| !result.contains("error"))
    .max_iterations(3);

Best Practices

Always set max_iterations

Prevents infinite loops from runaway agents.

Use clear exit conditions

Make stop conditions obvious and testable.


Related