Zoeken op website

CrewAI: Een Praktische Gids voor Rolgebaseerde Agent Orkestratie


Inleiding

CrewAI is een lichtgewicht, razendsnel Python-framework voor het orkestreren van autonome AI-agenten die samenwerken als een ‘crew’ om een taak te voltooien. CrewAI is vanaf de basis opgebouwd, zonder zware abstracties, en is 100% onafhankelijk van LangChain of andere agentbibliotheken. CrewAI biedt ontwikkelaars eenvoud op hoog niveau en controle op laag niveau. Het is geoptimaliseerd voor productieklare multi-agentworkflows waarbij betrouwbaarheid, zichtbaarheid en kostenefficiëntie belangrijk zijn.

Deze korte cursus neemt je mee van "hello world" naar een productieklare multi-agent workflow met CrewAI. Je maakt kennis met de belangrijkste concepten, stelt een project op, programmeert een echte workflow, sluit een aantal krachtige tools aan en leert best practices voor betrouwbaarheid en monitoring. Aan het einde hiervan weet je hoe je kunt bepalen of CrewAI geschikt is voor jouw gebruikssituatie en hoe het zich verhoudt tot vergelijkbare frameworks zoals LangGraph en AutoGen. Laten we beginnen!

Belangrijkste punten

  • CrewAI is gebouwd voor productie, niet voor demo’s. CrewAI geeft prioriteit aan betrouwbaarheid, observeerbaarheid en kostenbeheersing. Het is lichtgewicht en werkt onafhankelijk van LangChain, waardoor het ideaal is voor echte multi-agent systemen.
  • Rolgebaseerde agenten verbeteren duidelijkheid en schaalbaarheid. Agenten krijgen expliciete rollen toegewezen (Onderzoeker, Schrijver, Manager, etc.) in plaats van een monolithische prompt. Rollen ondersteunen een duidelijke, schaalbare taakverdeling en samenwerking tussen agenten.
  • Het kern mentale model is eenvoudig en krachtig. Het mentale model van CrewAI is gebaseerd op vier basisprincipes: Agents, Taken, Hulpmiddelen en Crew. Deze aanpak resulteert in eenvoudige, consistente workflows die gemakkelijk te begrijpen, uit te breiden en te debuggen zijn.
  • Declaratieve + programmatische flexibiliteit versnelt iteratie. CrewAI-workflows kunnen declaratief in YAML worden beschreven voor snelle iteratie, en vervolgens worden geüpgraded naar programmatische Python-API's voor geavanceerde orkestratie, aangepaste logica en diepere controle wanneer dat nodig is.
  • Een sterke technische discipline is essentieel. Effectieve CrewAI-systemen steunen op richtlijnen, waaronder duidelijke taakbeschrijvingen, begrensde delegatie, iteratiebeperkingen, toolverankering en goede observeerbaarheid, om terugkerende loops, hallucinaties en kostenoverschrijdingen te voorkomen.

Wat is CrewAI?

CrewAI is een op rollen gebaseerd multi-agentframework voor Python. Hiermee kunt u meerdere LLM-aangedreven agenten met gedefinieerde expertise en doelen declareren, en deze organiseren om samen te werken in een gestructureerde workflow. De teamleden werken semi-autonoom binnen hun vakgebied en er kan ook een apart coördinatieproces (manager agent) worden ingericht om de workflow te beheren.

Het organiseren van AI-agenten in een team met duidelijk gedefinieerde rollen stelt je in staat te voorkomen dat één enkele agent alles moet doen, zoals het geval is in eenvoudigere systemen. Zo kan de ene agent bijvoorbeeld uitblinken in onderzoek, een andere in schrijven, en weer een andere in het nemen van beslissingen. CrewAI verzorgt de communicatie en organisatie tussen de agenten, waardoor ze kunnen samenwerken aan verschillende subtaken om een eindresultaat te bereiken.

Installatie

Vereisten: Python 3.10 tot 3.13. CrewAI heeft Python >=3.10 en <3.14 nodig. Zorg ervoor dat je binnen dit bereik zit (controleer via python3 --version). Zo niet, zorg er dan eerst voor dat je Python bijwerkt. Let ook op dat CrewAI de OpenAI API op de achtergrond gebruikt, dus je moet een OpenAI API-sleutel (of een sleutel van een andere LLM-aanbieder) beschikbaar hebben.

Stap 1: Installeer CrewAI. CrewAI wordt verspreid via PyPI. De kernbibliotheek kan worden geïnstalleerd via pip. Dit installeert het CrewAI-pakket en de CLI.

pip install crewai

Als je volledige ondersteuning voor tools wilt, kun je ook het optionele toolspakket installeren. Dit zorgt ervoor dat je toegang hebt tot CrewAI's bibliotheek met kant-en-klare tools.

pip install crewai[tools]

Opmerking: CrewAI heeft een eigen omgevingsbeheerder genaamd UV, die ook de afhankelijkheden voor je afhandelt. Dit is optioneel, maar wordt aanbevolen door de CrewAI-documentatie.

  • Installeer UV (eenmalig): op macOS/Linux, voer uit:
curl \-LsSf https://astral.sh/uv/install.sh

Dit installeert het uv-commando.

  • Installeer vervolgens CrewAI via de UV-tool: uv tool install crewai. Dit doet hetzelfde als pip, maar stelt ook automatisch een geïsoleerde omgeving en een CLI-tool in.

Na installatie kun je controleren of alles werkt door de versie te controleren. Je zou een uitvoer zoals crewai v0.x.x moeten zien, wat bevestigt dat het geïnstalleerd is.

crewai --version

Stap 2: Maak een CrewAI-projectskelet aan. CrewAI wordt geleverd met een CLI om een nieuw project met de aanbevolen structuur op te zetten. Voer in een terminal het volgende uit:

