Créer des agents d'IA collaboratifs avec CrewAI

Créer des agents d'IA collaboratifs avec CrewAI

Nœud source: 3089434

Introduction

Le développement d’agents d’IA est l’une des frontières les plus chaudes de l’innovation logicielle. À mesure que la qualité des grands modèles linguistiques évolue, nous assisterons à une augmentation de l’intégration des agents d’IA avec les systèmes logiciels existants. Avec les agents IA, il sera possible d'accomplir des tâches avec des commandes vocales ou gestuelles au lieu de naviguer manuellement dans les applications. Mais à l’heure actuelle, le développement d’agents en est à ses balbutiements. Nous traversons encore la phase initiale de développement d’infrastructures, d’outils et de cadres, semblable à l’Internet des années 1990. Ainsi, dans cet article, nous aborderons un autre cadre de développement d'agents appelé CrewAI.

Agents IA

Objectifs d'apprentissage

  • Découvrez les agents IA.
  • Explorez CrewAI – un outil open source pour les agents de création.
  • Construisez une équipe d’IA collaborative pour rédiger du contenu.
  • Explorez des cas d'utilisation réels d'agents IA.

Cet article a été publié dans le cadre du Blogathon sur la science des données.

Table des matières

Que sont les agents IA ?

Les modèles linguistiques excellent dans la traduction, la synthèse et le raisonnement. Cependant, vous pouvez faire beaucoup de choses avec eux. L’un des moyens de réaliser pleinement le potentiel du raisonnement est de rendre les LLM agents. Les agents IA sont des LLM dotés des bons outils et invites. Ces agents peuvent automatiser la navigation, la suppression de sites Web, l'exécution de requêtes SQL, les opérations sur les fichiers, etc. Les agents utilisent la capacité de raisonnement des LLM pour sélectionner un outil en fonction des exigences actuelles. Mais au lieu d’utiliser un seul agent pour une tâche, nous pouvons en regrouper plusieurs pour accomplir des tâches complexes.

Langchain est l'outil par défaut qui vient à l'esprit lorsqu'on parle d'agents IA. Cependant, orchestrer manuellement les agents IA pour effectuer des tâches collaboratives serait un défi avec Langchain. C’est là que CrewAI entre en scène.

Qu’est-ce que CrewAI ?

ÉquipageAI est un framework open source pour orchestrer des jeux de rôle et des agents d'IA autonomes. Il permet de créer des agents d’IA collaboratifs pour atteindre facilement des objectifs complexes. Le cadre est conçu pour permettre aux agents d'IA d'assumer des rôles, de déléguer des tâches et de partager des objectifs, un peu comme une équipe du monde réel. Voici quelques-unes des caractéristiques uniques du CrewAI :

  • Agents basés sur les rôles : nous pouvons définir des agents avec des rôles, des objectifs et des histoires spécifiques pour donner plus de contexte aux LLM avant la génération de réponses.
  • Gestion des tâches : définissez des tâches avec des outils et attribuez-les dynamiquement aux agents.
  • Délégation inter-agents : les agents peuvent déléguer des tâches à d'autres agents pour collaborer efficacement.

Vous trouverez ci-dessous une représentation de la carte mentale de CrewAI.

ÉquipageAI

Le CrewAI s'intègre parfaitement à l'écosystème Langchain. Cela signifie que nous pouvons utiliser les outils Langchain et les intégrations LLM avec CrewAI. 

Construire une équipe d’IA collaborative

Pour mieux comprendre CrewAI, créons des agents d'IA collaboratifs pour la rédaction de contenu créatif. Pour cela, nous définirons les agents, les outils et les tâches respectives pour chaque agent. Comme il s'agit d'une équipe de rédaction de contenu, nous définirons trois agents distincts, comme un analyste d'idées, un rédacteur et un éditeur. Chaque agent se verra attribuer une tâche.

L'agent analyste sera chargé d'analyser l'idée et de préparer un plan complet pour la rédaction du contenu. L'agent rédacteur préparera le brouillon de l'article et, enfin, l'éditeur sera responsable du formatage, de l'édition et de la correction du brouillon. Comme nous le savons, CrewAI nous permet d'augmenter les agents avec des outils personnalisés. Nous allons augmenter l'éditeur avec un outil pour le sauvegarder sur le disque local. Mais pour accomplir toutes ces choses, nous avons besoin d’un LLM. Ici, nous utiliserons le modèle Gemini de Google.

Passons au codage

Comme pour tout projet Python, créez un environnement virtuel et installez les dépendances. Nous aurons besoin de la bibliothèque Crewai et de l'implémentation de Langchain de Google GenAI. Vous pouvez utiliser d'autres LLM, comme les modèles en libre accès de EnsembleN'importe quelle échelle, ou des modèles OpenAI.

pip install crewai langchain-google-genai

La prochaine étape consiste à définir notre LLM et nos agents collaboratifs. Créez un fichier distinct nommé agents.py pour définir les agents.

import os

