CrewAI est un framework Python open-source qui permet de créer des équipes d’agents IA collaboratifs. Au lieu d’un seul modèle qui fait tout, vous définissez des agents spécialisés avec des rôles distincts qui travaillent ensemble. Ce guide vous montre comment créer votre premier système multi-agents avec CrewAI et l’intégrer avec Ollama pour une exécution 100% locale.

Qu’est-ce que CrewAI ?

CrewAI est un framework léger et rapide, construit entièrement from scratch sans dépendance à LangChain ou autres frameworks d’agents. Avec plus de 30 000 étoiles sur GitHub et 100 000 développeurs certifiés, il est devenu la référence pour les systèmes multi-agents en production. Son architecture repose sur deux concepts clés : les Crews pour la collaboration autonome entre agents, et les Flows pour l’orchestration événementielle avec contrôle précis.

Pourquoi des multiples agents ?

Imaginez une équipe de travail : vous avez un chercheur qui collecte l’information, un analyste qui l’interprète, et un rédacteur qui produit le rapport final. Chacun est spécialisé dans sa tâche. CrewAI reproduit ce modèle avec des agents IA. Un agent « Researcher » utilise des outils de recherche web, un agent « Analyst » traite les données, un agent « Writer » produit le contenu final. Ensemble, ils accomplissent des tâches complexes qu’un seul prompt ne pourrait pas réaliser aussi bien.

Installation de CrewAI

Prérequis

CrewAI nécessite Python 3.10 à 3.12. Vous aurez aussi besoin d’Ollama si vous voulez utiliser des modèles locaux (voir notre guide d’installation Ollama). Pour les outils de recherche web, une clé API Serper ou SerpAPI peut être utile mais n’est pas obligatoire.

# Installer CrewAI et ses outils
pip install crewai crewai-tools

# Vérifier l'installation
python -c "import crewai; print(crewai.__version__)"

# Créer un nouveau projet CrewAI (recommandé)
crewai create crew mon_projet
cd mon_projet

Configuration avec Ollama

CrewAI supporte nativement Ollama pour les modèles locaux. Aucune clé API requise.

# Télécharger un modèle performant pour les agents
ollama pull llama3.2

# Pour des tâches plus complexes
ollama pull mistral

# Configurer la variable d'environnement (optionnel)
export OPENAI_API_KEY="NA"  # Désactive OpenAI

Les composants de CrewAI

CrewAI repose sur cinq composants principaux. Les Agents sont des entités IA avec un rôle, un objectif et une personnalité. Les Tasks sont les tâches assignées aux agents. Les Tools sont les outils que les agents peuvent utiliser (recherche web, lecture de fichiers, API). Les Crews sont les équipes qui coordonnent les agents. Les Flows permettent une orchestration événementielle pour les workflows complexes.

Premier exemple : équipe de recherche

Créons une équipe simple avec un chercheur et un rédacteur qui travaillent ensemble pour produire un rapport.

from crewai import Agent, Task, Crew
from crewai import LLM

# Configurer le modèle local Ollama
llm = LLM(
    model="ollama/llama3.2",
    base_url="http://localhost:11434"
)

# Définir l'agent chercheur
researcher = Agent(
    role="Chercheur Senior",
    goal="Trouver des informations précises et pertinentes sur {topic}",
    backstory="""Tu es un chercheur expérimenté avec 10 ans d'expérience
    dans l'analyse de données et la veille technologique. Tu es rigoureux
    et tu vérifies toujours tes sources.""",
    llm=llm,
    verbose=True
)

# Définir l'agent rédacteur
writer = Agent(
    role="Rédacteur Technique",
    goal="Rédiger un rapport clair et structuré basé sur les recherches",
    backstory="""Tu es un rédacteur technique qui excelle dans la 
    vulgarisation de sujets complexes. Tu écris de façon concise
    et accessible.""",
    llm=llm,
    verbose=True
)

# Définir les tâches
research_task = Task(
    description="""Recherche les dernières avancées sur {topic}.
    Identifie les 3 points clés et leurs implications pratiques.""",
    expected_output="Un résumé structuré des 3 points clés avec sources",
    agent=researcher
)

writing_task = Task(
    description="""À partir des recherches, rédige un rapport de 500 mots
    sur {topic}. Structure : introduction, 3 sections principales, conclusion.""",
    expected_output="Un rapport de 500 mots en français, bien structuré",
    agent=writer
)

# Créer et exécuter l'équipe
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    verbose=True
)

# Lancer l'exécution
result = crew.kickoff(inputs={"topic": "l'IA générative en 2026"})
print(result)

Ajouter des outils aux agents

Les agents deviennent vraiment puissants quand ils peuvent utiliser des outils pour interagir avec le monde extérieur.

from crewai_tools import (
    FileReadTool,
    DirectoryReadTool,
    WebsiteSearchTool,
    SerperDevTool
)

# Outil pour lire des fichiers
file_tool = FileReadTool()

# Outil pour lister un répertoire
dir_tool = DirectoryReadTool()

# Outil de recherche web (nécessite SERPER_API_KEY)
search_tool = SerperDevTool()

# Agent avec outils
analyst = Agent(
    role="Analyste Système",
    goal="Analyser les fichiers de configuration et logs",
    backstory="Expert en administration système Linux",
    tools=[file_tool, dir_tool],
    llm=llm,
    verbose=True
)