crewai create crew my_project_name

Vervang my_project_name door de naam die je je project wilt geven. Dit zal een map my_project_name/ genereren met een kant-en-klare template:

my_project_name/
├── .gitignore
├── pyproject.toml
├── README.md
├── .env                # for API keys and config
├── knowledge/          # (optional knowledge base)
└── src/
   └── my_project_name/
       ├── crew.py     # Crew orchestration code
       ├── main.py     # Entry point to run your crew
       ├── agents.yaml # Define your agents here
       ├── tasks.yaml  # Define tasks/workflows here
       └── tools/      # Custom tools (with __init__.py and example tool file)

Dit framework geeft je een gestructureerd startpunt. De bestanden agents.yaml en tasks.yaml zijn waar je op declaratieve wijze de configuratie van je team kunt specificeren (rollen, doelen, takenvolgorde, enz.), terwijl main.py en crew.py Python-toegangspunten zijn voor het geval je de voorkeur geeft aan op code gebaseerde configuratie. Het .env-bestand is waar je API-sleutels zult opslaan (bijv. OPENAI_API_KEY=…) zodat ze niet hardcoded zijn.

Stap 3: Installeer de projectafhankelijkheden. Voer in je projectmap het volgende uit:

crewai install

Dit commando zal de CrewAI CLI uitvoeren om alle afhankelijkheden die het project mogelijk nodig heeft te installeren (het opzetten van de omgeving, ervoor zorgen dat het crewai-tools-pakket is geïnstalleerd, enz.). Als je project extra Python-pakketten vereist, kun je deze specificeren met 'uv add <package>' (UV) of normaal via 'pip install'.

Stap 4: Voer je eerste crew uit. Nu ben je klaar om de standaard voorbeeldcrew uit te voeren. Voer gewoon uit:

crewai run

Dit zal de crew uitvoeren die in je scaffold is gedefinieerd (standaard kan het een eenvoudig voorbeeld van samenwerking tussen twee agenten uitvoeren). Als alles werkt, zou je de agenten in de console moeten zien nadenken/handelen.

Veelvoorkomende installatieproblemen*:*

  • Python-versie – Installeer op een ondersteunde versie (3.10–3.13), omdat de installatie kan mislukken op oudere versies van Python vanwege een afhankelijkheidsprobleem.
  • OpenAI SDK-versie – CrewAI kan een OpenAI Python SDK van minimaal een bepaalde versie vereisen (bijv. openai >= 1.13.3 is een vereiste voor CrewAI 0.175.0). Als je importfouten krijgt met betrekking tot OpenAI, zorg er dan voor dat je je OpenAI-pakket bijwerkt.
  • Windows buildtools – Als je een buildfout tegenkomt voor chroma-hnswlib op Windows, moet je de Visual Studio C++ Build Tools installeren (CrewAI gebruikt Chroma voor geheugen; de oplossing is om de C++ buildtools beschikbaar te hebben).
  • UV niet in PATH – Als het uv-commando na installatie niet kan worden gevonden, voer dan uv tool update-shell uit om je PATH bij te werken.

CrewAI Mentaal Model: Agenten, Taken, Hulpmiddelen en Crew

Het is de moeite waard om te kijken naar de vier belangrijkste bouwstenen van CrewAI. Een CrewAI-werkstroom bestaat uit 4 hoofdcomponenten: Agents, Taken, Tools en de Crew zelf (een orkestrator die agents en taken combineert).

Agenten: Rollen-gebaseerde LLM-werknemers

Een Agent in CrewAI is een door LLM aangedreven medewerker met een toegewezen rol, een doel om te bereiken en (optioneel) enige achtergrondcontext. Agents werken autonoom en nemen beslissingen die als haalbaar worden beschouwd binnen hun expertisegebied. Zo kun je bijvoorbeeld een agent hebben met de rol van Research Analyst wiens doel is om onderzoek te doen, en een andere agent met de rol van Writer wiens doel is om een rapport te leveren. Je maakt een agent aan door de rol, het doel en andere parameters te specificeren. Hier is een voorbeeld:

from crewai import Agent

researcher = Agent(
    role="Senior Research Analyst",
    goal="Identify emerging AI trends and their business implications",
    backstory="You have 10 years of experience in AI research...",
    llm=your_llm_instance,         # (Optional) use a specific LLM for this agent
    tools=[web_search_tool, document_loader_tool],
    memory=True,                   # Enable short/long-term memory for this agent
    verbose=True                   # Log the agent's thought process and decisions
)

