Les avis des clients dispersés sur plusieurs plateformes posent des problèmes d’analyse aux entreprises. La surveillance manuelle des avis prend beaucoup de temps et néglige souvent des informations essentielles. Ce guide vous montre comment créer un agent d’intelligence artificielle qui collecte, analyse et classe automatiquement les avis provenant de différentes sources.
Vous apprendrez :
- Comment construire un système de veille sur les avis en utilisant CrewAI et le Web MCP de Bright Data
- Comment effectuer une analyse des sentiments basée sur les aspects sur les commentaires des clients
- Comment catégoriser les commentaires par sujet et générer des informations exploitables.
Consultez le projet final sur GitHub!
Qu’est-ce que CrewAI ?
CrewAI est un cadre open-source pour la création d’équipes d’agents d’IA collaboratifs. Vous définissez les rôles, les objectifs et les outils des agents pour exécuter des flux de travail complexes. Chaque agent gère des tâches spécifiques tout en travaillant ensemble vers un objectif commun.
CrewAI se compose de
- Un agent : Un travailleur alimenté par LLM avec des responsabilités et des outils définis.
- Tâche : Un travail spécifique avec des exigences claires en matière de résultats
- Outil : Fonctions utilisées par les agents pour un travail spécialisé, comme l’extraction de données.
- Équipe : Un ensemble d’agents travaillant ensemble
Qu’est-ce que le MCP ?
MCP (Model Context Protocol) est une norme JSON-RPC 2.0 qui connecte les agents d’intelligence artificielle à des outils externes et à des sources de données par le biais d’une interface unifiée.
Le serveur Web MCP de Bright Data fournit un accès direct aux capacités de scraping web avec une protection anti-bot grâce à plus de 150 millions d’IP résidentielles tournantes, un rendu JavaScript pour le contenu dynamique, une sortie JSON propre des données scrapées et plus de 50 outils prêts à l’emploi pour différentes plates-formes.
Ce que nous construisons : Agent de renseignement d’examen multi-sources
Nous allons créer un système CrewAI qui récupère automatiquement les évaluations d’entreprises spécifiques à partir de plusieurs plateformes telles que G2, Capterra, Trustpilot et TrustRadius et qui récupère l’évaluation de chacune d’entre elles, ainsi que les meilleures évaluations, effectue une analyse du sentiment basée sur l’aspect, catégorise les commentaires en sujets (assistance, prix, facilité d’utilisation), évalue le sentiment pour chaque catégorie et génère des informations commerciales exploitables.
Conditions préalables
Configurez votre environnement de développement avec
- Python 3.11 ou supérieur
- Node.js et npm pour le serveur Web MCP
- Compte Bright Data – Inscrivez-vous et créez un jeton API (des crédits d’essai gratuits sont disponibles).
- Clé API Nebius – Créez une clé dans Nebius AI Studio (cliquez sur + Get API Key). Vous pouvez l’utiliser gratuitement. Aucun profil de facturation n’est requis.
- Environnement virtuel Python – Permet d’isoler les dépendances ; voir la documentation
venv
.
Configuration de l’environnement
Créez votre répertoire de projet et installez les dépendances :
python -m venv venv
# macOS/Linux : source venv/bin/activate
# Windows : venvScriptsactivate
pip install "crewai-tools[mcp]" crewai mcp python-dotenv pandas textblob
Créez un nouveau fichier appelé review_intelligence.py
et ajoutez les importations suivantes :
from crewai import Agent, Task, Crew, Process
from crewai_tools import MCPServerAdapter
from mcp import StdioServerParameters
from crewai.llm import LLM
import os
import json
import pandas as pd
from datetime import datetime
from dotenv import load_dotenv
from textblob import TextBlob
load_dotenv()
Configuration de Bright Data Web MCP
Créez un fichier .env
avec vos identifiants :
BRIGHT_DATA_API_TOKEN="votre_api_token_ici"
WEB_UNLOCKER_ZONE="votre_zone_de_déblocage_web"
BROWSER_ZONE="votre_zone_de_navigation"
NEBIUS_API_KEY="votre_clé_api_nebius"
Vous avez besoin de :
- Jeton API: Générez une nouvelle clé API à partir de votre tableau de bord Bright Data.
- Zone de déverrouillage Web: Créez une nouvelle zone Web Unlocker pour les sites immobiliers.
- Zone API navigateur: Créez une nouvelle zone Browser API pour les sites immobiliers utilisant beaucoup de JavaScript.
- Clé API Nebius: Déjà créée dans les conditions préalables
Configurer le serveur LLM et Web MCP dans review_intelligence.py
:
llm = LLM(
model="nebius/Qwen/Qwen3-235B-A22B",
api_key=os.getenv("NEBIUS_API_KEY")
)
server_params = StdioServerParameters(
command="npx",
args=["@brightdata/mcp"],
env={
"API_TOKEN" : os.getenv("BRIGHT_DATA_API_TOKEN"),
"WEB_UNLOCKER_ZONE" : os.getenv("WEB_UNLOCKER_ZONE"),
"BROWSER_ZONE" : os.getenv("BROWSER_ZONE"),
},
)
Définition des agents et des tâches
Définissez des agents spécialisés pour les différents aspects de l’analyse des avis. L’agent chargé de l’analyse des avis extrait les avis des clients de plusieurs plateformes et renvoie des données JSON propres et structurées contenant le texte de l’avis, les évaluations, les dates et la source de la plateforme. Cet agent possède une connaissance experte du web scraping, une compréhension approfondie des structures des plateformes d’évaluation et la capacité de contourner les mesures anti-bots.
def build_review_scraper_agent(mcp_tools) :
return Agent(
role="Review Data Collector",
goal=(
"Extraire les avis des clients à partir de plusieurs plateformes et renvoyer des données JSON "
"données JSON propres et structurées avec le texte de l'avis, les notes, les dates et la source de la plateforme."
),
backstory=(
"Expert en web scraping avec une connaissance approfondie des structures des plateformes d'évaluation. "
" "Compétent pour contourner les mesures anti-bot et extraire des ensembles complets de données d'évaluation "
"d'Amazon, de Yelp, de Google Reviews et d'autres plateformes."
),
tools=mcp_tools,
llm=llm,
max_iter=3,
verbose=True,
)