# Tâche qui utilise les outils
analysis_task = Task(
    description="""Analyse le fichier /etc/nginx/nginx.conf
    et identifie les problèmes de configuration potentiels.""",
    expected_output="Liste des problèmes avec recommandations",
    agent=analyst
)

Configuration YAML (méthode recommandée)

Pour les projets plus complexes, CrewAI recommande d’utiliser des fichiers YAML pour définir agents et tâches. Cela sépare la configuration du code.

# config/agents.yaml
researcher:
  role: "Chercheur Senior en {topic}"
  goal: "Découvrir les dernières tendances et informations sur {topic}"
  backstory: |
    Tu es un chercheur reconnu avec une expertise approfondie.
    Tu analyses les sources avec rigueur et tu identifies
    les informations les plus pertinentes.

writer:
  role: "Rédacteur Technique"
  goal: "Créer du contenu engageant et informatif sur {topic}"
  backstory: |
    Tu es un rédacteur expérimenté qui transforme
    des informations complexes en contenus accessibles.
# config/tasks.yaml
research_task:
  description: |
    Effectue une recherche approfondie sur {topic}.
    Identifie les tendances actuelles, les acteurs clés,
    et les développements récents.
  expected_output: |
    Un rapport de recherche avec :
    - 5 tendances clés
    - 3 acteurs majeurs
    - Prévisions pour les 12 prochains mois
  agent: researcher

writing_task:
  description: |
    Rédige un article de blog basé sur les recherches.
    Le ton doit être professionnel mais accessible.
  expected_output: |
    Un article de blog de 800 mots avec introduction,
    corps et conclusion. Format Markdown.
  agent: writer
  context:
    - research_task

Exemple pratique : agent de monitoring

Voici un exemple concret d’équipe d’agents pour surveiller un serveur et générer des rapports.

from crewai import Agent, Task, Crew, Process
from crewai import LLM
from crewai_tools import FileReadTool

llm = LLM(model="ollama/llama3.2", base_url="http://localhost:11434")

# Agent collecteur de métriques
collector = Agent(
    role="Collecteur de Métriques",
    goal="Collecter les métriques système (CPU, RAM, disque)",
    backstory="Spécialiste en monitoring système Linux",
    tools=[FileReadTool()],
    llm=llm
)

# Agent analyste
analyst = Agent(
    role="Analyste Performance",
    goal="Analyser les métriques et détecter les anomalies",
    backstory="Expert en analyse de performance avec 10 ans d'expérience",
    llm=llm
)

# Agent rapporteur
reporter = Agent(
    role="Rapporteur",
    goal="Générer des rapports clairs et actionnables",
    backstory="Rédacteur technique spécialisé en documentation DevOps",
    llm=llm
)

# Tâches
collect_task = Task(
    description="Collecte les métriques système actuelles du serveur",
    expected_output="Données brutes : CPU, RAM, disque, load average",
    agent=collector
)

analyze_task = Task(
    description="Analyse les métriques et identifie les problèmes potentiels",
    expected_output="Liste des anomalies avec niveau de sévérité",
    agent=analyst,
    context=[collect_task]
)

report_task = Task(
    description="Génère un rapport de santé du serveur",
    expected_output="Rapport Markdown avec statut, alertes et recommandations",
    agent=reporter,
    context=[analyze_task],
    output_file="server_report.md"
)

# Équipe avec processus séquentiel
monitoring_crew = Crew(
    agents=[collector, analyst, reporter],
    tasks=[collect_task, analyze_task, report_task],
    process=Process.sequential,
    verbose=True
)

# Exécution
result = monitoring_crew.kickoff()
print(f"Rapport généré : {result}")

Modes d’exécution

CrewAI propose plusieurs modes d’exécution. Le mode sequential exécute les tâches dans l’ordre défini. Le mode hierarchical utilise un agent manager qui délègue aux autres. Choisissez sequential pour les workflows linéaires et hierarchical quand vous avez besoin de coordination dynamique.

# Mode séquentiel (par défaut)
crew = Crew(
    agents=[agent1, agent2],
    tasks=[task1, task2],
    process=Process.sequential
)

# Mode hiérarchique avec manager
crew = Crew(
    agents=[agent1, agent2, agent3],
    tasks=[task1, task2, task3],
    process=Process.hierarchical,
    manager_llm=llm  # LLM pour le manager
)

Bonnes pratiques

Définissez des rôles clairs : Chaque agent doit avoir un rôle distinct et bien défini. Évitez les chevauchements de responsabilités.

Utilisez des backstories détaillées : Les backstories influencent fortement le comportement de l’agent. Plus elles sont précises, meilleurs sont les résultats.

Limitez le nombre d’agents : Commencez avec 2-3 agents et ajoutez-en si nécessaire. Trop d’agents compliquent la coordination.

Testez avec verbose=True : Activez le mode verbose pendant le développement pour comprendre comment les agents interagissent.

CrewAI simplifie considérablement la création de systèmes multi-agents en Python. Avec son support natif d’Ollama, vous pouvez créer des équipes d’agents IA entièrement locales, sans dépendre d’APIs cloud. Commencez par des cas simples (recherche + rédaction) puis évoluez vers des workflows plus complexes. Pour automatiser encore plus vos workflows, découvrez notre prochain article sur n8n et l’intégration des LLM.

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *