Recherche de site Web

CrewAI : Guide pratique de l'orchestration d'agents basée sur les rôles


Introduction

CrewAI est un framework Python léger et ultra-rapide pour orchestrer des agents IA autonomes qui travaillent ensemble comme un « équipage » pour accomplir une tâche. CrewAI est construit de A à Z, sans abstractions lourdes, et est 100 % indépendant de LangChain ou de toute autre bibliothèque d'agents. CrewAI offre aux développeurs une simplicité de haut niveau et un contrôle de bas niveau. Il est optimisé pour des flux de travail multi-agents prêts pour la production, qui privilégient la fiabilité, l'observabilité et l'efficacité des coûts.

Ce cours intensif vous guide de « bonjour le monde » à un flux de travail multi-agents de niveau production avec CrewAI. Vous serez introduit aux concepts clés, configurerez un projet, coderez un véritable flux de travail, intégrerez des outils puissants et apprendrez les meilleures pratiques pour la fiabilité et la surveillance. À la fin de ce cours, vous saurez décider si CrewAI convient à votre cas d'utilisation et comment il se compare à des frameworks similaires comme LangGraph et AutoGen. Commençons !

Points clés à retenir

  • CrewAI est conçu pour la production, pas pour les démonstrations. CrewAI privilégie la fiabilité, la traçabilité et le contrôle des coûts. Il est léger et fonctionne indépendamment de LangChain, ce qui le rend idéal pour les systèmes multi-agents en conditions réelles.
  • Les agents basés sur les rôles améliorent la clarté et la scalabilité. Les agents se voient attribuer des rôles explicites (Chercheur, Rédacteur, Manager, etc.) au lieu d'un prompt monolithique. Les rôles permettent une décomposition des tâches claire et évolutive ainsi qu'une collaboration efficace entre les agents.
  • Le modèle mental de base est simple et puissant. Le modèle mental de CrewAI repose sur quatre éléments fondamentaux : Agents, Tâches, Outils et Équipe. Cette approche donne lieu à des flux de travail simples et cohérents, faciles à comprendre, à étendre et à déboguer.
  • La flexibilité déclarative et programmatique accélère l'itération. Les flux de travail CrewAI peuvent être déclarés de manière déclarative en YAML pour une itération rapide, puis améliorés avec des API Python programmatiques pour une orchestration avancée, une logique personnalisée et un contrôle plus approfondi lorsque nécessaire.
  • Une solide discipline en ingénierie est essentielle. Les systèmes CrewAI efficaces reposent sur des garde-fous, comprenant des spécifications de tâches claires, une délégation limitée, des limites d'itération, une utilisation appropriée des outils et une observabilité adéquate, afin de prévenir les boucles, les hallucinations et les dépassements de coûts.

Qu'est-ce que CrewAI ?

CrewAI est un cadre multi-agent basé sur les rôles pour Python. Il vous permet de déclarer plusieurs agents alimentés par des LLM avec une expertise et un objectif définis, et de les organiser pour collaborer sur un flux de travail structuré. Les membres d'un équipage travaillent de manière semi-autonome dans leurs domaines de spécialisation, et un processus de coordination séparé (agent manager) peut également être mis en place pour gérer le flux de travail.

Organiser des agents IA en équipe avec des rôles clairement définis permet d'éviter de faire tout faire à un seul agent, comme c'est le cas dans des systèmes plus simples. Par exemple, un agent peut exceller dans la recherche, un autre dans l'écriture, un autre dans la prise de décisions. CrewAI gère la messagerie et l'organisation entre les agents, leur permettant de collaborer sur différentes sous-tâches pour obtenir un résultat final.

Installation

Prérequis : Python 3.10 à 3.13. CrewAI nécessite Python >=3.10 et <3.14. Assurez-vous d'être dans cette plage (vérifiez via python3 --version). Sinon, mettez d'abord votre Python à jour. Notez également que CrewAI utilise l'API OpenAI en arrière-plan, vous devez donc disposer d'une clé API OpenAI (ou d'une clé d'un autre fournisseur de LLM) disponible.

Étape 1 : Installer CrewAI. CrewAI est distribué via PyPI. La bibliothèque principale peut être installée avec pip. Cela installe le package et l’interface en ligne de commande de CrewAI.

pip install crewai

Si vous souhaitez un support complet pour les outils, vous pouvez également installer le package d'outils optionnel. Cela garantit que vous disposez de la bibliothèque d'outils préconçus de CrewAI.

pip install crewai[tools]

Remarque : CrewAI dispose de son propre gestionnaire d'environnement appelé UV, qui prend également en charge les dépendances pour vous. Cela est optionnel, mais recommandé par la documentation de CrewAI.

  • Installer UV (une seule fois) : sur macOS/Linux, exécutez :
curl \-LsSf https://astral.sh/uv/install.sh

