Lektion 4 von 5·11 Min Lesezeit

Advanced Crew Patterns

Jenseits von Sequential und Hierarchical gibt es fortgeschrittene Patterns, die CrewAI zu einem mächtigen Orchestration-Framework machen. Von Manager Agents über bedingte Task-Execution bis zu Crew-übergreifender Kommunikation.

Hierarchical Crews

Im Hierarchical Process übernimmt ein Manager-Agent die Koordination:

from crewai import Crew, Process

crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.hierarchical,
    manager_llm=ChatOpenAI(model="gpt-4o"),
    manager_agent=None  # Automatischer Manager
)

Custom Manager Agent

manager = Agent(
    role="Project Director",
    goal="Koordiniere das Team, stelle Qualität sicher und "
         "halte den Zeitplan ein",
    backstory="Erfahrener Projektleiter mit Expertise in "
              "agilen Methoden und Stakeholder-Management",
    allow_delegation=True
)

crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.hierarchical,
    manager_agent=manager
)

Conditional Task Execution

Tasks können basierend auf Bedingungen übersprungen oder aktiviert werden:

def should_run_deep_analysis(context):
    """Nur Deep Analysis, wenn initiale Research signifikant ist."""
    research_output = context[0].output
    return "signifikant" in research_output.lower() or len(research_output) > 2000

deep_analysis_task = Task(
    description="Führe eine tiefgehende Analyse der signifikanten Findings durch",
    expected_output="Detaillierte Analyse mit statistischen Kennzahlen",
    agent=analyst,
    context=[research_task],
    condition=should_run_deep_analysis
)

Crew Collaboration

Mehrere Crews können zusammenarbeiten — jede Crew ist auf einen Aufgabenbereich spezialisiert:

# Crew 1: Research
research_crew = Crew(
    agents=[web_researcher, academic_researcher],
    tasks=[web_research_task, academic_research_task],
    process=Process.sequential
)

# Crew 2: Analysis & Reporting
analysis_crew = Crew(
    agents=[data_analyst, report_writer],
    tasks=[analysis_task, report_task],
    process=Process.sequential
)

# Sequenzielle Crew-Ausführung
research_result = research_crew.kickoff(inputs={"topic": "AI Agents"})
final_result = analysis_crew.kickoff(inputs={
    "topic": "AI Agents",
    "research_data": research_result.raw
})

Inter-Crew Communication

Output als Input

# Crew 1 Ergebnis → Crew 2 Input
crew1_result = crew1.kickoff(inputs={"query": "Marktanalyse DACH"})
crew2_result = crew2.kickoff(inputs={
    "research": crew1_result.raw,
    "format": "executive_summary"
})

Shared Knowledge Base

Crews können eine gemeinsame Wissensbasis nutzen:

from crewai.knowledge import Knowledge

shared_knowledge = Knowledge(
    sources=["docs/company_data.pdf", "docs/market_reports/"],
    embedder={"provider": "openai"}
)

crew1 = Crew(agents=[...], tasks=[...], knowledge=shared_knowledge)
crew2 = Crew(agents=[...], tasks=[...], knowledge=shared_knowledge)

Pattern-Auswahl

PatternWann einsetzenKomplexität
SequentialLineare Abfolge, klare ReihenfolgeNiedrig
HierarchicalManager-Entscheidungen nötigMittel
Multi-CrewGetrennte VerantwortungsbereicheHoch
ConditionalDynamische WorkflowsMittel

Praxis-Tipp: Starten Sie immer mit Sequential. Wechseln Sie zu Hierarchical, wenn der Workflow Entscheidungen erfordert. Multi-Crew lohnt sich erst, wenn Sie klar getrennte Verantwortungsbereiche haben — ansonsten erhöhen Sie die Komplexität ohne Mehrwert.