Crew AI research automation

⏱️ Czas czytania: ~18 minut | 📊 Poziom: Średniozaawansowany | 📅 Aktualizacja: Grudzień 2025

CrewAI to jeden z najpopularniejszych frameworków do budowania systemów wieloagentowych opartych na LLM. Jego unikalne podejście opiera się na metaforze zespołu pracowników (Crew) — każdy agent ma przypisaną rolę, cel i zestaw narzędzi, a współpraca między nimi jest zorganizowana jak w prawdziwym zespole projektowym.

🎯 W tym artykule nauczysz się:
  • Podstawowych konceptów CrewAI: Agent, Task, Crew
  • Jak zaprojektować zespół agentów do automatyzacji researchu
  • Konfiguracji przez YAML i kod Python
  • Integracji z narzędziami zewnętrznymi
  • Debugowania i optymalizacji zespołu

Architektura CrewAI — kluczowe koncepty

CrewAI opiera się na trzech podstawowych prymitywach:

Komponent Opis
🤖 Agent Autonomiczna jednostka z rolą, celem i backstory. Może używać narzędzi i podejmować decyzje.
📋 Task Konkretne zadanie do wykonania. Zawiera opis, oczekiwane wyjście, może zależeć od innych zadań.
👥 Crew Zespół agentów i zadań. Definiuje proces: sekwencyjny, hierarchiczny lub równoległy.
CREW (Zespół) Researcher tools: [search] goal: znajdź dane Analyst tools: [calculate] goal: analizuj Writer tools: [file_write] goal: napisz raport Task: Research Task: Analyze Task: Write

Architektura CrewAI: Agenci przypisani do zadań w ramach Crew

Instalacja

# Instalacja CrewAI
pip install crewai crewai-tools

# Ustawienie API key
export OPENAI_API_KEY="sk-..."

Definiowanie agentów

Każdy agent wymaga zdefiniowania roli, celu i backstory:

from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, ScrapeWebsiteTool

# Narzędzia
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()

# Agent Researcher
researcher = Agent(
    role="Senior Research Analyst",
    goal="Znajdź najnowsze informacje o {topic}",
    backstory="""Jesteś doświadczonym analitykiem z 10-letnim 
    doświadczeniem w researchu technologicznym. Potrafisz 
    szybko znaleźć i zweryfikować informacje.""",
    tools=[search_tool, scrape_tool],
    verbose=True,
    allow_delegation=False
)

# Agent Analyst
analyst = Agent(
    role="Data Analyst",
    goal="Przeanalizuj zebrane dane i wyciągnij wnioski",
    backstory="""Specjalizujesz się w analizie danych i 
    identyfikowaniu trendów. Twoje analizy są zawsze 
    poparte danymi.""",
    verbose=True
)

# Agent Writer
writer = Agent(
    role="Content Writer",
    goal="Napisz angażujący raport na podstawie analizy",
    backstory="""Jesteś utalentowanym pisarzem technicznym, 
    który potrafi przekształcić złożone dane w 
    przystępne treści.""",
    verbose=True
)

Definiowanie zadań (Tasks)

# Task 1: Research
research_task = Task(
    description="""Przeprowadź dogłębny research na temat: {topic}
    
    Znajdź:
    - Najnowsze artykuły i publikacje
    - Kluczowe statystyki i dane
    - Opinie ekspertów
    - Trendy i prognozy""",
    expected_output="Szczegółowy raport z researchu z źródłami",
    agent=researcher
)

# Task 2: Analiza (zależy od researchu)
analysis_task = Task(
    description="""Przeanalizuj zebrane dane:
    
    - Zidentyfikuj kluczowe trendy
    - Porównaj różne źródła
    - Wyciągnij wnioski
    - Przygotuj rekomendacje""",
    expected_output="Analiza z wnioskami i rekomendacjami",
    agent=analyst,
    context=[research_task]  # zależy od research_task
)

# Task 3: Raport (zależy od analizy)
writing_task = Task(
    description="""Napisz profesjonalny raport:
    
    - Streszczenie wykonawcze
    - Główne ustalenia
    - Analiza szczegółowa
    - Wnioski i rekomendacje""",
    expected_output="Kompletny raport w formacie markdown",
    agent=writer,
    context=[analysis_task],
    output_file="report.md"  # zapisz do pliku
)

Tworzenie i uruchamianie Crew

# Utworzenie zespołu
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential,  # wykonuj po kolei
    verbose=True
)

# Uruchomienie z parametrami
result = crew.kickoff(inputs={
    "topic": "AI Agents frameworks 2025"
})

print(result)

Typy procesów

Proces Opis Użycie
sequential Zadania wykonywane po kolei Prosty pipeline
hierarchical Manager deleguje do agentów Złożone projekty

Konfiguracja przez YAML

CrewAI wspiera konfigurację agentów i zadań przez pliki YAML:

# config/agents.yaml
researcher:
  role: "Senior Research Analyst"
  goal: "Find latest information about {topic}"
  backstory: "You are an experienced researcher..."

writer:
  role: "Content Writer"
  goal: "Create engaging content"
  backstory: "You are a talented writer..."
# config/tasks.yaml
research_task:
  description: "Research {topic} thoroughly..."
  expected_output: "Detailed research report"
  agent: researcher

Wbudowane narzędzia (crewai-tools)

Narzędzie Funkcja
SerperDevTool Wyszukiwanie w Google
ScrapeWebsiteTool Scraping stron WWW
FileReadTool Czytanie plików
PDFSearchTool Przeszukiwanie PDF (RAG)
CodeInterpreterTool Wykonywanie kodu Python
💡 Wskazówka:

Zacznij od Process.sequential i małego zespołu (2-3 agentów). Dodawaj złożoność stopniowo, monitorując koszty i jakość.

📚 Bibliografia

  1. CrewAI. (2025). CrewAI Documentation. docs.crewai.com
  2. CrewAI. (2025). CrewAI Tools. github.com/crewAIInc/crewAI-tools
  3. Moura, J. (2024). CrewAI: Multi-Agent Framework. github.com/crewAIInc/crewAI