Cela installe la commande uv.

  • Ensuite, installez CrewAI via l'outil UV : uv tool install crewai. Cela fait la même chose que pip, mais configure également automatiquement un environnement isolé et un outil en ligne de commande.

Après l'installation, vous pouvez vérifier si tout fonctionne en vérifiant la version. Vous devriez voir une sortie comme crewai v0.x.x confirmant qu'il est installé.

crewai --version

Étape 2 : Créez une structure de projet CrewAI. CrewAI est livré avec une interface en ligne de commande (CLI) pour créer la structure d’un nouveau projet avec l’architecture recommandée. Dans un terminal, exécutez :

crewai create crew my_project_name

Remplacez my_project_name par le nom que vous souhaitez donner à votre projet. Cela générera un dossier my_project_name/ avec un modèle prêt à l'emploi :

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)

Ce squelette vous offre un point de départ structuré. Les fichiers agents.yaml et tasks.yaml sont ceux où vous pouvez spécifier de manière déclarative la configuration de votre équipe (rôles, objectifs, séquence des tâches, etc.), tandis que main.py et crew.py sont des points d'entrée Python au cas où vous préfériez une configuration basée sur le code. Le fichier .env est l'endroit où vous stockerez les clés API (par exemple, OPENAI_API_KEY=…) afin qu'elles ne soient pas codées en dur.

Étape 3 : Installer les dépendances du projet. Dans le répertoire de votre projet, exécutez :

crewai install

Cette commande exécutera le CLI CrewAI pour installer toutes les dépendances dont le projet pourrait avoir besoin (configurer l'environnement, s'assurer que le package crewai-tools est installé, etc.). Si votre projet nécessite l'installation de packages Python supplémentaires, vous pouvez les spécifier en utilisant ‘uv add <package>’ (UV) ou via ‘pip install’ normalement.

Étape 4 : Lancez votre première équipe. Vous êtes maintenant prêt à exécuter l’exemple d’équipe par défaut. Il vous suffit de lancer :

crewai run

Cela exécutera l’équipe définie dans votre structure (par défaut, il peut exécuter un exemple simple de collaboration entre deux agents). Si tout fonctionne, vous devriez voir les agents réfléchir/agir dans la console.

Problèmes courants lors de l'installation*:*

  • Version de Python – Installez sur une version prise en charge (3.10–3.13), car l'installation pourrait échouer sur les versions plus anciennes de Python en raison d'un problème de dépendance.
  • Version du SDK OpenAI – CrewAI peut nécessiter une version minimale du SDK Python OpenAI (c'est-à-dire openai >= 1.13.3 est requis pour CrewAI 0.175.0). Si vous rencontrez des erreurs d'importation liées à OpenAI, assurez-vous de mettre à jour votre package OpenAI.
  • Outils de compilation Windows – Si vous rencontrez une erreur de compilation pour chroma-hnswlib sur Windows, vous devez installer les outils de compilation Visual Studio C++ (CrewAI utilise Chroma pour la mémoire ; la solution est d’avoir les outils de compilation C++ disponibles).
  • UV non trouvé dans le PATH – Si la commande uv ne peut pas être trouvée après l’installation, exécutez uv tool update-shell pour mettre à jour votre PATH.

Modèle Mental CrewAI : Agents, Tâches, Outils et Équipe

Il vaut la peine de jeter un coup d'œil aux quatre principaux éléments constitutifs de CrewAI. Un workflow CrewAI se composait de quatre composants principaux : les Agents, les Tâches, les Outils et l'Équipe elle-même (un orchestrateur qui combine agents et tâches).

Agents : Travailleurs LLM basés sur les rôles

Un agent dans CrewAI est un travailleur propulsé par un LLM, doté d’un rôle désigné, d’un objectif à atteindre et (optionnellement) de certains éléments contextuels. Les agents travaillent de manière autonome, prenant des décisions considérées comme compétentes dans leur domaine d’expertise. Par exemple, vous pourriez avoir un agent avec le rôle d’analyste de recherche dont l’objectif est de mener des recherches, et un autre agent avec le rôle de rédacteur dont l’objectif est de fournir un rapport. Vous créez un agent en spécifiant son rôle, son objectif et d’autres paramètres. Voici un exemple :

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
)

Principales caractéristiques d'un agent :

  • rôle : Le nom ou l’ensemble de compétences de l’agent (cela peut influencer son comportement ; par exemple, « Conseiller financier », « Analyste de base de données SQL »).
  • objectif : Un objectif de haut niveau que l'agent doit atteindre.
  • contexte : Contexte de fond ou persona. Cela peut aider à améliorer la qualité des instructions en fournissant à l’agent un point de vue ou un ton (par exemple, « Vous avez 10 ans d’expérience en cybersécurité… »).
  • outils : Une liste d'outils (fonctions/API) que l'agent peut utiliser pour l'aider dans son travail.
  • llm : Vous pouvez attribuer un LLM spécifique à chaque agent. Par exemple, vous pouvez utiliser un modèle moins coûteux pour des tâches simples basées sur la recherche ou les mots-clés, et un modèle GPT-5 plus puissant pour des tâches plus complexes afin d'aider à optimiser les compromis de performance.
  • mémoire : Si activé, l'agent conservera la mémoire entre les tâches (ce qui lui permet de se souvenir du passé, par exemple des interactions/questions/découvertes précédentes).
  • verbose : Si activé, l'agent affichera des journaux détaillés de son activité (utile pour le débogage/suivi de la prise de décision).

