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.
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
)
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
)
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
)
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
})
# 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"
})
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 | Wann einsetzen | Komplexität |
|---|---|---|
| Sequential | Lineare Abfolge, klare Reihenfolge | Niedrig |
| Hierarchical | Manager-Entscheidungen nötig | Mittel |
| Multi-Crew | Getrennte Verantwortungsbereiche | Hoch |
| Conditional | Dynamische Workflows | Mittel |
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.