DS DevShelfHub Projects · AI tools
Tutorials / AI Agents / Multi-Agent Collaboration
Build with CrewAI Intermediate · 16 min read Page 10 of 29

Multi-Agent CrewAI Collaboration: Patterns for Python Teams

By DevShelfHub

Four collaboration patterns — pipeline, parallel, delegation, reviewer loops — with the rules that keep them from devolving into thrash.

Series progress10 / 29
CrewAI collaboration tutorial — Multi-Agent CrewAI Collaboration: Patterns for Python Teams

Four Collaboration Patterns

Most crews fall into one of these shapes. Pick the simplest one that fits.

1. Pipeline (A → B → C)

Each agent owns a stage. Output flows downstream.

Linear pipeline

PYTHON
tasks = [
    Task(description="Research", agent=researcher, expected_output="..."),
    Task(description="Outline", agent=outliner, expected_output="..."),
    Task(description="Draft", agent=writer, expected_output="..."),
    Task(description="Edit", agent=editor, expected_output="..."),
]
crew = Crew(agents=[researcher, outliner, writer, editor], tasks=tasks, process=Process.sequential)

2. Parallel Fan-Out / Fan-In

Multiple agents work on independent sub-problems concurrently, then a synthesizer merges results.

Parallel research

PYTHON
sub_a = Task(description="Research market size", agent=r1, async_execution=True, expected_output="...")
sub_b = Task(description="Research competitors", agent=r2, async_execution=True, expected_output="...")
sub_c = Task(description="Research regulation", agent=r3, async_execution=True, expected_output="...")

merge = Task(
    description="Combine into a single market brief",
    agent=writer,
    context=[sub_a, sub_b, sub_c],
    expected_output="A 1-page market brief.",
)

3. Delegation (Manager + Workers)

One agent has allow_delegation=True and can hand sub-tasks to peers when stuck. Hierarchical process is delegation taken to its logical end.

Delegation in sequential

PYTHON
senior_engineer = Agent(
    role="Tech Lead",
    goal="Solve the bug end-to-end",
    backstory="...",
    allow_delegation=True,    # can ask the QA agent for help
)

qa_engineer = Agent(
    role="QA Engineer",
    goal="Reproduce and verify bug fixes",
    backstory="...",
    allow_delegation=False,
)

# In sequential mode, the tech_lead can call out to qa_engineer
# during its task if it needs verification.
crew = Crew(agents=[senior_engineer, qa_engineer], tasks=[fix_task], process=Process.sequential)

4. Reviewer / Critic Loops

One agent produces, another critiques. Loop until quality is acceptable. Cleanest way: explicit reviewer task.

Producer + critic

PYTHON
draft_task = Task(
    description="Draft the article",
    agent=writer,
    expected_output="A 600-word article.",
)

review_task = Task(
    description=(
        "Critique the draft. List up to 5 specific improvements. "
        "If the draft already meets the spec, say 'Approved.'"
    ),
    agent=critic,
    context=[draft_task],
    expected_output="Either a list of issues or 'Approved.'",
)

# For real iteration, wrap kickoff() in a loop and re-run draft_task
# with the critique injected via inputs.

Coordination Rules of Thumb

  • Fewer agents = better. Three focused agents beat seven mediocre ones.
  • One owner per task. Two agents on the same task = thrash.
  • Explicit context beats implicit memory. Pass context=[...] when in doubt.
  • Disable delegation in dev. Turn it on after you've measured the failure modes.

Notes

Parallel fan-out still needs a merge contract

When tasks run concurrently, downstream work may see partial or unordered context. Add an explicit consolidation task or deterministic merge rules so the next agent never guesses which branch won.

Managers concentrate latency and tokens

Hierarchical patterns route many decisions through one LLM. Watch tail latency, rate limits, and cost spikes when the manager re-reads long transcripts on every delegation cycle.

Reviewer loops double spend by design

Two-pass QA is powerful but expensive. Gate second passes on risk tier, confidence scores, or structured checks so you do not pay full multi-agent review on every low-risk run.

Serialization beats clever coordination for audits

When compliance needs immutable ordering, prefer a sequential pipeline with signed handoffs over dynamic parallel routing that is harder to explain after the fact.

CrewAI collaboration FAQ

How do CrewAI agents collaborate by default?

Sequential processes run tasks in order with handoffs, while hierarchical processes introduce a manager-style agent that can delegate. Pick the simplest process that still matches your coordination needs.

When should I parallelize CrewAI tasks?

Parallelize only when tasks are independent and you can merge results deterministically. Dependent research-to-writing pipelines usually stay sequential to preserve context quality.

What is a reviewer loop in CrewAI?

A reviewer loop adds a critique or QA agent that inspects another agent's output before release. It trades extra tokens for higher quality on high-risk deliverables.

How does delegation work in CrewAI?

Delegation lets an agent ask another agent for help when allow_delegation is enabled and the process supports it. Disable delegation unless you have clear guardrails because it can increase cost and latency.

How is CrewAI collaboration different from Flows?

Crews coordinate agents and tasks with a fixed process, while Flows orchestrate arbitrary method graphs with decorators. Use crews for classic handoffs and Flows when you need branching, persistence, or mixed automation.

See also: DevShelfHub's CrewAI tool review for a product-level comparison, pricing notes, and links back into this tutorial series.

Quick jump: API Reference