Belangrijke kenmerken van een agent:

  • rol: De naam of het vaardighedenset van de agent (dit kan het gedrag beïnvloeden; bijvoorbeeld: “Financieel Adviseur”, “SQL Database Analist”).
  • doel: Een doel op hoog niveau dat de agent moet bereiken.
  • achtergrondverhaal: Achtergrondcontext of persona. Dit kan helpen de kwaliteit van prompts te verbeteren door de agent een gezichtspunt of toon te geven (bijv. „Je hebt 10 jaar ervaring in cybersecurity…“).
  • tools: Een lijst van hulpmiddelen (functies/API's) die de agent kan gebruiken om hem te helpen bij zijn werk.
  • llm: Je kunt een specifiek LLM toewijzen aan elke agent. Je kunt bijvoorbeeld een goedkoper model gebruiken voor eenvoudige lookup-/trefwoordgestuurde taken, en een krachtiger GPT-5-model voor complexere taken om te helpen bij het optimaliseren van prestatieafwegingen.
  • geheugen: Als dit waar is, zal de agent geheugen behouden over taken heen (waardoor hij zich het verleden kan herinneren, bijvoorbeeld eerdere interacties/vragen/bevindingen).
  • verbose: Als True zal de agent uitgebreide logboeken van zijn activiteiten afdrukken (handig voor debuggen/traceren van besluitvorming).

Taken: Specifieke Werk Eenheden

Een Taak in CrewAI vertegenwoordigt een eenheid van werk die door een agent moet worden uitgevoerd, inclusief instructies en een verwacht resultaat. Je kunt het zien als het toewijzen van een takenlijst-item aan een van je agenten. Zo definieer je een Taak in code:

from crewai import Task

analysis_task = Task(
    description="Analyze the top 5 AI trends in 2025 and assess their market potential.",
    expected_output="A structured analysis including each trend's name, market size, key players, and growth forecast.",
    agent=researcher,
    async_execution=False,      # False = this task runs synchronously (waits for previous tasks if any)
    output_file="analysis.md",  # save the output to a file
    depends_on=[research_task]  # (Optional) task dependency: run after research_task
)

Belangrijke kenmerken van een Taak:

  • beschrijving: Instructies voor de taak (wat de agent moet doen).
  • verwachte_output: Een beschrijving van hoe de output eruit zou moeten zien (dit zal de agent ook helpen om de output te formatteren en structureren).
  • agent: Welke agent te gebruiken voor deze taak (die we eerder hebben gedefinieerd).
  • async_execution: Als dit True is, kan de taak parallel met andere taken worden uitgevoerd (handig wanneer taken onafhankelijk zijn). Standaard is dit False voor opeenvolgende uitvoering.
  • output_file: Indien opgegeven, zal CrewAI de output van de agent naar dit bestand op de schijf schrijven.
  • depends_on: Een lijst van andere taken die voltooid moeten zijn voordat deze taak kan beginnen. Hiermee kun je afhankelijkheden maken en dus een correcte uitvoeringsvolgorde garanderen (indien nodig).

Tools: Mogelijkheden van de agent

Tools zijn hoe je agenten extra mogelijkheden biedt. Een tool is in feite een functie of een API-integratie die een agent kan aanroepen als onderdeel van zijn redeneervermogen. Bijvoorbeeld, een webzoektool zou een agent in staat stellen om op het internet te zoeken, een databasetool zou een agent in staat stellen om gegevens op te halen, enzovoort.

CrewAI wordt geleverd met enkele ingebouwde tools en stelt je in staat om je eigen aangepaste tools te definiëren. Het koppelen van tools aan een agent betekent in feite dat de agent kan beslissen om die tools te gebruiken wanneer hij dat nodig acht om zijn doel te bereiken.

Hier is een voorbeeld van het gebruik van een van de ingebouwde tools van CrewAI, een webzoektool, evenals de bestand I/O-tools:

from crewai_tools import SerperDevTool, FileReadTool, FileWriteTool

# Initialize some tools
web_search = SerperDevTool()   # web search via Serper (Google)
file_reader = FileReadTool()   # read from files
file_writer = FileWriteTool()  # write to files

# Give our researcher agent the ability to use these tools
researcher.tools = [web_search, file_reader, file_writer]

Een aangepaste tool is simpelweg een Python-functie (of klasse) die is voorzien van @tool van CrewAI en beschikbaar is gesteld aan agenten:

from crewai.tools import tool
import json

@tool("Database Query")
def query_database(sql: str) -> str:
    """Execute an SQL query against the company database."""
    # Simple validation example:
    if "DROP" in sql.upper():
        return "Error: Destructive queries are not allowed."
    # (Pretend we run the query and get results)
    results = execute_sql(sql)
    return json.dumps(results)

In dit voorbeeld hebben we een tool gemaakt genaamd „Database Query.” De docstring en functienaam geven context zodat de agent de functie van de tool kan begrijpen. We hebben een veiligheidscontrole toegevoegd voor mogelijk schadelijke SQL-commando's. De agent kan query_database("SELECT * FROM Customers") aanroepen met deze tool tijdens het uitvoeren.

CrewAI ondersteunt verschillende soorten tools en interacties:

  • Ingebouwde tools: Er zijn ingebouwde tools voor verschillende soorten webzoekopdrachten, het lezen/schrijven van bestanden, het doen van HTTP-verzoeken, enz. Deze zijn eenvoudig, gewoon plug-ins die je kunt gebruiken.
  • Aangepaste tools: Je kunt natuurlijk de mogelijkheden uitbreiden met tools die door jou zijn geschreven. Dit kan zo eenvoudig zijn als het bovenstaande voorbeeld, of je kunt een complexer gedrag opbouwen door de CrewAI BaseTool te subclassen.
  • Delegatie: een CrewAI-agent kan een taak delegeren aan een andere agent. Het kan besluiten dat het de hulp van een andere gespecialiseerde agent nodig heeft en de creatie van een subtaak voor die agent activeren (CrewAI orkestreert op de achtergrond).

Crew: Orkestratiemotor

De bemanning coördineert agenten met taken en beheert de uitvoeringsstroom. Bij het instantiëren van een Crew-object moet u de crew voorzien van de lijst met agenten, de lijst met taken en de configuratie van hoe u wilt dat het proces verloopt. Bijvoorbeeld:

from crewai import Crew, Process

crew = Crew(
    agents=[researcher, writer, manager],
    tasks=[research_task, writing_task, review_task],
    process=Process.HIERARCHICAL,  # The manager agent will delegate tasks to the others
    manager_agent=manager,        # Specify which agent is the manager (for hierarchical process)
    memory=True,                  # Enable shared memory among agents (they can see each other's outputs)
    verbose=True                  # Enable detailed logging for debugging
)

result = crew.kickoff(inputs={"topic": "AI Safety"})

In dit voorbeeld initialiseren we een team met 3 agenten en 3 taken. We kozen ook voor een hiërarchisch proces, waarbij een Manager-agent verantwoordelijk is voor de workflow en taken toewijst aan werkagenten. Er wordt ook een invoer gegeven (onderwerp: “AI Veiligheid”), die kan worden gebruikt om de tijdelijke aanduiding in taakbeschrijvingen of de doelen van agenten in te vullen.

Proces types: CrewAI biedt meerdere uitvoeringsstrategieën via de Proces-instelling:

  • Sequentieel: Agenten worden één voor één uitgevoerd in de opgegeven volgorde (eenvoudige lineaire workflow).
  • Hiërarchisch: een manager (of coördinator) is verantwoordelijk voor het proces. Ze kunnen taken dynamisch toewijzen of delegeren aan andere agenten en de uitkomst monitoren (ideaal voor complexe workflows waarbij een 'baas'-agent subtaken beheert).
  • Aangepast: U kunt uw eigen orkestratielogica specificeren als u speciale vereisten heeft (voor geavanceerde scenario’s buiten de ingebouwde processen).

Onder de motorkap zal crew.kickoff() de workflow sturen op basis van het type proces:

  • In de sequentiële modus zal CrewAI gewoon de lijst met taken doorlopen.
  • In hiërarchische modus kan de manager-agent de volgorde bepalen of dynamisch taken aanmaken.
  • Als memory=True is, hebben agenten toegang tot een gedeelde geheugenruimte waarin ze de resultaten van andere agenten kunnen gebruiken of de context kunnen behouden.

Nu we de basis van de componenten van CrewAI hebben besproken, laten we een voorbeeld bekijken van een multi-agent workflow die je zou kunnen opzetten.

Bouw een echt workflow (Begeleid project)

Laten we zeggen dat we een geautomatiseerde workflow willen opzetten voor onderzoek en het schrijven van content — bijvoorbeeld "Onderzoek een onderwerp en genereer een samenvattend rapport". We zullen twee agenten configureren: een agent voert het onderzoek uit (de "Onderzoeker") en een andere agent gebruikt de gevonden informatie om een samenvatting te schrijven (de "Schrijver"). Dit zal een eenvoudig voorbeeld zijn van een praktijkgeval dat een sequentiële samenwerking, het gebruik van hulpmiddelen (voor het onderzoek) en het overdragen van resultaten tussen agenten omvat.

Stap 1: Definieer de Agents. We hebben een Onderzoeksagent en een Schrijversagent nodig. In YAML (agents.yaml) of Python zouden we het als volgt specificeren:

# agents.yaml
agents:
  - name: researcher
    role: Researcher
    goal: "Gather relevant information on a given topic"
    backstory: "An expert at finding and analyzing information."
    tools: [WebSearchTool]    # allow web search capability
    allow_delegation: false

  - name: writer
    role: Writer
    goal: "Produce a clear, concise summary of the research findings"
    backstory: "Skilled at summarizing information into reports."
    tools: []                 # no external tools, just relies on LLM
    allow_delegation: false

Let op hoe we de Onderzoeker een WebSearchTool hebben toegewezen – een „dummy”-tool die een agent is met de mogelijkheid om webzoekopdrachten uit te voeren (er zijn tools zoals SerperApiTool in CrewAI die daadwerkelijk Google-zoekopdrachten doen via een API – we zouden daar een API-sleutel voor kunnen krijgen en de tool naar behoefte configureren). De Schrijver heeft geen tool nodig; deze gebruikt het onderliggende LLM om tekst te genereren. Beide hebben allow_delegation: false voor het gemak (we gaan geen taken opnieuw toewijzen aan andere agenten in deze stroom). We zouden ook memory: true voor elke agent kunnen specificeren (of gewoon memory: true op het niveau van de crew als we willen dat alle agenten dat gedrag hebben – de crewconfiguratie zal dat naar de agenten doorvoeren) als we willen dat ze informatie onthouden.

Stap 2: Definieer de Taken en het Proces. We willen dat de Onderzoeker eerst draait, en daarna de Schrijver. Dit is een sequentieel proces: Taak 1 (onderzoek) -> Taak 2 (schrijven). In CrewAI kunnen we taken definiëren in een YAML (tasks.yaml) zoals:

# tasks.yaml
tasks:
  - id: do_research
    description: "Research the topic: {{topic}}"
    expected_output: "Key points and relevant facts about {{topic}}."
    agent: researcher

  - id: write_report
    description: |
      "Write a summary report on '{{topic}}' using the research findings."
    expected_output: "A well-structured summary of the topic."
    agent: writer
    context: [do_research]  # use output of research task as context
process: sequential

Een paar dingen om in gedachten te houden: Je kunt plaatsaanduidingen in de beschrijving hebben (bijv. {{topic}}) die ingevuld worden wanneer we de crew uitvoeren met parameters. We hebben aangegeven dat de write_report-taak context: [do_research] heeft, wat de Writer-agent automatisch de output van de Researcher als input/context zal geven. Dit is super belangrijk — dit is hoe data/context tussen agents stroomt. We hebben een process: sequential gedefinieerd om de uitvoeringsvolgorde expliciet te maken. De expected_output-velden zijn bedoeld om de agents te begeleiden (en ook om validaties te definiëren).

Stap 3: Schrijf de Orkestratiecode (crew.py/main.py). Met de YAML-config, als we crewai run uitvoeren, zal CrewAI de orkestratie voor ons uitvoeren. Laten we eens kijken hoe dit eruitziet in Python, zodat we de interne werking beter kunnen begrijpen:

# crew.py (conceptual example)
from crewai import Crew, Task, Process

# Import agents and tools definitions (or define inline)
from crewai import Agent
from crewai_tools import WebSearchTool

# Initialize tools
search_tool = WebSearchTool()  # assume configured with API key via .env

# Create Agent instances
researcher = Agent(role="Researcher", goal="Gather relevant info on a topic",
                   tools=[search_tool], allow_delegation=False)
writer = Agent(role="Writer", goal="Summarize research into a report",
               tools=[], allow_delegation=False)

# Define Tasks
research_task = Task(
    description="Research the topic: {topic}",
    agent=researcher,
    expected_output="Key facts about {topic}",
)
write_task = Task(
    description="Write a summary report on '{topic}' using the research findings.",
    agent=writer,
    context=[research_task],  # link output of research_task
    expected_output="Summary report for {topic}"
)

# Create a Crew with sequential process
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential,  # sequential execution
    memory=True  # enable memory if we want agents to retain info
)