Tâches : Unités de travail spécifiques

Une Tâche dans CrewAI représente une unité de travail à accomplir par un agent, incluant des instructions et un résultat attendu. Vous pouvez la considérer comme l'attribution d'une tâche à l'un de vos agents. Voici comment définir une Tâche dans le 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
)

Principales caractéristiques d'une tâche :

  • description : Instructions pour la tâche (ce que l'agent doit faire).
  • expected_output : Une description de l'apparence que devrait avoir la sortie (cela aidera également l'agent à formater et structurer sa sortie).
  • agent : Quel agent utiliser pour cette tâche (que nous avons définie précédemment).
  • async_execution : Si True, la tâche peut s’exécuter en parallèle avec d’autres tâches (utile lorsque les tâches sont indépendantes). Par défaut, c’est False pour une exécution séquentielle.
  • output_file : Si fourni, CrewAI écrira la sortie de l'agent dans ce fichier sur le disque.
  • depends_on : Une liste d'autres tâches qui doivent être terminées avant que cette tâche puisse commencer. Cela vous permet de créer des dépendances et, par conséquent, de garantir un ordre d'exécution correct (si nécessaire).

Outils : Capacités de l'agent

Les outils sont la manière dont vous fournissez aux agents des capacités supplémentaires. Un outil est essentiellement une fonction ou une intégration API que l'agent peut appeler dans le cadre de son processus de raisonnement. Par exemple, un outil de recherche sur le web permettrait à un agent d'interroger Internet, un outil de base de données permettrait à un agent de récupérer des données, et ainsi de suite.

CrewAI est livré avec quelques outils intégrés et vous permet de définir vos propres outils personnalisés. Attacher des outils à un agent signifie essentiellement que l'agent peut choisir d'utiliser ces outils lorsqu'il le juge nécessaire pour atteindre son objectif.

Voici un exemple d'utilisation de l'un des outils intégrés de CrewAI, un outil de recherche sur le web, ainsi que des outils d'entrée/sortie de fichiers :

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]

Un outil personnalisé est simplement une fonction Python (ou une classe) décorée avec @tool de CrewAI, mise à disposition des agents :

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)

Dans cet exemple, nous avons créé un outil nommé « Database Query ». La docstring et le nom de la fonction fournissent un contexte permettant à l'agent de comprendre la fonction de l'outil. Nous avons inclus une vérification de sécurité pour les commandes SQL potentiellement dangereuses. L'agent pourrait invoquer query_database("SELECT * FROM Customers") en utilisant cet outil à l'exécution.

CrewAI prend en charge différents types d'outils et d'interactions :

  • Outils intégrés : Il existe des outils intégrés pour différents types de recherche sur le web, la lecture/écriture de fichiers, l'exécution de requêtes HTTP, etc. Ils sont simples, il suffit de les utiliser comme des plug-ins prêts à l'emploi.
  • Outils personnalisés : Vous pouvez, bien sûr, étendre les fonctionnalités avec des outils que vous avez créés. Cela peut être aussi simple que l'exemple ci-dessus, ou vous pouvez développer des comportements plus complexes en sous-classant BaseTool de CrewAI.
  • Délégation : Un agent CrewAI peut déléguer une tâche à un autre agent. Il peut décider qu'il a besoin de l'aide d'un autre agent spécialisé et déclencher la création d'une sous-tâche pour cet agent (CrewAI orchestre en arrière-plan).

Équipage : Moteur d'orchestration

L'équipage coordonne les agents avec les tâches et contrôle le flux d'exécution. Lors de l'instanciation d'un objet Crew, vous devez fournir à l'équipage la liste des agents, la liste des tâches et la configuration de la manière dont vous souhaitez que le processus s'exécute. Par exemple :

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"})

Dans cet exemple, nous initialisons une équipe avec 3 agents et 3 tâches. Nous avons également opté pour un processus hiérarchique, où un agent Manager est responsable du flux de travail et attribue des tâches aux agents travailleurs. Une entrée (sujet : « Sécurité de l’IA ») est également fournie, qui peut être utilisée pour remplir le champ réservé dans les descriptions de tâches ou les objectifs des agents.

