CrewAI je revoluční framework pro vytváření týmů AI agentů, kteří dokáží spolupracovat na složitých úkolech. V tomto tutoriálu se naučíte, jak vytvořit vlastní agenty a nechat je efektivně spolupracovat na řešení problémů.
Úvod do CrewAI: Multi-Agent systémy v praxi¶
CrewAI je Python framework pro vytváření koordinovaných týmů AI agentů, které moují spolupracovat na složitých úkolech. Na rozdíl od single-agent přístupů umožňuje CrewAI vytvářet specializované agenty s různými rolemi a dovednostmi, kteří dokáží efektivně komunikovat a delegovat úkoly mezi sebou.
Framework využívá koncept crews (týmů), agents (agentů) a tasks (úkolů). Každý agent má definovanou roli, cíl a způsob práce, zatímco úkoly specifikují konkrétní akce, které mají být provedeny.
Instalace a základní setup¶
Pro začátek nainstalujeme CrewAI a potřebné závislosti:
pip install crewai
pip install 'crewai[tools]' # Pro pokročilé nástroje
CrewAI vyžaduje API klíč pro LLM provider. Nejjednodušší je použít OpenAI:
import os
from crewai import Agent, Task, Crew
from crewai_tools import SerperDevTool, ScrapeWebsiteTool
# Nastavení API klíčů
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["SERPER_API_KEY"] = "your-serper-api-key" # Pro web search
Vytvoření prvního agenta¶
Agent v CrewAI je definován pomocí role, cíle, backstory a nástrojů. Ukažme si vytvoření research agenta:
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()
researcher = Agent(
role='Senior Research Analyst',
goal='Najít a analyzovat nejnovější trendy v AI a machine learningu',
backstory="""Jsi zkušený research analytik s 10letou praxí
v oblasti AI. Specializuješ se na identifikaci emerging technologií
a jejich potenciálního dopadu na byznys.""",
verbose=True,
allow_delegation=False,
tools=[search_tool, scrape_tool],
max_iter=3,
memory=True
)
Parametr verbose=True umožňuje sledovat myšlenkové procesy agenta, allow_delegation určuje, zda může agent delegovat úkoly na jiné agenty, a max_iter omezuje počet iterací pro řešení úkolu.
Definování úkolů¶
Task specifikuje konkrétní práci, kterou má agent vykonat. Obsahuje popis, očekávaný výstup a přiřazeného agenta:
research_task = Task(
description="""Proveď comprehensive research o současných trendech
v oblasti Large Language Models. Zaměř se na:
1. Nejnovější modely vydané v posledních 6 měsících
2. Klíčové inovace v architektuře
3. Praktické aplikace v enterprise prostředí
4. Predikce budoucího vývoje""",
expected_output="""Strukturovaná zpráva s následujícími sekcemi:
- Executive Summary (2-3 odstavce)
- Analýza nových modelů (seznam s popisem)
- Technické inovace (klíčové body)
- Business aplikace (konkrétní use cases)
- Budoucí trendy (predikce na 12 měsíců)""",
agent=researcher,
tools=[search_tool, scrape_tool]
)
Pokročilý multi-agent systém¶
Síla CrewAI se projeví při vytvoření týmu specializovaných agentů. Vytvoříme kompletní workflow pro content marketing:
# Content Strategist
strategist = Agent(
role='Content Marketing Strategist',
goal='Vytvořit efektivní content strategy založenou na research datech',
backstory="""Jsi expert na content marketing s deep understandingem
SEO a audience engagement. Umíš transformovat research data
do actionable content strategie.""",
verbose=True,
allow_delegation=True,
tools=[search_tool]
)
# Content Writer
writer = Agent(
role='Senior Technical Writer',
goal='Napsat engaging a technicky přesný obsah',
backstory="""Jsi zkušený technical writer specializující se na AI
a software development. Umíš complex technické koncepty
prezentovat srozumitelně pro různé audience.""",
verbose=True,
allow_delegation=False
)
# Editor
editor = Agent(
role='Content Editor',
goal='Zajistit nejvyšší kvalitu a konzistenci obsahu',
backstory="""Jsi detail-oriented editor s okem pro kvalitu.
Specializuješ se na tech content a zajišťuješ, že každý piece
splňuje editorial standards.""",
verbose=True,
allow_delegation=False
)
Sekvenční workflow s task dependencies¶
CrewAI umožňuje vytvořit sekvenční workflow, kde výstup jednoho úkolu slouží jako vstup pro další:
# 1. Research task
research_task = Task(
description="Proveď research o CrewAI frameworku a jeho competitive landscape",
expected_output="Detailní research report s competitive analysis",
agent=researcher
)
# 2. Strategy task (závislý na research)
strategy_task = Task(
description="""Na základě research dat vytvoř content strategy pro
CrewAI tutorial sérii. Definuj:
- Target audience segments
- Content topics a priority
- Distribution channels
- Success metrics""",
expected_output="Comprehensive content strategy document",
agent=strategist,
context=[research_task] # Závislost na research task
)
# 3. Writing task
writing_task = Task(
description="""Napiš úvodní tutorial článek o CrewAI podle
content strategy. Článek by měl být:
- 1200-1500 slov
- Prakticky zaměřený s code examples
- Optimalizovaný pro SEO""",
expected_output="Hotový tutorial článek v markdown formátu",
agent=writer,
context=[research_task, strategy_task]
)
# 4. Editing task
editing_task = Task(
description="""Proveď final edit článku. Zkontroluj:
- Gramatiku a stylistiku
- Technickou přesnost
- SEO optimalizaci
- Strukturu a flow""",
expected_output="Finální, publikace-ready článek",
agent=editor,
context=[writing_task]
)
Spuštění crew a monitoring¶
Nyní vytvoříme crew a spustíme celý workflow:
# Vytvoření crew
content_crew = Crew(
agents=[researcher, strategist, writer, editor],
tasks=[research_task, strategy_task, writing_task, editing_task],
verbose=2, # Úroveň detailního logování
process=Process.sequential, # Sekvenční zpracování
memory=True, # Povolení paměti mezi tasky
max_rpm=10, # Rate limiting
share_crew=False
)
# Spuštění workflow
try:
result = content_crew.kickoff()
print("Workflow completed successfully!")
print(f"Final result: {result}")
except Exception as e:
print(f"Error during execution: {e}")
# Logging a error handling
Pokročilé funkce a optimalizace¶
CrewAI nabízí několik pokročilých funkcí pro optimalizaci performance:
Custom tools¶
Můžeme vytvořit vlastní nástroje pro specifické potřeby:
from crewai_tools import BaseTool
class DatabaseQueryTool(BaseTool):
name: str = "Database Query Tool"
description: str = "Umožňuje dotazovat se do firemní databáze"
def _run(self, query: str) -> str:
# Implementace databázového dotazu
# connection = get_db_connection()
# result = connection.execute(query)
return f"Query result for: {query}"
# Použití custom tool
db_tool = DatabaseQueryTool()
analyst = Agent(
role='Data Analyst',
goal='Analyzovat business data',
tools=[db_tool],
# ... další parametry
)
Hierarchical process¶
Pro komplexnější workflows můžeme použít hierarchický proces s manager agentem:
manager = Agent(
role='Project Manager',
goal='Koordinovat práci týmu a zajistit dodržení deadlinů',
backstory='Zkušený PM s expertise v AI projektech',
allow_delegation=True,
verbose=True
)
hierarchical_crew = Crew(
agents=[manager, researcher, writer, editor],
tasks=[research_task, writing_task, editing_task],
process=Process.hierarchical,
manager_llm="gpt-4", # Specializovaný LLM pro managera
verbose=2
)
Shrnutí¶
CrewAI představuje paradigma shift v přístupu k AI aplikacím. Místo spoléhání na jeden univerzální agent umožňuje vytvořit specializované týmy, kde každý agent excels ve své doméně. Framework je ideální pro komplexní workflows jako content creation, research & analysis, nebo business process automation. Klíčem k úspěchu je správné definování rolí, clear task specifications a efektivní orchestrace mezi agenty. S rostoucí komplexností AI systémů se multi-agent přístup CrewAI stává nepostradatelným nástrojem pro enterprise AI development.