from crewai import Agent
from langchain.tools import tool
from langchain_google_genai import GoogleGenerativeAI

GOOGLE_API_KEY = "Your Key"
llm = GoogleGenerativeAI(
           model="gemini-pro", 
           google_api_key=GOOGLE_API_KEY
           )

Définissons l'outil de sauvegarde de fichiers.

class FileTools:

    @tool("Write File with content")
    def write_file(data: str):
        """Useful to write a file to a given path with a given content. 
           The input to this tool should be a pipe (|) separated text 
           of length two, representing the full path of the file, 
           including the ./lore/, and the written content you want to write to it.
        """
        try:
            path, content = data.split("|")
            path = path.replace("n", "").replace(" ", "").replace("`", "")
            if not path.startswith("./lore"):
                path = f"./lore/{path}"
            with open(path, "w") as f:
                f.write(content)
            return f"File written to {path}."
        except Exception:
            return "Error with the input format for the tool."

La méthode write_file ci-dessus est décorée avec la fonction outil de Langchain. Comme CrewAI utilise Langchain sous le capot, les outils doivent être conformes aux conventions de Langchain. La fonction attend une seule chaîne composée de deux parties, un chemin de fichier et un contenu séparé par un tube (|). Les chaînes de documentation de la méthode sont également utilisées comme contexte supplémentaire pour la fonction. Assurez-vous donc de donner des informations détaillées sur la méthode.

Définissons les agents

idea_analyst = Agent(
    role = "Idea Analyst",
    goal = "Comprehensively analyse an idea to prepare blueprints for the article to be written",
    backstory="""You are an experienced content analyst, well versed in analyzing 
    an idea and preparing a blueprint for it.""",
    llm = llm,
    verbose=True
)
writer = Agent(
    role = "Fiction Writer",
    goal = "Write compelling fantasy and sci-fi fictions from the ideas given by the analyst",
    backstory="""A renowned fiction-writer with 2 times NYT 
    a best-selling author in the fiction and sci-fi category.""",
    llm=llm,
    verbose=True
)

editor = Agent(
    role= "Content Editor",
    goal = "Edit contents written by writer",
    backstory="""You are an experienced  editor with years of 
    experience in editing books and stories.""",
    llm = llm,
    tools=[FileTools.write_file],
    verbose=True
)

Nous avons trois agents, chacun avec un rôle, un objectif et une histoire différents. Ces informations sont utilisées comme invite pour que le LLM donne plus de contexte. L’agent éditeur est associé à un outil d’écriture.

La prochaine étape consiste à définir les tâches. Pour cela, créez un autre fichier tâches.py.

from textwrap import dedent


class CreateTasks:

    def expand_idea():
        return dedent(""" Analyse the given task {idea}. Prepare comprehensive pin-points
                for accomplishing the given task.
                Make sure the ideas are to the point, coherent, and compelling.
                Make sure you abide by the rules. Don't use any tools.
                
                RULES:
                - Write ideas in bullet points.
                - Avoid adult ideas.
            """)
    def write():
        return dedent("""Write a compelling story in 1200 words based on the blueprint 
        ideas given by the Idea 
              analyst.
              Make sure the contents are coherent, easily communicable, and captivating.
               Don't use any tools.

              Make sure you abide by the rules.

              RULES:
              - Writing must be grammatically correct.
              - Use as little jargon as possible

              """)
    def edit():
        return dedent("""
    Look for any grammatical mistakes, edit, and format if needed.
    Add title and subtitles to the text when needed.
    Do not shorten the content or add comments.
    Create a suitable filename for the content with the .txt extension.
    You MUST use the tool to save it to the path ./lore/(your title.txt).
            """)

Les tâches ici sont des plans d'action détaillés que vous attendez des agents qu'ils exécutent.

Enfin, créez le fichier main.py dans lequel nous assemblons les agents et les tâches pour créer une équipe fonctionnelle.

from textwrap import dedent

from crewai import Crew, Task

from agents import editor, idea_analyst, writer
from tasks import CreateTasks


class ContentWritingCrew():
    def __init__(self, idea):
        self.idea = idea
    def __call__(self):
        tasks = self._create_tasks()
        crew = Crew(
            tasks=tasks,
            agents=[idea_analyst, writer, editor],
            verbose=True
            )
        result = crew.kickoff()
        return result

    def _create_tasks(self):
        idea = CreateTasks.expand_idea().format(idea=self.idea)
        expand_idea_task = Task(
            description=idea,
            agent = idea_analyst
        )
        write_task =  Task(
            description=CreateTasks.write(),
            agent=writer
        )
        edit_task = Task(
            description=CreateTasks.edit(),
            agent=editor
        )
        return [expand_idea_task, write_task, edit_task]

if __name__ == "__main__":
    dir = "./lore"
    if not os.path.exists(dir):
        os.mkdir(dir)
    idea = input("idea: ")
    my_crew = ContentWritingCrew(idea=idea)
    result = my_crew()
    print(dedent(result))

