Construirea de agenți AI colaborativi cu CrewAI

Construirea de agenți AI colaborativi cu CrewAI

Nodul sursă: 3089434

Introducere

Dezvoltarea agenților AI este una dintre cele mai fierbinți frontiere ale inovației software. Pe măsură ce calitatea modelelor de limbaj mari evoluează, vom asista la o creștere a integrării agenților AI cu sistemele software existente. Cu agenții AI, va fi posibilă îndeplinirea sarcinilor cu comenzi vocale sau prin gesturi în loc să navigați manual prin aplicații. Dar chiar acum, dezvoltarea agenților este în stadiu incipient. Încă trecem prin faza inițială a infrastructurii, instrumentelor și dezvoltării cadrului, similar internetului din anii 1990. Deci, în acest articol, vom discuta despre un alt cadru pentru dezvoltarea agenților numit CrewAI.

Agenți AI

obiective de invatare

  • Aflați despre agenții AI.
  • Explorați CrewAI – un instrument open-source pentru agenții de construcție.
  • Creați o echipă AI colaborativă pentru scrierea conținutului.
  • Explorați cazurile de utilizare din viața reală a agenților AI.

Acest articol a fost publicat ca parte a Blogathonul științei datelor.

Cuprins

Ce sunt agenții AI?

Modelele lingvistice excelează la traducere, rezumare și raționament. Cu toate acestea, puteți face atât de multe cu ei. Una dintre modalitățile de a realiza pe deplin potențialul de raționament este de a face LLM-urile agenti. Agenții AI sunt LLM-uri îmbunătățite cu instrumentele și instrucțiunile potrivite. Acești agenți pot automatiza navigarea, eliminarea web, executarea interogărilor SQL, operațiunile cu fișiere și multe altele. Agenții folosesc capacitatea de raționament a LLM-urilor pentru a selecta un instrument bazat pe cerințele actuale. Dar, în loc să folosim un singur agent pentru o sarcină, putem aduna mulți dintre ei pentru a îndeplini sarcini complexe.

Langchain este instrumentul implicit care ne vine în minte când discutăm despre agenții AI. Cu toate acestea, orchestrarea manuală a agenților AI pentru a îndeplini sarcini de colaborare ar fi o provocare pentru Langchain. Aici intervine CrewAI.

Ce este CrewAI?

CrewAI este un cadru open-source pentru orchestrarea jocurilor de rol și a agenților AI autonomi. Ajută la crearea de agenți AI colaborativi pentru a îndeplini cu ușurință obiective complexe. Cadrul este conceput pentru a permite agenților AI să-și asume roluri, să delege sarcini și să împărtășească obiective, la fel ca un echipaj din lumea reală. Acestea sunt câteva dintre caracteristicile unice ale CrewAI:

  • Agenți bazați pe roluri: putem defini agenți cu roluri, obiective și povești de fundal specifice pentru a oferi mai mult context LLM-urilor înainte de generarea răspunsurilor.
  • Managementul sarcinilor: definiți sarcinile cu instrumente și atribuiți-le în mod dinamic agenților.
  • Delegare inter-agenți: agenții pot delega sarcini altor agenți pentru a colabora eficient.

Mai jos este o reprezentare a hărții mentale CrewAI.

CrewAI

CrewAI se integrează perfect cu ecosistemul Langchain. Aceasta înseamnă că putem folosi instrumentele Langchain și integrările LLM cu CrewAI. 

Construirea unui echipaj AI colaborativ

Pentru a înțelege mai bine CrewAI, să construim agenți colaborativi AI pentru scrierea de conținut creativ. Pentru aceasta, vom defini agenți, instrumente și sarcinile respective pentru fiecare agent. Deoarece este o echipă de scriere de conținut, vom defini trei agenți separați, cum ar fi un analist de idei, un scriitor și un editor. Fiecărui agent i se va atribui o sarcină.

Agentul analist va fi responsabil pentru analiza ideii și pregătirea unui plan cuprinzător pentru scrierea conținutului. Agentul Writer va pregăti schița pentru articol și, în final, editorul va fi responsabil pentru formatarea, editarea și corectarea schiței. După cum știm, CrewAI ne permite să creștem agenții cu instrumente personalizate. Vom mări editorul cu un instrument pentru a-l salva pe discul local. Dar pentru a realiza toate aceste lucruri, avem nevoie de un LLM. Aici, vom folosi modelul Google Gemini.

Să pătrundem în codificare

Ca și în cazul oricărui proiect Python, creați un mediu virtual și instalați dependențele. Vom avea nevoie de biblioteca Crewai și de implementarea de către Langchain Google GenAI. Puteți utiliza alte LLM-uri, cum ar fi modele cu acces deschis de la ÎmpreunăOrice scară, sau modele OpenAI.

pip install crewai langchain-google-genai

Următorul pas este să ne definim LLM și agenții colaborativi. Creați un fișier separat numit agents.py pentru a defini agenții.

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
           )

Să definim instrumentul de salvare a fișierelor.

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."

Metoda write_file de mai sus este decorată cu funcția instrument Langchain. Deoarece CrewAI folosește Langchain sub capotă, instrumentele trebuie să respecte convențiile Langchain. Funcția se așteaptă la un singur șir cu două părți, o cale de fișier și conținut separate printr-o țeavă (|). Metoda șirurile de documente sunt, de asemenea, folosite ca context adăugat pentru funcție. Deci, asigurați-vă că oferiți informații detaliate despre metodă.

Să definim agenții

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
)

Avem trei agenți, fiecare cu un rol, un scop și o poveste de fundal diferită. Aceste informații sunt folosite ca un prompt pentru ca LLM să ofere mai mult context. Agentul editor are asociat un instrument de scriere.

Următorul lucru este să definiți sarcinile. Pentru aceasta, creați un fișier diferit tasks.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).
            """)

Sarcinile de aici sunt planuri de acțiune detaliate pe care vă așteptați să le îndeplinească agenții.

În cele din urmă, creați fișierul main.py unde asamblam agenții și sarcinile pentru a crea un echipaj funcțional.

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

În codul de mai sus, am definit o clasă ContentWritingCrew care acceptă un șir de idei de la utilizator. Metoda _create_tasks creează sarcini. Metoda __call__ inițializează și dă startul echipajului. Odată ce rulați scriptul, puteți observa lanțul de acțiuni pe terminal sau notebook. Sarcinile vor fi executate în ordinea în care sunt definite de echipaj. Iată un instantaneu al jurnalului de execuție.

agent final

Acesta este jurnalul de execuție pentru agentul final. adică Editor. Editează schița primită de la agentul scriitorului și folosește instrumentul de scriere a fișierelor pentru a salva fișierul cu un nume de fișier adecvat.

Acesta este fluxul de lucru general pentru crearea de agenți AI colaborativi cu CrewAI. Puteți asocia alte instrumente Langchain sau puteți crea instrumente personalizate cu indicații eficiente pentru a îndeplini sarcini mai complexe.

Iată depozitul GitHub pentru coduri: sunilkumardash9/ContentWritingAgents.

Replicare depozit: Sunil-KumarKu17/CollborativeAIAgent

Cazuri de utilizare din lumea reală

Agenții AI autonomi pot avea o mulțime de cazuri de utilizare. De la asistenți personali la instructori virtuali. Iată câteva cazuri de utilizare ale agenților AI.

  • Asistent personal AI: Asistenții personali vor fi o parte integrantă a noastră în curând. Un asistent asemănător Jarvis, care vă prelucrează toate datele, vă oferă o perspectivă pe măsură ce mergeți și gestionează singur sarcinile banale.
  • Interpreți de coduri: Interpretul de cod al OpenAI este un exemplu genial de agent AI. Interpretul poate rula orice script Python și poate scoate rezultatele ca răspuns la un prompt text. Acesta este, probabil, cel mai de succes agent de până acum.
  • Instructori virtuali: Pe măsură ce tehnologia AI evoluează, ne putem aștepta la instructori virtuali în multe domenii precum educație, formare etc.
  • Agent primul software: Un caz potențial de utilizare uriaș al agenților AI este dezvoltarea de software pentru primul agent. În loc să răsfoiască manual și să facă clic pe butoane pentru a finaliza lucrurile, agenții AI le vor realiza automat pe baza comenzilor vocale.
  • Calcul spațial: Pe măsură ce tehnologia AR/VR evoluează, agenții AI vor juca un rol crucial în reducerea decalajului dintre lumea virtuală și cea reală.

Concluzie

Suntem încă în fazele incipiente ale dezvoltării agenților AI. În prezent, pentru cel mai bun rezultat posibil de la agenții AI, trebuie să ne bazăm pe GPT-4 și este costisitor. Dar, pe măsură ce modelele open-source ajung la GPT-4, vom obține opțiuni mai bune pentru a rula agenți AI în mod eficient, la un cost rezonabil. Pe de altă parte, cadrele pentru dezvoltarea agenților progresează rapid. Pe măsură ce avansăm, cadrele vor permite agenților să efectueze sarcini și mai complexe.

 Intrebari cu cheie

  • Agenții AI valorifică capacitatea de raționament a LLM pentru a selecta instrumentele adecvate pentru a îndeplini sarcini complexe.
  • CrewAI este un cadru open-source pentru construirea de agenți AI colaborativi.
  • Caracteristica unică a CrewAI include agenți bazați pe roluri, delegare autonomă între agenți și management flexibil al sarcinilor.
  • CrewAI se integrează perfect cu ecosistemul Langchain existent. Putem folosi instrumente Langchain și integrări LLM cu CrewAI.

Întrebări Frecvente

Î1. Ce sunt agenții AI?

A. Agenții AI sunt programe software care interacționează cu mediul lor, iau decizii și acționează pentru a atinge un obiectiv final.

Î2. Care este cel mai bun LLM de utilizat cu agenții AI?

R. Acest lucru depinde de cazurile de utilizare și de buget. GPT 4 este cel mai capabil, dar mai scump, în timp ce modelele GPT 3.5, Mixtral și Gemini Pro sunt mai puțin calificate, dar rapide și ieftine.

Q3. Ce este CrewAI?

A. CrewAI este un cadru open-source pentru orchestrarea jocurilor de rol și a agenților AI autonomi. Ajută la crearea de agenți AI colaborativi pentru a îndeplini cu ușurință obiective complexe.

Î4. Pentru ce se folosește CrewAI?

A. CrewAI oferă o abstractizare la nivel înalt pentru construirea de agenți AI colaborativi pentru fluxuri de lucru complexe.

Î5. Care este diferența dintre CrewAi și Autogen?

A. În Autogen, orchestrarea interacțiunilor agenților necesită programare suplimentară, care poate deveni complexă și greoaie pe măsură ce scara sarcinilor crește.

Media prezentată în acest articol nu este deținută de Analytics Vidhya și este utilizată la discreția Autorului.

Timestamp-ul:

Mai mult de la Analize Vidhya