Skip to content

CrewAI: Multi-Agent Team Coordination

Overview

CrewAI makes it easy to build teams of AI agents that work together on complex tasks.

Each agent has a role, specific tasks, and can use tools.


Building a Crew

from crewai import Agent, Task, Crew

class ResearchCrew:
    """Build a team of research agents"""

    def __init__(self):
        # Define agents
        self.researcher = Agent(
            role="Research Analyst",
            goal="Find and analyze information",
            backstory="You are an expert research analyst",
            tools=[WebSearchTool(), PaperAnalyzer()]
        )

        self.writer = Agent(
            role="Technical Writer",
            goal="Write clear technical content",
            backstory="You are an expert technical writer",
            tools=[WritingAssistandTool()]
        )

        # Define tasks
        self.research_task = Task(
            description="Research the topic: {topic}",
            agent=self.researcher
        )

        self.writing_task = Task(
            description="Write a report based on: {research}",
            agent=self.writer,
            depends_on=[self.research_task]
        )

        # Create crew
        self.crew = Crew(
            agents=[self.researcher, self.writer],
            tasks=[self.research_task, self.writing_task]
        )

    def execute(self, topic):
        """Run the crew"""
        result = self.crew.kickoff(
            inputs={"topic": topic}
        )
        return result

Hierarchical Processes

Manager Agent

class HierarchicalTeam:
    """Team with manager coordination"""

    def __init__(self):
        self.manager = Agent(
            role="Project Manager",
            goal="Coordinate team effectively",
            backstory="You are an experienced project manager"
        )

        self.agents = [
            # Various team members
        ]

        self.tasks = [
            # Various tasks
        ]

        self.crew = Crew(
            agents=[self.manager] + self.agents,
            tasks=self.tasks,
            manager_agent=self.manager,
            process="hierarchical"  # Manager coordinates
        )

Memory & Learning

Agent Memory

class LearningSystem:
    """Crew that learns over time"""

    def __init__(self):
        self.agent = Agent(
            role="Learner",
            memory=True,  # Enable memory
            memory_config={
                'type': 'short_term',  # Conversation memory
                'size': 50  # Remember last 50 messages
            }
        )

3 Warnings ⚠️

Warning 1: Task Dependencies

# ❌ WRONG
# Circular dependencies
task_a.depends_on([task_b])
task_b.depends_on([task_a])
# Deadlock!

# ✅ RIGHT
# Linear or DAG dependencies
task_1  task_2  task_3

Warning 2: Agent Conflicts

# ❌ WRONG
# Agents with conflicting goals
agent_1.goal = "Maximize speed"
agent_2.goal = "Maximize accuracy"
# They fight each other

# ✅ RIGHT
# Aligned goals
agent_1.goal = "Complete task efficiently"
agent_2.goal = "Ensure quality"
# Can work together

Warning 3: Token Waste

# ❌ WRONG
# Each agent re-processes everything
# Information passed multiple times

# ✅ RIGHT
# Pass refined results between agents
# Reduce redundant processing

Last Updated: August 9, 2026