Přeskočit na obsah
LLM & Agenti

CrewAI tutorial

8 min čtení
CrewAIMulti-AgentPython

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.

CORE SYSTEMS tým

Enterprise architekti a AI inženýři.