Types de processus : CrewAI propose plusieurs stratégies d'exécution via le paramètre Processus :

  • Séquentiel : Les agents sont exécutés les uns après les autres dans l'ordre spécifié (workflow linéaire simple).
  • Hiérarchique : Un agent manager (ou coordinateur) est responsable du processus. Il peut attribuer ou déléguer dynamiquement des tâches à d'autres agents et suivre les résultats (idéal pour les flux de travail complexes dans lesquels un agent « chef » contrôle les sous-tâches).
  • Personnalisé : Vous pouvez spécifier votre propre logique d'orchestration si vous avez des besoins particuliers (pour des scénarios avancés en dehors des processus intégrés).

Sous le capot, crew.kickoff() dirigera le flux de travail en fonction du type de processus :

  • En mode séquentiel, CrewAI parcourra simplement la liste des tâches.
  • En mode hiérarchique, l'agent gestionnaire peut déterminer l'ordre ou créer des tâches de manière dynamique.
  • Si mémoire=True, les agents auront accès à un espace mémoire partagé dans lequel ils pourront soit exploiter les résultats des autres agents, soit conserver le contexte.

Maintenant que nous avons couvert les bases des composants de CrewAI, voyons un exemple de flux de travail multi-agents que vous pourriez créer.

Créer un vrai flux de travail (Projet guidé)

Disons que nous voulons créer un flux de travail automatisé pour la recherche et la rédaction de contenu — peut-être « Rechercher un sujet et générer un rapport de synthèse ». Nous allons configurer deux agents : un agent effectue la recherche (le « Chercheur ») et un autre utilise les informations découvertes pour rédiger un résumé (le « Rédacteur »). Ce sera un exemple simple d’un cas d’usage réel qui implique une collaboration séquentielle, l’utilisation d’outils (pour la recherche) et le transfert des résultats entre les agents.

Étape 1 : Définir les Agents. Nous avons besoin d'un Agent Chercheur et d'un Agent Rédacteur. En YAML (agents.yaml) ou en Python, nous spécifierions :

# 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

Remarquez comment nous avons attribué au Chercheur un WebSearchTool – un outil "factice" qui est un agent capable d'effectuer des recherches sur le web (il existe des outils comme SerperApiTool dans CrewAI qui effectuent réellement des recherches Google via une API – nous pourrions obtenir une clé API pour cela et configurer l'outil selon les besoins). L'Écrivain n'a pas besoin d'outil ; il utilise le LLM sous-jacent pour générer du texte. Les deux ont allow_delegation: false pour plus de simplicité (nous n'allons pas réaffecter des tâches à d'autres agents dans ce flux). Nous pourrions également spécifier memory: true pour chaque agent (ou simplement memory: true au niveau de l'équipe si nous voulons que tous les agents aient ce comportement – la configuration de l'équipe le propagera aux agents) si nous voulons qu'ils conservent des informations.

Étape 2 : Définir les tâches et le processus. Nous voulons que le Chercheur fonctionne en premier, puis l'Écrivain. Il s'agit d'un processus séquentiel : Tâche 1 (recherche) -> Tâche 2 (rédaction). Dans CrewAI, nous pouvons définir les tâches dans un fichier YAML (tasks.yaml) comme :

# 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

Quelques points à garder à l’esprit : vous pouvez avoir des espaces réservés dans la description (par ex., {{topic}}) à remplir lorsque nous exécutons l’équipe avec des paramètres. Nous avons annoté que la tâche write_report a context: [do_research], ce qui fournira automatiquement à l’agent Writer le résultat de l’agent Researcher en tant qu’entrée/contexte. C’est très important — c’est ainsi que les données/le contexte circulent entre les agents. Nous avons défini un process: sequential pour rendre explicite l’ordre d’exécution. Les champs expected_output servent à guider les agents (et aussi à définir les validations).

Étape 3 : Écrire le code d'orchestration (crew.py/main.py). Avec la configuration YAML, si nous exécutons crewai run, CrewAI effectuera l'orchestration pour nous. Voyons à quoi cela ressemble en Python pour mieux comprendre les mécanismes internes :

# 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
)

Maintenant, pour exécuter cette équipe, nous appellerions crew.kickoff(topic="Impacts du changement climatique") (par exemple, en fournissant le paramètre topic que nos descriptions de tâches attendent). CrewAI fera alors :

  1. Commencer la tâche de recherche : L'agent chercheur reçoit l'invite « Rechercher le sujet : Impacts du changement climatique. ». L'agent chercheur dispose de la capacité WebSearchTool, ce qui signifie que le LLM de l'agent peut décider d'utiliser l'outil (si désiré). L'agent pourrait, par exemple, rechercher « faits clés sur les impacts du changement climatique » et récupérer certains résultats. Le résultat de l'appel à l'outil (disons un extrait d'information) est renvoyé à l'agent, que le LLM de l'agent utilise ensuite comme réponse. L'agent produit quelque chose : dans ce cas, peut-être une liste des points clés sur les impacts du changement climatique. CrewAI stocke cette sortie (et l'indexe également dans la mémoire, si l'indexation est activée).
  2. Procéder à write_task : L'agent Écrivain reçoit l'invite « Rédiger un rapport de synthèse sur ‘Les impacts du changement climatique’ en utilisant les résultats de la recherche. » Le contexte que CrewAI fournit automatiquement est le résultat de research_task. L'agent Écrivain se voit présenter la liste des points clés élaborés par le Chercheur. Le LLM de l'Écrivain rédige un rapport de synthèse basé sur ces points clés.
  3. Terminer : CrewAI renvoie ensuite le résultat final (le rapport de l'écrivain), qui peut être affiché sur la console ou enregistré en fonction de la structure de main.py. Comme nous avons fourni expected_output pour chaque tâche, CrewAI peut également vérifier que les résultats correspondent approximativement à cette attente (ce n'est pas une validation stricte, juste un guide).