Om deze crew nu uit te voeren, zouden we crew.kickoff(topic="Klimaatveranderingseffecten") aanroepen (bijvoorbeeld door de parameter topic te geven die onze taakomschrijvingen verwachten). CrewAI zal dan:

  1. Start de onderzoekstaak: De Onderzoeker-agent krijgt de opdracht "Onderzoek het onderwerp: Invloeden van klimaatverandering." De Onderzoeker-agent beschikt over de WebSearchTool-capaciteit, wat betekent dat het LLM van de agent kan besluiten om de tool te gebruiken (indien gewenst). De agent kan bijvoorbeeld zoeken naar "Belangrijke feiten over de invloeden van klimaatverandering" en enkele resultaten ophalen. De output van de toolaanroep (bijvoorbeeld een stukje informatie) wordt teruggestuurd naar de agent, dat het LLM van de agent vervolgens gebruikt als antwoord. De agent geeft iets uit: in dit geval wellicht een lijst van belangrijke punten over de invloeden van klimaatverandering. CrewAI slaat deze output op (en indexeert deze ook in het geheugen, indien indexeren is ingeschakeld).
  2. Ga door naar write_task: De Writer-agent ontvangt de opdracht “Schrijf een samenvattend rapport over ‘Gevolgen van klimaatverandering’ op basis van de onderzoeksresultaten.” De context die CrewAI automatisch biedt, is de output van research_task. De Writer-agent krijgt een lijst met kernpunten van de Researcher. Het LLM van de Writer stelt een samenvattend rapport op op basis van deze kernpunten.
  3. Voltooien: CrewAI geeft vervolgens de uiteindelijke output terug (het rapport van de schrijver), dat kan worden afgedrukt naar de console of opgeslagen, afhankelijk van hoe main.py is opgezet. Omdat we expected_output voor elke taak hebben opgegeven, kan CrewAI ook controleren of de output globaal aan die verwachting voldoet (dit is geen strikte validatie, maar slechts een richtlijn).

