Skip to main content
Run agents in sequence — each step receives the previous step’s output.
from praisonaiagents import Agent, AgentFlow

researcher = Agent(name="Researcher", instructions="Research the topic. Return facts only.")
writer = Agent(name="Writer", instructions="Turn the research into a clear summary.")

flow = AgentFlow(steps=[researcher, writer])
result = flow.start("Benefits of renewable energy")
print(result["output"])
The user submits one goal; each agent step passes its output to the next.

Quick Start

1

Simple Usage

Chain two agents with AgentFlow:
from praisonaiagents import Agent, AgentFlow

researcher = Agent(name="Researcher", instructions="Research the topic.")
writer = Agent(name="Writer", instructions="Write a summary from the research.")

flow = AgentFlow(steps=[researcher, writer])
result = flow.start("Benefits of renewable energy")
2

With Configuration

Add branching with route and step hooks:
from praisonaiagents import Agent, AgentFlow, route, Task

classifier = Agent(name="Classifier", instructions="Classify the request as success or failure.")

flow = AgentFlow(
    steps=[
        classifier,
        route({
            "success": [Agent(name="Process", instructions="Process the request.")],
            "failure": [Agent(name="Fallback", instructions="Handle the error.")],
        }),
    ],
)

How It Works

AgentFlow runs steps in order. Each agent’s reply becomes the next step’s input. Use route() for conditional paths, Task(should_run=...) to skip steps, or StepResult(stop_workflow=True) to exit early.
PatternUse when
Sequential agentsFixed pipeline (research → write → edit)
route()Branch on classifier output
should_runSkip steps based on context

Configuration Options

OptionTypeDefaultDescription
stepslist[]Agents, Task, or handler functions
processstr"sequential""sequential" or "hierarchical"
outputOutputConfigNoneVerbose, stream, and trace settings
hooksWorkflowHooksConfigNoneon_step_complete and lifecycle callbacks
memoryMemoryConfigNoneShared memory across steps

Best Practices

One role per agent — research, analyse, write, edit. Narrow instructions produce cleaner hand-offs.
Put a classifier step before route() rather than asking one agent to do everything.
WorkflowHooksConfig(on_step_complete=...) logs progress without changing agent logic.
Prove the pipeline with two agents, then add steps once data flow is clear.

AgentFlow

Full workflow API and step types

Workflow Patterns

Parallel, loop, and conditional patterns