Étape 4 : Exécuter et tester le flux de travail. Nous lancerions crewai run --param topic=“Impacts du changement climatique” (si vous utilisez l'interface en ligne de commande avec YAML) ou appellerions notre crew.kickoff(topic=“Impacts du changement climatique”) dans un script Python. Surveillez la sortie de la console :

  • Vous devriez voir le processus de réflexion de l’agent Chercheur (si verbose=True pour l’équipage ou les agents) – il pourrait afficher quelque chose comme “Chercheur : Recherche des « faits clés sur les impacts du changement climatique »… ”, puis “Chercheur : Données trouvées sur l’élévation du niveau de la mer, les phénomènes météorologiques extrêmes, etc. ”, et “Chercheur : Tâche de recherche terminée. ”
  • Ensuite, la sortie de l'agent rédacteur pourrait être affichée pendant qu'il rédige le résumé.
  • Enfin, le texte du rapport résumé est produit comme résultat.

Conseils de production pour créer des workflows :

  • Soyez précis dans la description des tâches : N’utilisez pas d’instructions ambiguës. Par exemple, dans l’invite pour l’écrivain, nous avons ajouté « en utilisant les résultats de la recherche » pour préciser ce qu’il fallait résumer. Si nous avions simplement écrit « rédigez un résumé », il aurait pu inventer du contenu ou passer à côté de points importants.
  • Utilisez expected_output pour structurer vos réponses. Nous avons fourni un format attendu (liste de « Points clés », puis « résumé bien structuré »). Vous pouvez l'utiliser comme une forme de spécification souple ou de contrainte. Si la sortie réelle de l'agent ne correspond pas, vous devrez peut-être reformuler l'invite ou traiter la sortie dans votre code.
  • Testez chaque agent individuellement. Il peut être utile d'essayer de faire fonctionner un agent seul avec un prompt afin de se faire une idée de son comportement. Par exemple, testez le prompt du Chercheur de manière isolée pour voir si l'OutilRechercheWeb fonctionne et renvoie des informations utiles. Une fois vérifié, intégrez-le dans votre équipe.
  • Exploitez YAML pour des itérations rapides. Les fichiers de configuration YAML de CrewAI vous permettent de modifier les rôles, les invites et d'autres paramètres sans changer le code sous-jacent. Vous pouvez exécuter crewai validate (si installé) pour vérifier si votre YAML est correctement formaté. Si vous avez besoin d’une logique complexe (boucles, conditions), vous pouvez plutôt utiliser du code Python (via le SDK de CrewAI) pour ajouter une logique supplémentaire à votre équipe (par exemple, en utilisant des instructions if pour ajouter des tâches de manière conditionnelle), mais de nombreux flux de travail peuvent être définis de manière déclarative.

Élargir l'exemple : Vous pourriez facilement étendre ce flux de travail en ajoutant un troisième agent (par exemple, un agent « Éditeur » qui vérifie le rapport du Rédacteur pour la qualité ou la conformité au style). Vous pouvez également ajouter un agent « Vérificateur de faits » qui vérifie les faits en effectuant une seconde recherche sur le web. Vous ajouteriez une tâche supplémentaire, créeriez les liens contextuels nécessaires, et permettriez peut-être à l'agent Éditeur de demander des révisions (délégation) si nécessaire.

Outils & intégrations

CrewAI est livré avec une grande bibliothèque d'outils intégrés qui permettent aux agents d'interagir avec des fichiers, le web, des bases de données, des magasins de vecteurs et des services externes. Ci-dessous se trouve un tableau qui décrit brièvement les principales catégories d'outils, des exemples d'outils pour chacune et les cas généraux où vous les utiliseriez.

CrewAI comprend une large bibliothèque d'outils intégrée qui aide les agents à interagir avec les fichiers, le web, les bases de données, les magasins vectoriels et les services externes. Le tableau ci-dessous résume les principales catégories d'outils, des exemples d'outils et les cas d'utilisation typiques.

Outil (lien de référence)Description
OutilDeGrattageDeSiteWebExtrait le contenu des sites web en récupérant et en analysant les pages HTML.
SerperDevToolEffectue des recherches Google via l'API Serper pour obtenir des résultats web en temps réel.
OutilDeLectureDeFichierLit le contenu de fichiers locaux de différents types.
Outil à chiffonsPermet la génération augmentée par récupération en interrogeant des documents externes.
Outil d'interprétation de codeExécute des extraits de code Python en toute sécurité dans l'environnement de l'agent.
DALLETool (DallETool)Génère des images à partir de descriptions textuelles en utilisant le modèle DALL-E d'OpenAI.
OutilDeRecherchePGInterroge les bases de données PostgreSQL pour la récupération de données (prise en charge de la recherche sémantique/de type RAG).

Intégrations et outils avancés : CrewAI s'intègre également au Model Context Protocol (MCP), un écosystème complet d'outils créés par la communauté et accessibles via une interface commune. Activer l'intégration MCP pour votre agent signifierait qu'il pourrait accéder littéralement à des milliers d'outils fonctionnant sur les serveurs MCP (comme des services de traitement de données complexes, des API spécialisées, etc.). Cela nécessite l'installation de l'extra crewai-tools[mcp] et (optionnellement) l'exécution d'un serveur MCP ou la connexion à un serveur existant.

Modèles de fiabilité pour les flux de travail multi-agents

En production, vous devrez prendre en compte une variété de modes de défaillance. Des agents pouvant entrer dans des boucles infinies, des outils se déclenchant par erreur, des spirales de coûts, etc. CrewAI fournit des modèles et des outils intégrés pour améliorer la fiabilité. Voici quelques modèles importants à connaître :

Modèle de fiabilitéCe que cela empêche (avec brève explication)Comment postuler sur CrewAI (avec une brève explication)
Résultats des outils sécurisésHallucinations après une sortie correcte d'outil — le LLM « reformule » et introduit des erreurs même lorsque l'outil retourne la vérité.Pour les outils faisant autorité (requête de base de données, calculatrice, récupération), configurez le flux de travail de sorte que la sortie de l'outil devienne la réponse finale (ou soit copiée mot pour mot dans la réponse). De plus, rédigez des tâches qui nécessitent explicitement l'utilisation de l'outil pour obtenir des faits.
Limites d'itérationBoucles infinies et consommation de jetons — les agents continuent de réfléchir, de réessayer ou de replanifier sans parvenir à une conclusion.Définissez max_iter de l'agent pour limiter les cycles de réflexion/outil. Maintenez-le bas pour les tâches simples ; augmentez-le seulement pour un raisonnement complexe en plusieurs étapes. Considérez les occurrences fréquentes de « atteint max_iter » comme un problème de conception du prompt ou de la tâche.
Délai d'exécutionHung runs — le scraping web lent, les blocages réseau ou les appels longs d'outils paralysent toute l'équipe.Définissez max_execution_time par agent/tâche. Dans les outils personnalisés, appliquez des délais d'expiration (timeouts HTTP, limites de chargement de page Selenium). Privilégiez « délai d'attente + nouvelle tentative » plutôt que d'attendre indéfiniment.
Nouvelles tentatives + temporisationÉchecs transitoires — limites de débit, API instables, connectivité intermittente.Utilisez max_retry_limit et implémentez un retour exponentiel dans le code de l'outil (par exemple, attendre 1s → 2s → 4s). Après un nombre limité de tentatives, renvoyez un message d'erreur structuré afin que les tâches en aval puissent le gérer de manière déterministe.
Délégation limitéePing-pong de délégation — les agents se renvoient le travail en permanence et ne le terminent jamais.Activez allow_delegation uniquement pour un agent manager/coordinateur ; gardez les agents travailleurs sans délégation. Ajoutez des règles d'invite explicites comme « déléguer seulement en cas de données manquantes/acces aux outils », et exigez que les travailleurs retournent des résultats concrets, pas des demandes.
Entrées déterministesRésultats instables — une petite variation dans l’invite peut entraîner des formats/résultats différents, perturbant l’automatisation en aval.Utilisez des spécifications de tâches strictes (expected_output), des schémas fixes (JSON) et des instructions structurées. Pour les agents d'extraction/classification, réduisez l'aléa (temperature plus basse) et limitez les sorties aux champs définis.
Validation des sortiesÉchecs de qualité silencieux — les résultats « semblent corrects » mais manquent de champs requis, enfreignent des contraintes ou contiennent des contradictions.Ajoutez une tâche de validateur/relecteur qui vérifie le schéma, les sections obligatoires, les citations et les contraintes. Si la validation échoue, relancez avec des retours correctifs ciblés (ce qui manque + le format exact attendu).
Contrôle des coûtsDépense incontrôlée — les flux de travail multi-agents amplifient rapidement les jetons et les appels aux outils.Utilisez des modèles plus petits/moins chers pour les étapes routinières et réservez les modèles plus puissants pour le raisonnement critique. Limitez le nombre d'étapes/le temps, mettez en cache le contexte répété et consignez les tokens/le coût par tâche pour identifier les points coûteux afin d'optimiser les invites/outils.

Observabilité et débogage

Ce tableau résume les trois couches d'observabilité les plus pratiques pour les flux de travail CrewAI. Il montre comment commencer par une visibilité simple via la console pendant le développement, puis évoluer vers un traçage structuré et une surveillance externe en production. Il ajoute enfin des points de débogage et des évaluations pour améliorer continuellement la fiabilité et la qualité des résultats au fil du temps.

Zone d'observationCe que cela vous apporte (pourquoi c'est important)Comment l'utiliser dans CrewAI (pratique, orienté production)
Journalisation de base et verbositéDébogage immédiat et lisible — vous pouvez voir en temps réel les étapes de raisonnement de l'agent, les utilisations d'outils et le flux de décision. Idéal pour le développement et le triage rapide, mais limité pour l'analyse à long terme.Activez verbose=True sur le Crew ou sur des Agents spécifiques pour afficher les journaux étape par étape (PENSÉE → ACTION → OBSERVATION). Utilisez-le localement pour reproduire des problèmes. En production, gardez la verbosité faible et générez des journaux structurés (JSON) autant que possible afin de pouvoir les agréger.
Traçage + observabilité externe + surveillance de la productionTrace de preuve structurée — exécution étape par étape enregistrée avec horodatages, entrées/sorties, appels d'outils et identifiants d'exécution. Permet les analyses post-mortem, l'optimisation des performances et la gestion des coûts (pics de jetons, outils lents).Activez le suivi CrewAI (config/flag/env selon la documentation) afin que chaque exécution génère des données de suivi avec un identifiant unique. Envoyez les traces/métriques vers un backend d'observabilité (par exemple, Langfuse pour les traces LLM, Datadog pour les journaux/métriques/alertes, Arize/Phoenix pour la surveillance des modèles, LangSmith/LangTrace pour le suivi unifié, Neatlogs pour les rejouages d'exécution partageables). Ajoutez des alertes en cas d'échec ou de latence, suivez les tokens et le coût par tâche, et surveillez le débit pour les décisions de mise à l'échelle.
Crochets de débogage + flux de travail d'évaluationDiagnostic exploitable et contrôle de qualité — les hooks personnalisés mettent en évidence des modèles (boucles de délégation, tentatives répétées, erreurs d’outils), tandis que l’évaluation prévient les régressions silencieuses de la qualité des résultats.Utilisez step_callback pour annoter/enregistrer les événements critiques après chaque étape (délégation déclenchée, erreur d'outil, nombre de tentatives, violations de schéma). Ajoutez une phase d'évaluation automatisée (vérifications des règles + notation optionnelle par LLM) sur les résultats finaux et conservez les scores. Utilisez les tendances pour affiner les prompts/outils et pour contrôler les versions (amélioration continue à la manière d'AgentOps).