L’agent analyseur de sentiment analyse le sentiment des avis sur trois aspects clés : Qualité de l’assistance, Satisfaction tarifaire et Facilité d’utilisation. Il fournit des notes numériques et un raisonnement détaillé pour chaque catégorie. Cet agent est spécialisé dans le traitement du langage naturel et l’analyse des sentiments des clients, avec une expertise dans l’identification des indicateurs émotionnels et des modèles de commentaires spécifiques à un aspect.
def build_sentiment_analyzer_agent() :
return Agent(
role="Spécialiste de l'analyse des sentiments",
goal=(
"Analyser le sentiment des clients sur trois aspects clés : Qualité de l'assistance, "
"Satisfaction tarifaire et Facilité d'utilisation. Fournir des scores numériques et "
"raisonnement détaillé pour chaque catégorie."
),
backstory=(
"Scientifique des données spécialisé dans le traitement du langage naturel et l'analyse du " "sentiment des clients.
"l'analyse des sentiments des clients. Expert en identification d'indicateurs émotionnels, d'indices contextuels, "
"et les modèles de rétroaction spécifiques à un aspect dans les commentaires des clients."
),
llm=llm,
max_iter=2,
verbose=Vrai,
)
L’agent “insights generator” transforme les résultats de l’analyse des sentiments en informations commerciales exploitables. Il identifie les tendances, met en évidence les problèmes critiques et fournit des recommandations spécifiques pour l’amélioration. Cet agent apporte une expertise en matière d’analyse stratégique et des compétences en matière d’optimisation de l’expérience client et de traduction des données de retour d’information en actions commerciales concrètes.
def build_insights_generator_agent() :
return Agent(
role="Analyste en intelligence d'affaires",
goal=(
"Transformer les résultats de l'analyse des sentiments en informations commerciales exploitables. "
"Identifier les tendances, mettre en évidence les problèmes critiques et fournir des "
"des recommandations spécifiques pour l'amélioration."
),
backstory=(
"Analyste stratégique avec une expertise dans l'optimisation de l'expérience client. "
"Compétent pour traduire les données relatives au retour d'information des clients en actions concrètes "
"concrètes et des cadres de priorités."
),
llm=llm,
max_iter=2,
verbose=True,
)
Assemblage et exécution de l’équipage
Créez des tâches pour chaque étape du pipeline d’analyse. La tâche “scraping” collecte des avis sur les pages de produits spécifiées et produit un JSON structuré avec des informations sur la plateforme, le texte de l’avis, les évaluations, les dates et l’état de vérification.
def build_scraping_task(agent, product_urls) :
return Task(
description=f "Récupérer les évaluations de ces pages de produits : {product_urls}",
expected_output="""{
"reviews" : [
{
"platform" : "amazon",
"review_text" : "Excellent produit, livraison rapide...",
"rating" : 5,
"date" : "2024-01-15",
"reviewer_name" : "John D.",
"verified_purchase" : true
}
],
"total_reviews" : 150,
"platforms_scraped" : ["amazon", "yelp"]
}""",
agent=agent,
)
La tâche d’analyse des sentiments traite les avis pour analyser les aspects relatifs à l’assistance, au prix et à la facilité d’utilisation. Elle renvoie des notes numériques, des classifications de sentiments, des thèmes clés et des nombres d’avis pour chaque catégorie.
def build_sentiment_analysis_task(agent) :
return Task(
description="Analyser le sentiment pour les aspects Support, Prix et Facilité d'utilisation",
expected_output="""{
"aspect_analysis" : {
"support_quality" : {
"score" : 4.2,
"sentiment" : "positif",
"key_themes" : ["responsive", "helpful", "knowledgeable"],
"review_count" : 45
},
"pricing_satisfaction" : {
"score" : 3.1,
"sentiment" : "mitigé",
"key_themes" : ["expensive", "value", "competitive"],
"review_count" : 67
},
"easy_of_use" : {
"score" : 4.7,
"sentiment" : "très positif",
"key_themes" : ["intuitive", "simple", "user-friendly"],
"review_count" : 89
}
}
}""",
agent=agent,
)
La tâche “insights” génère des informations commerciales exploitables à partir des résultats de l’analyse des sentiments. Elle fournit des résumés exécutifs, des actions prioritaires, des zones de risque, l’identification des points forts et des recommandations stratégiques.
def build_insights_task(agent) :
return Task(
description="Générer des informations commerciales exploitables à partir d'une analyse des sentiments",
expected_output="""{
"executive_summary" : "La satisfaction globale des clients est forte...",
"priority_actions" : [
"Répondre aux préoccupations en matière de prix par une communication sur la valeur",
"Maintenir d'excellentes normes de facilité d'utilisation"
],
"risk_areas" : ["Sensibilité au prix chez les nouveaux clients"],
"strengths" : ["Intuitive user experience", "Quality support team"],
"recommended_focus" : "Optimisation de la stratégie de tarification"
}""",
agent=agent,
)
Analyse du sentiment basée sur les aspects
Ajoutez des fonctions d’analyse du sentiment qui identifient les aspects spécifiques mentionnés dans les avis et calculent les scores de sentiment pour chaque domaine d’intérêt.
def analyze_aspect_sentiment(reviews, aspect_keywords) :
"""Analyser le sentiment pour des aspects spécifiques mentionnés dans les commentaires."""
aspects_reviews = []
pour review dans reviews :
text = review.get('review_text', '').lower()
if any(keyword in text for keyword in aspect_keywords) :
blob = TextBlob(review['review_text'])
sentiment_score = blob.sentiment.polarity
aspect_reviews.append({
'text' : review['review_text'],
'sentiment_score' : sentiment_score,
'rating' : review.get('rating', 0),
'platform' : review.get('platform', '')
})
return aspect_reviews
Catégorisation des avis en thèmes (assistance, prix, facilité d’utilisation)
La fonction de catégorisation classe les avis dans les rubriques Assistance, Prix et Facilité d’utilisation en se basant sur la correspondance des mots-clés. Les mots-clés relatifs à l’assistance comprennent les termes liés au service clientèle et à l’assistance. Les mots-clés relatifs au prix couvrent les mentions relatives au coût, à la valeur et à l’accessibilité.
def categorize_by_aspects(reviews) :
"""Catégoriser les avis dans les rubriques Assistance, Prix et Facilité d'utilisation."""
support_keywords = ['support', 'help', 'service', 'customer', 'response', 'assistance']
pricing_keywords = ['prix', 'coût', 'cher', 'bon marché', 'valeur', 'argent', 'abordable']
usability_keywords = ['easy', 'difficult', 'intuitive', 'complicated', 'user-friendly', 'interface']
categorized = {
support" : analyze_aspect_sentiment(reviews, support_keywords),
'prix' : analyze_aspect_sentiment(reviews, pricing_keywords),
'facilité d'utilisation' : analyze_aspect_sentiment(reviews, usability_keywords)
}
retour catégorisé