Stap 4: Voer de workflow uit en test deze. We zouden crewai run --param topic=“Impact van klimaatverandering” aanroepen (als we de CLI met YAML gebruiken) of onze crew.kickoff(topic=“Impact van klimaatverandering”) in een Python-script oproepen. Houd de uitvoer in de console in de gaten:

  • Je zou het denkproces van de Onderzoeker-agent moeten kunnen zien (als verbose=True staat voor crew of agents) – het kan iets afdrukken zoals “Onderzoeker: Zoeken naar ‘Belangrijke feiten over de gevolgen van klimaatverandering’… ”, dan “Onderzoeker: Gegevens gevonden over stijgende zeespiegels, extreem weer, enz. ”, en “Onderzoeker: Onderzoekstaak voltooid. ”
  • Dan kan de output van de Schrijver-agent worden weergegeven terwijl het de samenvatting opstelt.
  • Uiteindelijk wordt de samenvattende rapporttekst weergegeven als het resultaat.

Productietips voor het opbouwen van workflows:

  • Wees specifiek in taakbeschrijvingen: Gebruik geen vage instructies. Bijvoorbeeld, in de prompt voor de schrijver voegden we "met gebruik van de onderzoeksresultaten" toe om te verduidelijken wat er samengevat moest worden. Als we gewoon "schrijf een samenvatting" hadden geschreven, had het mogelijk inhoud verzonnen of belangrijke punten overgeslagen.
  • Gebruik expected_output om antwoorden vorm te geven. We hebben een verwacht formaat geleverd (“Belangrijke punten”-lijst, gevolgd door een “goed gestructureerde samenvatting”). Je kunt dit gebruiken als een soort zachte specificatie of beperking. Als de feitelijke output van de agent hier niet aan voldoet, moet je mogelijk de prompt aanpassen of de output in je code verwerken.
  • Test elke agent afzonderlijk. Het kan nuttig zijn om een agent geïsoleerd uit te proberen met een prompt om een gevoel te krijgen van zijn gedrag. Test bijvoorbeeld de prompt van de Researcher afzonderlijk om te zien of de WebSearchTool werkt en nuttige informatie retourneert. Zodra dit is gecontroleerd, integreer je het in je team.
  • Gebruik YAML voor snelle iteraties. De YAML-configuratiebestanden van CrewAI stellen je in staat om rollen, prompts en andere instellingen te bewerken zonder de onderliggende code aan te passen. Je kunt crewai validate uitvoeren (als het geïnstalleerd is) om te controleren of je YAML correct is opgemaakt. Als je complexe logica nodig hebt (lussen, conditionals), kun je in plaats daarvan Python-code gebruiken (via CrewAI’s SDK) om extra logica aan je crew toe te voegen (bijvoorbeeld door if-verklaringen te gebruiken om taken conditioneel toe te voegen), maar veel workflows kunnen declaratief worden gespecificeerd.