CrewAI vs LangGraph vs AutoGen

Différents agents peuvent avoir des philosophies, des architectures ou des fonctionnalités différentes qui correspondent à vos cas d'utilisation. Les trois frameworks les plus populaires sont CrewAI, LangGraph et AutoGen. Comparons brièvement les trois pour souligner les principales similitudes et différences :

AspectCrewAI (Équipes basées sur les rôles)LangGraph (Flux de travail graphique)AutoGen (Agents Conversationnels)
ApprocheAgents jouant des rôles dans un équipage structuré ; les tâches et les flux combinent autonomie et contrôle.Graphe acyclique dirigé des étapes (souvent via LangChain) ; gestion explicite de l'état.Sessions de chat multi-agents ; comportement émergent sans processus fixe par défaut.
Facilité d'utilisationModèle clair pour agent/équipage/tâche ; démarrage rapide. La journalisation peut être délicate sans outils appropriés.Courbe d'apprentissage plus raide ; plus de code standard et de conception initiale de l'état.Rapide à prototyper, mais nécessite une conception minutieuse des instructions pour coordonner les agents.
Contrôle du flux de travailModes doubles : équipes autonomes et flux déterministes ; bon équilibre entre flexibilité et structure.Contrôle strict via des graphiques ; idéal pour les branchements complexes, moins adaptable à l'exécution.Contrôle intégré limité ; la séquence émerge de la conversation, plus difficile à faire respecter.
État et mémoireModules de mémoire intégrés (court/long/entité) ; robustes dès la sortie de l'emballage.Dépend souvent de la mémoire de LangChain ; l'état doit être prédéfini et géré dans le code.Principalement, l'historique des conversations, sauf si vous mettez en place une mémoire supplémentaire.
Outils et intégrationPlus de 100 outils ; pas lié à LangChain, facile d’intégrer n’importe quelle API/outils personnalisés ; peut toujours utiliser les outils LangChain si nécessaire.Accouplement étroit avec LangChain ; beaucoup d'intégrations, mais complexité et surcharge d'adaptation accrues.Outils via des fonctions et l'interface AutoGen Studio ; l'utilisation des outils est guidée par un paradigme conversationnel.
PerformanceSurcharge minimale ; noyau optimisé ; exécution plus rapide signalée pour certaines tâches ; performant pour les flux de travail petits et complexes.Plus de surcharge (LangChain + runtime graphique) ; peut être plus lent mais efficace pour les flux structurés.Cela dépend du nombre de tours de conversation ; cela peut être plus lent si les agents prennent de nombreuses itérations.
Prêt pour la productionConçu pour la production : crochets d'observabilité, fonctionnalités d'entreprise, contrôles granulaire, systèmes maintenables.Production possible avec une ingénierie soigneuse ; peut nécessiter de la colle supplémentaire en raison des particularités de LangChain.Plus orienté vers la recherche/démonstration ; le durcissement pour la production (journalisation, gestion des erreurs, contrôles) est en grande partie fait soi-même.
Idéal pourFlux de travail basés sur les rôles avec des étapes connues mais une exécution flexible (automatisation d'entreprise, pipelines d'analyse, RAG à plusieurs étapes avec supervision).Flux de travail statiques/prévisibles nécessitant des branches complexes (par exemple, les pipelines ETL/QA), surtout si vous avez déjà investi dans LangChain.Résolution de problèmes ouverte via la conversation (remue-méninges, boucles de critique, chat avec intervention humaine), où les étapes ne sont pas fixes.

FAQ

1. Qu'est-ce que CrewAI et en quoi est-il différent des agents d'IA traditionnels ?

CrewAI est un cadre conçu pour orchestrer plusieurs agents IA qui travaillent ensemble en utilisant des rôles, objectifs et responsabilités clairement définis. Contrairement aux configurations traditionnelles à agent unique, CrewAI met l'accent sur la collaboration et la délégation des tâches, de manière similaire à celle des équipes humaines. Cela le rend particulièrement efficace pour des flux de travail complexes et à multiples étapes nécessitant planification, exécution et validation.

2. Comment fonctionne l'orchestration des agents basée sur les rôles dans CrewAI ?

Dans CrewAI, chaque agent se voit attribuer un rôle spécifique, tel que chercheur, rédacteur ou relecteur, ainsi qu'un objectif défini. Les tâches sont réparties en fonction de ces rôles, garantissant que les agents se concentrent uniquement sur ce pour quoi ils sont les mieux adaptés. Cette approche structurée améliore l'efficacité, réduit les redondances et produit des résultats plus cohérents.

3. Quels sont les cas d'utilisation courants de CrewAI ?

CrewAI est largement utilisé pour la génération de contenu, l'automatisation de la recherche, les pipelines d'analyse de données et les flux de travail de produits pilotés par l'IA. Il est particulièrement utile dans les scénarios où les tâches doivent être effectuées de manière séquentielle ou collaborative. Parmi les exemples, on peut citer la création de systèmes RAG, l'automatisation des rapports et la coordination de plusieurs outils alimentés par LLM.