Évaluation des sentiments pour chaque thème
Implémenter une logique de notation qui convertit l’analyse des sentiments en notes numériques et en catégories significatives.
def calculate_aspect_scores(categorized_reviews) :
"""Calculer les notes numériques pour chaque catégorie d'aspect."""
scores = {}
for aspect, reviews in categorized_reviews.items() :
if not reviews :
scores[aspect] = {'score' : 0, 'count' : 0, 'sentiment' : 'neutre' }
continuer
# Calcul du score moyen de sentiment
sentiment_scores = [r['sentiment_score'] for r in reviews]
avg_sentiment = sum(sentiment_scores) / len(sentiment_scores)
# Convertir en échelle de 1 à 5
score_normalisé = ((sentiment_avg + 1) / 2) * 5
# Déterminer la catégorie de sentiment
si avg_sentiment > 0.3 :
sentiment_category = 'positif'
elif avg_sentiment < -0.3 :
sentiment_category = 'negative'
else :
sentiment_category = 'neutre'
scores[aspect] = {
'score' : round(normalized_score, 1),
'count' : len(reviews),
'sentiment' : sentiment_category,
'raw_sentiment' : round(avg_sentiment, 2)
}
return scores
Génération du rapport Insights final
Terminez l’exécution du flux de travail en orchestrant tous les agents et toutes les tâches dans l’ordre. La fonction principale crée des agents spécialisés pour le scraping, l’analyse des sentiments et la génération d’insights. Elle rassemble ces agents en une équipe avec un traitement séquentiel des tâches.
def analyze_reviews(product_urls) :
"""Fonction principale pour orchestrer le flux de travail de l'intelligence de l'examen."""
with MCPServerAdapter(server_params) as mcp_tools :
# Créer des agents
scraper_agent = build_review_scraper_agent(mcp_tools)
sentiment_agent = build_sentiment_analyzer_agent()
insights_agent = build_insights_generator_agent()
# Créer des tâches
scraping_task = build_scraping_task(scraper_agent, product_urls)
sentiment_task = build_sentiment_analysis_task(sentiment_agent)
insights_task = build_insights_task(insights_agent)
# Assembler l'équipage
crew = Crew(
agents=[scraper_agent, sentiment_agent, insights_agent],
tasks=[scraping_task, sentiment_task, insights_task],
process=Process.sequential,
verbose=True
)
return crew.kickoff()
si __name__ == "__main__" :
product_urls = [
"<https://www.amazon.com/product-example-1>",
"<https://www.yelp.com/biz/business-example>
]
try :
result = analyze_reviews(product_urls)
print("Analyse de l'intelligence des revues terminée !")
print(json.dumps(result, indent=2))
except Exception as e :
print(f "L'analyse a échoué : {str(e)}")
Exécutez l’analyse :
python review_intelligence.py

Vous verrez le processus de réflexion de l’agent dans la console alors que chaque agent planifie et exécute ses tâches. Le système vous montrera ce qu’il en est :
- Extraire des données d’évaluation complètes à partir de plusieurs plates-formes
- Analyse des écarts concurrentiels et du positionnement sur le marché
- Traitement des schémas de sentiment et évaluation de la qualité des évaluations
- Identifier les mentions de caractéristiques et les informations sur les prix
- Fournir des recommandations stratégiques et des alertes sur les risques

Conclusion
En automatisant l’intelligence des évaluations avec CrewAI et la puissante plate-forme de données Web de Bright Data, vous pouvez obtenir des informations plus approfondies sur les clients, rationaliser votre analyse de la concurrence et prendre des décisions commerciales plus intelligentes. Grâce aux produits de Bright Data et aux solutions de pointe en matière de raclage Web anti-bot, vous êtes en mesure de développer la collecte d’avis et l’analyse des sentiments pour n’importe quel secteur d’activité. Pour connaître les dernières stratégies et mises à jour, consultez le blog de Bright Data ou apprenez-en plus dans nos guides détaillés sur le web scraping pour commencer à maximiser la valeur de vos commentaires clients dès aujourd’hui.