Het voorbeeld uitbreiden: Je zou deze workflow eenvoudig kunnen uitbreiden door een derde agent toe te voegen (bijv. een “Editor” agent die het rapport van de Schrijver controleert op kwaliteit of stijl). Je kunt ook een “FactChecker” agent toevoegen die feiten verifieert via een tweede zoekopdracht op het web. Je zou een extra taak toevoegen, de nodige contextkoppelingen creëren en eventueel de Editor-agent toestaan om herzieningen aan te vragen (delegatie) indien nodig.

Hulpmiddelen & Integraties

CrewAI wordt geleverd met een grote bibliotheek aan ingebouwde tools waarmee agenten kunnen communiceren met bestanden, het web, databases, vectoropslag en externe services. Hieronder staat een tabel die kort de belangrijkste categorieën tools beschrijft, voorbeeldtools voor elk ervan, en de algemene situaties waarin je ze zou gebruiken.

CrewAI bevat een uitgebreide ingebouwde gereedschapsbibliotheek die agenten helpt bij het werken met bestanden, het web, databases, vectoropslag en externe diensten. De onderstaande tabel geeft een overzicht van de belangrijkste gereedschapscategorieën, voorbeeldtools en typische gebruikssituaties.

Hulpmiddel (referentielink)Beschrijving
WebsiteScraperExtraheert inhoud van websites door HTML-pagina's op te halen en te parseren.
SerperDevToolVoert Google-zoekopdrachten uit via de Serper API voor realtime webresultaten.
BestandslezerLeest inhoud van lokale bestanden van verschillende typen.
DoekgereedschapMaakt Retrieval-Augmented Generation mogelijk door externe documenten te raadplegen.
CodeInterpreterToolVoert Python-codefragmenten veilig uit binnen de agentomgeving.
DALLETool (DallETool)Genereert afbeeldingen op basis van tekstbeschrijvingen met het DALL-E-model van OpenAI.
PGZoekToolVraagt PostgreSQL-databases op voor het ophalen van gegevens (ondersteuning voor semantisch/RAG-stijl zoeken).

Integraties en Geavanceerde Hulpmiddelen: CrewAI integreert ook met het Model Context Protocol (MCP), een volledig ecosysteem van door de gemeenschap gebouwde hulpmiddelen die toegankelijk zijn via een gemeenschappelijke interface. Het inschakelen van MCP-integratie voor je agent betekent dat deze letterlijk toegang kan hebben tot duizenden hulpmiddelen die draaien op MCP-servers (dingen zoals complexe databewerkingsdiensten, gespecialiseerde API's, enz.). Dit vereist het installeren van de crewai-tools[mcp] extra en (optioneel) het draaien van een MCP-server of het verbinden met een bestaande server.

Betrouwbaarheidsmodellen voor Multi-Agent Workflows

In productie wilt u rekening houden met verschillende vormen van falen. Agenten die in oneindige lussen terechtkomen, gereedschappen die onterecht worden geactiveerd, kosten die uit de hand lopen, enzovoort. CrewAI biedt patronen en ingebouwde tools om de betrouwbaarheid te verbeteren. Hier zijn enkele belangrijke patronen die u moet kennen:

BetrouwbaarheidsmodelWat het voorkomt (met korte uitleg)Hoe te solliciteren bij CrewAI (met een korte uitleg)
Beveiligde toolresultatenHallucinaties na een correct resultaat van een hulpmiddel — het LLM „herschrijft” en introduceert fouten, zelfs wanneer het hulpmiddel de waarheid teruggeeft.Voor gezaghebbende hulpmiddelen (DB-query, rekenmachine, opvraging), configureer de workflow zodat de uitvoer van het hulpmiddel het definitieve antwoord wordt (of woordelijk in het antwoord wordt overgenomen). Schrijf ook taken die expliciet het gebruik van hulpmiddelen voor feiten vereisen.
IteratielimietenOneindige lussen en tokenverbranding — agenten blijven nadenken, opnieuw proberen of herplannen zonder tot een oplossing te komen.Stel de agent max_iter in om denk-/hulpmiddelcycli te beperken. Houd dit laag voor eenvoudige taken; verhoog het alleen voor complexe taken met meerdere stappen. Zie frequente “max_iter bereikt”-gebeurtenissen als een signaal dat de prompt/taakontwerp moet worden herzien.
UitvoeringstijdlimietenHung runs — trage webscraping, netwerkstops of lange tooloproepen blokkeren het hele team.Stel max_execution_time in per agent/opdracht. Binnen aangepaste tools, handhaaf time-outs (HTTP-time-outs, Selenium-paginalaadtijden). Geef de voorkeur aan "time-out + opnieuw proberen" boven eindeloos wachten.
Opnieuw proberen + wachttijdTransiente fouten — snelheidslimieten, onbetrouwbare API's, intermittente verbinding.Gebruik max_retry_limit en implementeer exponentiële back-off in de toolcode (bijv. wacht 1s → 2s → 4s). Na een beperkt aantal pogingen, retourneer een gestructureerde foutpayload zodat downstream-taken deze deterministisch kunnen verwerken.
Beperkte delegatieDelegatie pingpong — agenten blijven werk heen en weer schuiven en maken het nooit af.Schakel allow_delegation alleen in voor een manager/coördinator; Zorg ervoor dat werknemersagenten niet delegeren. Voeg expliciete promptregels toe, zoals 'delegeer alleen wanneer toegang tot gegevens/tools ontbreekt', en zorg ervoor dat werkagenten concrete resultaten retourneren, en geen verzoeken.
Deterministische inputsOnstabiele uitvoer — kleine variaties in de prompt veroorzaken verschillende formaten/resultaten, waardoor automatisering stroomafwaarts wordt verstoord.Gebruik strikte taak specificaties (expected_output), vaste schema's (JSON) en gestructureerde prompts. Voor extractie-/classificatie-agents, verminder de willekeur (lagere temperatuur) en beperk de output tot gedefinieerde velden.
UitvoercontroleStille kwaliteitsfouten — output ziet er “OK” uit maar mist verplichte velden, overtreden beperkingen of bevatten tegenstrijdigheden.Voeg een validator/reviewer-taak toe die het schema, de vereiste secties, citaties en beperkingen controleert. Als de validatie mislukt, voer dan opnieuw uit met gerichte correctieve feedback (wat ontbreekt + het exacte verwachte formaat).
KostenbeheersingUit de hand gelopen uitgaven — multi-agent workflows versterken snel tokens en tool-aanroepen.Gebruik kleinere/goedkopere modellen voor routinematige stappen en reserveer sterkere modellen voor belangrijke redeneringen. Beperk het aantal stappen/tijd, sla herhaalde context op en registreer tokens/kosten per taak om de kostenhotspots te identificeren voor prompt-/tooloptimalisatie.

Observeerbaarheid en Debugging

Deze tabel vat de drie meest praktische observatielaag voor CrewAI-werkstromen samen. Het laat zien hoe je kunt beginnen met eenvoudige consolezichtbaarheid tijdens de ontwikkeling, om vervolgens uit te breiden naar gestructureerde tracing en externe monitoring voor productie. Ten slotte voegt het debughooks en evaluatie toe om de betrouwbaarheid en outputkwaliteit in de loop van de tijd continu te verbeteren.

ObserveerbaarheidsgebiedWat het je geeft (waarom het belangrijk is)Hoe het te gebruiken in CrewAI (praktisch, productiegericht)
Basislogboek & uitvoerigheidDirect, leesbare debugging — je kunt de redeneringsstappen van de agent, het gebruik van tools en de beslisflow in real time zien. Het is het beste voor ontwikkeling en snelle triage, maar beperkt voor langetermijnanalyse.Zet verbose=True op de Crew of specifieke Agents om stap-voor-stap logs af te drukken (DENKEN → ACTIE → OBSERVATIE). Gebruik dit lokaal om problemen te reproduceren. In productie, houd de uitvoer beperkt en genereer gestructureerde logs (JSON) waar mogelijk, zodat je ze kunt verzamelen.
Tracing + externe observeerbaarheid + productie monitoringGestructureerd bewijspad — stapsgewijze uitvoering vastgelegd met tijdstempels, invoer/uitvoer, tool-aanroepen en uitvoerings-ID's. Maakt post-mortems, prestatieoptimalisatie en kostbeheersing (tokenpieken, trage tools) mogelijk.Schakel CrewAI-tracing in (config/vlag/omgeving volgens de documentatie) zodat elke uitvoering traceergegevens genereert met een unieke identifier. Verzend traces/metingen naar een observatie-backend (bijv. Langfuse voor LLM-traces, Datadog voor logs/metingen/alerts, Arize/Phoenix voor modelmonitoring, LangSmith/LangTrace voor unified tracing, Neatlogs voor deelbare uitvoeringsherhalingen). Voeg alerts toe bij fouten/latentie, houd tokens en kosten per taak bij en monitor de doorvoer voor schaalbeslissingen.
Foutopsporingshooks + evaluatieworkflowsActieve diagnose en kwaliteitscontrole — aangepaste hooks brengen patronen bloot (delegeerlussen, herhaalde pogingen, toolfouten), terwijl evaluatie stille achteruitgang in de outputkwaliteit voorkomt.Gebruik step_callback om kritieke gebeurtenissen na elke stap te annoteren/op te slaan (delegatie geactiveerd, toolfout, aantal pogingen, schema-overtredingen). Voeg een geautomatiseerde evaluatiefase toe (regelcontroles + optionele LLM-beoordeling) op de uiteindelijke output en sla de scores op. Gebruik trends om prompts/tools te verfijnen en om releases te reguleren (AgentOps-stijl continue verbetering).

CrewAI vs LangGraph vs AutoGen

Verschillende agents kunnen verschillende filosofieën, architecturen of functies hebben die bij jouw gebruikssituaties passen. De drie meest populaire frameworks zijn CrewAI, LangGraph en AutoGen. Laten we de drie kort vergelijken om de belangrijkste overeenkomsten en verschillen aan te wijzen:

AspectCrewAI (Rolverdeelde Teams)LangGraph (Grafiekworkflows)AutoGen (Conversationsagenten)
BenaderingRollenspel-agents in een gestructureerde bemanning; taken en processen combineren autonomie met controle.Gegerichte acyclische grafiek van stappen (vaak via LangChain); expliciet beheer van de status.Multi-agent chatsessies; emergent gedrag zonder vast proces standaard.
GebruiksvriendelijkheidDuidelijk agent-/bemannings-/taakmodel; snel op te starten. Loggen kan lastig zijn zonder de juiste hulpmiddelen.Steilere leercurve; meer sjablooncode en voorafgaand ontwerp van de status.Snel voor het maken van prototypen, maar vereist een zorgvuldig en snel ontwerp om agenten te coördineren.
WerkstroombeheerDubbele modi: autonome teams en deterministische processen; goede balans tussen flexibiliteit en structuur.Sterke controle via grafieken; geweldig voor complexe vertakkingen, minder adaptief tijdens runtime.Beperkte ingebouwde controle; de volgorde ontstaat uit het gesprek, moeilijker af te dwingen.
Status & GeheugenIngebouwde geheugenmodules (kort/lang/entiteit); direct uit de doos robuust.Vaak maakt het gebruik van LangChain-geheugen; de toestand moet vooraf worden gedefinieerd en in de code worden beheerd.Vooral gespreksgeschiedenis, tenzij je extra geheugen implementeert.
Tools & IntegratieMeer dan 100 tools; niet gebonden aan LangChain, eenvoudig om elke API/maatwerktool te integreren; kan nog steeds LangChain-tools gebruiken indien nodig.Sterke koppeling aan LangChain; veel integraties, maar meer complexiteit en extra aanpassingswerk.Tooling via functies en de AutoGen Studio-interface; het gebruik van tools wordt gevormd door een gesprekspartnersparadigma.
PrestatiesMinimale overhead; geoptimaliseerde kern; meldde snellere uitvoering bij sommige taken; sterk voor kleine en complexe workflows.Meer overhead (LangChain + grafiek-runtime); kan trager zijn maar effectief voor gestructureerde processen.Hangt af van het aantal conversatierondes; het kan trager zijn als de agenten veel herhalingen doen.
ProductieklaarGebouwd voor productie: observatiehooks, bedrijfsfuncties, fijnmazige controles, onderhoudbare systemen.Productie mogelijk met zorgvuldige engineering; mogelijk extra lijm nodig vanwege quirks van LangChain.Meer gericht op onderzoek/demo; productie-versteviging (logging, fouten, controles) is grotendeels doe-het-zelf.
Het beste voorRolgebaseerde workflows met bekende stappen maar flexibele uitvoering (bedrijfsautomatisering, analysepipelines, multi-step RAG met toezicht).Statische/voorspelbare workflows die complexe vertakkingen vereisen (bijv. ETL/QA-pijplijnen), vooral als er al geïnvesteerd is in LangChain.Open-ended probleemoplossing via gesprek (brainstormen, critiquelussen, mens-in-de-lus-chat), waarbij de stappen niet vastliggen.

Veelgestelde vragen

1. Wat is CrewAI en hoe verschilt het van traditionele AI-agents?

CrewAI is een raamwerk dat is ontworpen om meerdere AI-agenten te orkestreren die samenwerken met behulp van duidelijk gedefinieerde rollen, doelen en verantwoordelijkheden. In tegenstelling tot traditionele single-agentopstellingen legt CrewAI de nadruk op samenwerking en taakdelegatie, vergelijkbaar met hoe menselijke teams werken. Dit maakt het bijzonder effectief voor complexe, uit meerdere stappen bestaande workflows die planning, uitvoering en validatie vereisen.

2. Hoe werkt rolgebaseerde agentorkestratie in CrewAI?

In CrewAI krijgt elke agent een specifieke rol toegewezen, zoals onderzoeker, schrijver of beoordelaar, samen met een gedefinieerd doel. Taken worden verdeeld op basis van deze rollen, waardoor agenten zich alleen concentreren op wat zij het beste kunnen. Deze gestructureerde aanpak verbetert de efficiëntie, vermindert overbodigheid en levert meer samenhangende resultaten op.

3. Wat zijn de veelvoorkomende toepassingen van CrewAI?

CrewAI wordt veel gebruikt voor het genereren van inhoud, het automatiseren van onderzoek, pijplijnen voor gegevensverwerking en AI-gestuurde productworkflows. Het is vooral handig in scenario's waarin taken achtereenvolgens of samen moeten worden uitgevoerd. Voorbeelden hiervan zijn het bouwen van RAG-systemen, het automatiseren van rapporten en het coördineren van meerdere LLM-gestuurde tools.

4. Heb ik geavanceerde AI- of Python-kennis nodig om aan de slag te gaan met CrewAI?

Een basiskennis van Python en grote taalmodellen is handig, maar niet verplicht. CrewAI is ontworpen om ontwikkelaarsvriendelijk te zijn, met duidelijke abstracties voor agents, taken en workflows. Beginners kunnen beginnen met eenvoudige voorbeelden en geleidelijk overgaan op complexere multi-agent orchestratiepatronen.

5. Kan CrewAI worden geïntegreerd met bestaande tools en frameworks?

Ja, CrewAI kan worden geïntegreerd met populaire LLM-leveranciers, API's en externe tools zoals vectordatabases en workflow-engines. Deze flexibiliteit stelt het in staat om naadloos in bestaande AI-pijplijnen te passen. Hierdoor kunnen teams hun huidige systemen verbeteren zonder alles van nul opnieuw te hoeven schrijven.

Conclusie

CrewAI is het nuttigst wanneer je een 'crew' als een ontworpen workflow behandelt, in plaats van als een chatexperiment. Wijs rollen en taakgrenzen toe, onderbouw belangrijke stappen met tools en leg limieten op voor onbeheerst gedrag, zodat het systeem niet kan ontsporen in lussen, fouten of onverwachte kosten. Instrumenteer vervolgens alles—logs, traces en lichte evaluaties—zodat je snel problemen kunt debuggen en de kwaliteit bij elke release kunt verbeteren. Als je voorspelbare meerstapsautomatisering nodig hebt met duidelijke eigenaarschap en productiecontroles, is CrewAI een sterke standaardkeuze. Als je probleem echter vooral uit complexe vertakkingslogica of open-eind conversatiegerichte samenwerking bestaat, kunnen LangGraph of AutoGen een betere keuze zijn.

Referenties

  • Wat is CrewAI?
  • Begin met CrewAI - Installeer, configureer en bouw je eerste AI-team
  • Overzicht van een agent
  • Meerdere Agenten Systemen Bouwen met CrewAI - Een Uitgebreide Tutorial
  • CrewAI Hulpmiddelen
  • Snel Starten: Samenwerking Inschakelen

Bedankt dat je samen met de Linux-Console.net-community hebt geleerd.