4. Ai-je besoin de connaissances avancées en IA ou en Python pour commencer avec CrewAI ?

Une connaissance de base de Python et des grands modèles de langage est utile mais pas obligatoire. CrewAI est conçu pour être convivial pour les développeurs, avec des abstractions claires pour les agents, les tâches et les flux de travail. Les débutants peuvent commencer par des exemples simples et passer progressivement à des schémas d'orchestration multi-agents plus complexes.

5. CrewAI peut-il être intégré aux outils et frameworks existants ?

Oui, CrewAI peut être intégré aux fournisseurs de LLM populaires, aux API et aux outils externes tels que les bases de données vectorielles et les moteurs de flux de travail. Cette flexibilité lui permet de s'intégrer parfaitement aux pipelines d'IA existants. En conséquence, les équipes peuvent améliorer leurs systèmes actuels sans tout réécrire à partir de zéro.

Conclusion

CrewAI est le plus utile lorsque vous considérez un « crew » comme un flux de travail structuré, plutôt que comme une expérience de chat. Attribuez des rôles et des limites de tâches, appuyez les étapes clés avec des outils et imposez des limites pour éviter que le système ne dégénère en boucles, échecs ou coûts imprévus. Ensuite, instrumentez tout — journaux, traces et évaluations légères — afin de pouvoir résoudre rapidement les problèmes et améliorer la qualité à chaque version. Si vous avez besoin d’une automatisation multi-étapes prévisible avec une responsabilité claire et des contrôles de production, CrewAI est un choix solide. Cependant, si votre problème concerne principalement une logique de branchement complexe ou une collaboration conversationnelle ouverte, LangGraph ou AutoGen pourraient mieux convenir.

Références

  • Qu'est-ce que CrewAI ?
  • Commencez avec CrewAI - Installez, configurez et créez votre première équipe d'IA
  • Aperçu d'un agent
  • Créer des systèmes multi-agents avec CrewAI - Un tutoriel complet
  • Outils CrewAI
  • Démarrage rapide : Activer la collaboration

Merci d'apprendre avec la communauté Linux-Console.net.