Utilisation de Crewai pour construire des systèmes agentiques

 Utilisation de Crewai pour construire des systèmes agentiques


Auteur (s): Igor Novikov

Publié à l’origine sur Vers l’IA.

Image de l’auteur

CREW AI est l’un des cadres d’IA agentiques les plus populaires. J’ai revu Autogène par Microsoft avant, et il s’est avéré être assez buggy. Celui-ci est plus mature, meilleure documentation et généralement beaucoup plus stable. Cependant, ils sont tous les mêmes.

L’idée de base est un arbre d’exécution où vous avez des agents comme des nœuds de l’arbre qui peuvent avoir une ou deux connexions avec d’autres agents. Cela leur permet de construire différents types de flux avec eux pour résoudre différentes tâches.

Regardons la structure de base de l’équipage:

Nous avons donc:

Agents: Les stagiaires surmenés de votre équipe d’IA. Chacun est programmé avec un rôle spécifique (comme «Cat Meme Analyst» ou «Code Reviewer») et un ensemble d’outils. Conseil de pro: Set Verbose = True pour les entendre se plaindre de leur charge de travail en temps réel.

Tâches: La liste de tâches que vous giflez sur vos agents. «Générez 10 jeux de mots sur l’informatique quantique» ou «déboguez ce code tout en prétendant que vous êtes un pirate». Les tâches peuvent être empilées et prioritaires.

Processus: Le «comment» de la coordination du chaos. Crew AI propose des options comme Hiérarchique (L’agent du PDG aboie les ordres chez les agents de gestion Séquentiel (Les tâches se déplacent comme une ligne Conga dans une maison de retraite). Choisissez judicieusement, à moins que vous ne vouliez que votre tâche «générer des mèmes de chat» soit coincée derrière «Résoudre le changement climatique».

Outils: Les couteaux de l’armée suisse sont votre agent. Besoin d’appeler une API, de gratter le Web ou d’envoyer un message Slack passif-agressif? Les outils permettent à vos agents de le faire.

Construisons quelque chose comme un système de recherche marketing. Vous lui dites le nom de l’entreprise et il en découvrira tout à ce sujet et ses décideurs. Nous allons utiliser Google Collab pour un partage facile.

Le cadre de l’équipage AI permet à la création d’équipes d’agent autonomes de s’attaquer aux workflows complexes. Dans ce système de recherche marketing, deux équipes collaborent de manière hiérarchique pour générer un rapport complet de l’entreprise.

Demandez d’abord à Deepseek de créer un plan pour un tel système:

Configuration de l’environnement

  • Installez les forfaits nécessaires: Crewai, Openai, Langchain, Crewai-Tools, Gddown et Selenium.
  • Configurer le sélénium avec du chrome sans tête (y compris la gestion des cookies et l’usurpation d’agent utilisateur).

Préparation de l’outil et des services publics

  • Configurez les outils de grattage Web et de recherche (par exemple, serperdevtool, WebSitesearchTool, ScrapweBSiteTool).
  • Créez des services publics pour des retards de type humain, la mise en cache de HTML grattée et l’analyse du HTML avec un LLM.

Développement des agents

  • Analyste de l’entreprise: Rassemblez les données générales de l’entreprise (industrie, spécialisation, événements récents) à l’aide d’outils de recherche Web et de grattage.
  • Analyste des études de cas: Récupérez les études de cas pertinentes à partir d’un référentiel interne (Google DOC) à l’aide de la recherche sémantique.
  • Analyste du décideur: Extraire les profils exécutifs clés de LinkedIn à l’aide d’un grattoir à sélénium.
  • Agent directeur (stratège des ventes): Déléguer les tâches aux analystes, consolider leurs résultats et produire un rapport de démarrage cohérent.

Définition de la tâche

  • Définissez les tâches avec des instructions claires (par exemple, «Recherchez la société« X »et« Identifier les décideurs »).
  • Définissez le format de sortie attendu (rapport Markdown sans blocs de code).

Orchestration de l’équipage

  • Organisez des agents en une équipe hiérarchique à l’aide de l’équipage de l’IA.
  • Attribuez des tâches aux agents appropriés et définissez le flux de processus (le gestionnaire supervise la délégation).
  • Lancer l’équipage avec les entrées de l’entreprise et exécuter le workflow.

Intégration et tests

  • Intégrer LLM– Extraction HTML basée pour structurer les données brutes.
  • Mettez en œuvre la mise en cache pour réduire le grattage redondant.
  • Testez le système par rapport aux données du monde réel (par exemple, pages LinkedIn) et ajustez le chargement dynamique du contenu.

Finalisation

  • Consolider les sorties de tous les agents dans un rapport final.
  • Valider la précision des données et ajuster la gestion des erreurs ou les retards au besoin.
  • Déployer ou étendre le système pour d’autres tâches de recherche marketing.

Maintenant que nous avons un plan, écrivons le code.

web_search_tool = SerperDevTool()
website_scrape_tool = ScrapeWebsiteTool()
case_studies_tool = GetOurCompanyCaseStudies()

inputs = {
'company': "Microsoft"
}

company_researcher = Agent(
role="Company Analyst",
goal="Analyze the company, gather data by reviewing its social media and website, and identify pain points.",
backstory=f"You are an experienced analyst with expertise in business and process automation at {OUR_COMPANY}. Your task is to gather information that the sales department will use to develop hypotheses for client outreach.",
tools=(web_search_tool, website_scrape_tool),
verbose=True,
allow_delegation=False,
llm=llm
)

case_studies_researcher = Agent(
role="Case Studies Analyst",
goal="Analyze the company, gather data by reviewing its social media and website, identify pain points, and determine the most relevant case studies we can present to the company.",
backstory=f"You are an experienced analyst with expertise in business and process automation at {OUR_COMPANY}. Your task is to gather information and select relevant case studies, which the sales department will use to develop hypotheses for outreach to clients.",
tools=(web_search_tool, case_studies_tool, website_scrape_tool),
verbose=True,
allow_delegation=True,
llm=llm
)

decision_makers_researcher = Agent(
role="Decision Maker Analyst",
goal="Analyze the key figures of the company, their interests, communication style, and level of technical knowledge.",
backstory=f"A specialist in analyzing people and decision-makers, skilled in identifying the motivation of business leaders. You work at {OUR_COMPANY}. Your task is to gather information (company activities, recent social media posts, hobbies, place of residence) about the executives of potential clients, which the sales department will use to develop hypotheses for outreach to clients.",
tools=(website_scrape_tool, web_search_tool),
verbose=True,
allow_delegation=False,
llm=llm
)

manager = Agent(
role="Sales Strategist",
goal="Manager of a team that researches a company and creates detailed reports based on data analysis and research findings about potential clients for sales team to use for their outreach strategy.",
backstory="Efficiently manage the crew and ensure high-quality task completion. You're known for your ability to turn complex data into clear and concise reports, making it easy for others to understand and act on the information you provide.",
verbose=True,
allow_delegation=True,
llm=llm_o1
)
task_research_company = Task(
description=(
"Research the company '{company}' and gather information about: industry, specialization, and recent events.n"
"The company name is exactly as it is spelled (including any special characters)—make sure you don’t mix it up with similarly named companies.n"
"Make sure to analyze their LinkedIn and website.n"
"Find similar cases from our Case Studies and mention them.n"
"Don’t draw any conclusions—just gather data into a report.n"
f"Today is {today}."

),
expected_output="A fully fledge report with the mains topics, each with a full section of information. Formatted as markdown without '```'"
)

sales_research_crew = Crew(
agents=(company_researcher, decision_makers_researcher, case_studies_researcher),
tasks=(task_research_company),
verbose=True,
memory=True,
manager_agent=manager,
process=Process.hierarchical
)

company_research_results = sales_research_crew.kickoff(inputs=inputs)

print(company_research_results)

La version complète est ici:

Google Colab

Modifier la description

colab.research.google.com

Voyons comment fonctionne le code.

Équipage d’analyste de l’entreprise

Le Analyste de l’entreprise plonge dans la présence en ligne de l’entreprise – analysant son site Web et ses médias sociaux – pour extraire les tendances de l’industrie, les événements récents et les informations générales.

Le Analyste des études de cas recherche notre base de données d’études de cas (téléchargées à partir de Google Docs!) Pour identifier les cas précédents qui pourraient être pertinents pour la société cible.

Le Analyste du décideur se concentre sur la collecte de détails sur les personnages clés de l’entreprise, leurs intérêts et d’autres conseils subtils qui pourraient être utiles pour adapter la sensibilisation.

Le Stracteur des ventes (directeur) sert de moteur d’orchestration qui coordonne l’écoulement des tâches, garantissant que les données de chaque agent sont bien structurées et que rien ne glisse à travers les mailles du filet.

L’équipage des décideurs axés sur LinkedIn

Le Chercheur LinkedIn utilise notre coutume GetCompanyLinkedInpeople Outil pour gratter les pages LinkedIn, gérer soigneusement l’authentification via des cookies et simuler le comportement humain avec le sélénium.

Le Vérificateur de données Valide et références croisées les informations extraites de LinkedIn et d’autres sources, contribuant à garantir que le rapport final est fiable.

Comment fonctionne le système

Lorsque vous appelez le démarrer Méthode sur l’équipage avec une entrée comme {‘Company’: ‘Microsoft’}, le système suit un processus hiérarchique. L’agent manager délègue les tâches aux agents spécialisés, chacun tirant parti de sa propre boîte à outils (de la recherche Web et du grattage du site Web à la recherche sémantique dans nos études de cas) pour terminer leur affectation.

Le résultat? Un rapport à part entière et formulé de marquage.

Notre utilisation du mode de processus. Stracteur des ventes (directeur) Non seulement les délégués mais synthétisent également les sorties de chaque agent subordonné. Ce flux de travail hiérarchique minimise l’aléatoire dans les actions des agents.

Avec plusieurs agents, le traitement des données en parallèle, garantissant la qualité des informations est crucial. L’inclusion d’un Vérificateur de données L’agent dans le deuxième équipage aide à vérifier l’intégrité des informations.

Outils

Crewai est livré avec un ensemble d’outils pré-construction qui couvrent tous les besoins de base, mais vous pouvez ajouter le vôtre comme je l’ai fait avec LinkedIn Parser.

Chaque agent doit être équipé d’un ensemble adéquat d’outils pour la tâche. Par exemple:

  • Recherche sur le Web et gratter – des agents comme le Analyste de l’entreprise et Analyste du décideur utiliser des outils tels que Serperdevtool et ScatwebSitetool pour naviguer et extraire des données du Web.
  • Stracage de LinkedIn – Notre coutume GetCompanyLinkedInpeople L’outil, construit sur le sélénium, imite les modèles de navigation humaine pour faire face aux exigences de contenu dynamique et de connexion de LinkedIn.
  • Extraction de texte de Google Docs – Le GetourCompanyCasestudies Téléchargements et caches d’outils nos études de cas, permettant une recherche sémantique sur un référentiel bien entretenu.

Conclusions

CRew est un très bon cadre. Il est stable et simple. Il résume suffisamment de code passerelle mais vous donne toujours un contrôle grainé fin. Je trouve qu’il est assez facile à comprendre et à apprendre.

Quant à l’approche agentique – si vous exécutez le code, vous verrez que les résultats ne sont pas parfaits. Comme la logique agentique est flouet non rigide comme un programme informatique, il fournit des résultats différents à chaque fois, parfois mauvais ou des hallucinations. En moyenne cependant – cela fonctionne assez bien, assez bien pour être utile dans les cas où l’exactitude exacte n’est pas une exigence.

Publié via Vers l’IA



Source link

Related post