Dans le code ci-dessus, nous avons défini une classe ContentWritingCrew qui accepte une chaîne d'idées de l'utilisateur. La méthode _create_tasks crée des tâches. La méthode __call__ initialise et lance l'équipage. Une fois le script exécuté, vous pouvez observer la chaîne d'actions sur le terminal ou le notebook. Les tâches seront exécutées dans l'ordre défini par l'équipage. Voici un instantané du journal d'exécution.

agent final

Il s'agit du journal d'exécution de l'agent final. c'est-à-dire éditeur. Il modifie le brouillon reçu de l'agent du rédacteur et utilise l'outil d'écriture de fichiers pour enregistrer le fichier sous un nom de fichier approprié.

Il s'agit du flux de travail général pour créer des agents d'IA collaboratifs avec CrewAI. Vous pouvez associer d'autres outils Langchain ou créer des outils personnalisés avec des invites efficaces pour accomplir des tâches plus complexes.

Voici le dépôt GitHub pour les codes : sunilkumardash9/ContentWritingAgents.

Dépôt répliqué : Sunil-KumarKu17/ColllborativeAIAgent

Cas d'utilisation réels

Les agents d’IA autonomes peuvent avoir de nombreux cas d’utilisation. Des assistants personnels aux instructeurs virtuels. Voici quelques cas d’utilisation d’agents IA.

  • Assistant personnel IA: Les assistants personnels feront bientôt partie intégrante de nous. Un assistant de type Jarvis qui traite toutes vos données vous fournit des informations au fur et à mesure et gère lui-même les tâches triviales.
  • Interpréteurs de code: L'interpréteur de code d'OpenAI est un brillant exemple d'agent IA. L'interpréteur peut exécuter n'importe quel script Python et afficher les résultats en réponse à une invite de texte. C'est sans doute l'agent le plus performant à ce jour.
  • Instructeurs virtuels: À mesure que la technologie de l'IA évolue, nous pouvons nous attendre à des instructeurs virtuels dans de nombreux domaines comme l'éducation, la formation, etc.
  • Logiciel Agent d'abord: Un énorme cas d'utilisation potentiel des agents d'IA est le développement de logiciels d'agent d'abord. Au lieu de parcourir manuellement et de cliquer sur les boutons pour faire avancer les choses, les agents IA les accompliront automatiquement en fonction de commandes vocales.
  • Informatique spatiale: À mesure que la technologie AR/VR évolue, les agents IA joueront un rôle crucial pour combler le fossé entre le monde virtuel et réel.

Conclusion

Nous en sommes encore aux premiers stades du développement des agents IA. Actuellement, pour obtenir les meilleurs résultats possibles avec les agents IA, nous devons nous appuyer sur GPT-4, et cela coûte cher. Mais à mesure que les modèles open source rattraperont GPT-4, nous obtiendrons de meilleures options pour exécuter efficacement les agents d’IA à un coût raisonnable. D’un autre côté, les cadres de développement d’agents progressent rapidement. À mesure que nous progressons, les frameworks permettront aux agents d’effectuer des tâches encore plus complexes.

 Faits marquants

  • Les agents d'IA exploitent la capacité de raisonnement des LLM pour sélectionner les outils appropriés pour accomplir des tâches complexes.
  • CrewAI est un framework open source permettant de créer des agents d'IA collaboratifs.
  • La fonctionnalité unique de CrewAI comprend des agents basés sur les rôles, une délégation autonome entre agents et une gestion flexible des tâches.
  • CrewAI s'intègre parfaitement à l'écosystème Langchain existant. Nous pouvons utiliser les outils Langchain et les intégrations LLM avec CrewAI.

Foire aux Questions

T1. Que sont les agents IA ?

A. Les agents IA sont des programmes logiciels qui interagissent avec leur environnement, prennent des décisions et agissent pour atteindre un objectif final.

Q2. Quel est le meilleur LLM à utiliser avec les agents IA ?

R. Cela dépend de vos cas d’utilisation et de votre budget. GPT 4 est le plus performant mais le plus cher, tandis que les modèles GPT 3.5, Mixtral et Gemini Pro sont moins qualifiés mais rapides et bon marché.

Q3. Qu’est-ce que CrewAI ?

A. CrewAI est un framework open source pour orchestrer des agents de jeu de rôle et d'IA autonomes. Il permet de créer des agents d’IA collaboratifs pour atteindre facilement des objectifs complexes.

Q4. À quoi sert CrewAI ?

R. CrewAI fournit une abstraction de haut niveau pour créer des agents d'IA collaboratifs pour des flux de travail complexes.

Q5. Quelle est la différence entre CrewAi et Autogen ?

R. Dans Autogen, l'orchestration des interactions des agents nécessite une programmation supplémentaire, qui peut devenir complexe et fastidieuse à mesure que l'ampleur des tâches augmente.

Les médias présentés dans cet article n'appartiennent pas à Analytics Vidhya et sont utilisés à la discrétion de l'auteur.

Horodatage:

Plus de Analytique Vidhya