Ustvarjanje sodelujočih agentov AI z CrewAI

Ustvarjanje sodelujočih agentov AI z CrewAI

Izvorno vozlišče: 3089434

Predstavitev

Razvoj agentov AI je ena najbolj vročih meja inovacij programske opreme. Ko se kakovost velikih jezikovnih modelov razvija, bomo priča porastu integracije agentov AI z obstoječimi programskimi sistemi. Z agenti AI bo mogoče naloge opravljati z glasovnimi ukazi ali ukazi s kretnjami namesto ročnega krmarjenja po aplikacijah. Toda trenutno je razvoj agentov v začetni fazi. Še vedno gremo skozi začetno fazo razvoja infrastrukture, orodij in ogrodja, podobno kot internet v devetdesetih. Torej, v tem članku bomo razpravljali o drugem okviru za razvoj agentov, imenovanem CrewAI.

Agenti AI

Učni cilji

  • Spoznajte agente AI.
  • Raziščite CrewAI – odprtokodno orodje za gradnjo agentov.
  • Zgradite sodelujočo ekipo AI za pisanje vsebine.
  • Raziščite primere uporabe agentov AI v resničnem življenju.

Ta članek je bil objavljen kot del Blogaton podatkovne znanosti.

Kazalo

Kaj so agenti AI?

Jezikovni modeli so odlični pri prevajanju, povzemanju in sklepanju. Vendar pa lahko z njimi naredite veliko. Eden od načinov za popolno uresničitev potenciala sklepanja je, da LLM postanejo agenti. Agenti umetne inteligence so LLM-ji, obogateni s pravimi orodji in pozivi. Ti agenti lahko avtomatizirajo brskanje, brskanje po spletu, izvajanje poizvedb SQL, operacije datotek in drugo. Agenti uporabljajo zmožnost razmišljanja LLM-jev, da izberejo orodje na podlagi trenutnih zahtev. Toda namesto da bi za nalogo uporabili enega samega agenta, jih lahko združimo več, da opravimo zapletene naloge.

Langchain je privzeto orodje, ki pride na misel, ko govorimo o agentih AI. Vendar pa bi bilo ročno usmerjanje agentov AI za izvajanje sodelovalnih nalog izziv z Langchainom. Tu nastopi CrewAI.

Kaj je CrewAI?

CrewAI je odprtokodno ogrodje za orkestriranje igranja vlog in avtonomnih agentov AI. Pomaga ustvariti sodelujoče agente AI za enostavno doseganje zapletenih ciljev. Ogrodje je zasnovano tako, da agentom AI omogoča prevzemanje vlog, delegiranje nalog in skupno rabo ciljev, podobno kot posadka v resničnem svetu. To je nekaj edinstvenih lastnosti CrewAI:

  • Agenti, ki temeljijo na vlogah: Agente lahko definiramo s posebnimi vlogami, cilji in zgodbami, da damo več konteksta LLM-jem pred ustvarjanjem odgovora.
  • Upravljanje opravil: Določite opravila z orodji in jih dinamično dodelite agentom.
  • Delegiranje med agenti: Agenti lahko prenesejo naloge na druge agente za učinkovito sodelovanje.

Spodaj je predstavitev miselne karte CrewAI.

CrewAI

CrewAI se brezhibno integrira z ekosistemom Langchain. To pomeni, da lahko uporabljamo orodja Langchain in integracije LLM s CrewAI. 

Ustvarjanje sodelovalne ekipe AI

Da bi bolje razumeli CrewAI, zgradimo sodelujoče agente AI za kreativno pisanje vsebine. Za to bomo definirali agente, orodja in zadevne naloge za vsakega agenta. Ker gre za ekipo za pisanje vsebine, bomo definirali tri ločene agente, kot so analitik idej, pisec in urednik. Vsakemu agentu bo dodeljena naloga.

Agent analitik bo odgovoren za analizo ideje in pripravo celovitega načrta za pisanje vsebine. Agent Writer bo pripravil osnutek za članek, na koncu pa bo urednik odgovoren za oblikovanje, urejanje in popravljanje osnutka. Kot vemo, nam CrewAI omogoča razširitev agentov z orodji po meri. Urejevalnik bomo dopolnili z orodjem za shranjevanje na lokalni disk. Toda za dosego vseh teh stvari potrebujemo LLM. Tukaj bomo uporabili Googlov model Gemini.

Poglobimo se v kodiranje

Kot pri vsakem projektu Python ustvarite virtualno okolje in namestite odvisnosti. Potrebovali bomo knjižnico Crewai in Langchainovo izvedbo Google GenAI. Uporabite lahko druge LLM-je, kot so modeli z odprtim dostopom iz skupajKatera koli lestvica, ali modeli OpenAI.

pip install crewai langchain-google-genai

Naslednji korak je opredelitev naših LLM in sodelujočih agentov. Ustvarite ločeno datoteko z imenom agents.py, da definirate agente.

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
           )

Opredelimo orodje za shranjevanje datotek.

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

Zgornja metoda write_file je okrašena s funkcijo orodja Langchain. Ker CrewAI uporablja Langchain pod pokrovom, morajo biti orodja v skladu s konvencijami Langchaina. Funkcija pričakuje en sam niz z dvema deloma, potjo do datoteke in vsebino, ločeno s cevjo (|). Nizi dokumenta metode se uporabljajo tudi kot dodan kontekst za funkcijo. Zato zagotovite podrobne informacije o metodi.

Opredelimo zastopnike

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
)

Imamo tri agente, vsakega z drugačno vlogo, ciljem in zgodovino. Te informacije se uporabljajo kot poziv za LLM, da poda več konteksta. Agent urejevalnika ima povezano orodje za pisanje.

Naslednja stvar je opredelitev nalog. Za to ustvarite drugo datoteko 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).
            """)

Naloge tukaj so podrobni akcijski načrti, ki jih pričakujete od agentov.

Na koncu ustvarite datoteko main.py, kjer sestavimo agente in naloge, da ustvarimo funkcionalno ekipo.

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

V zgornji kodi smo definirali razred ContentWritingCrew, ki od uporabnika sprejme idejni niz. Metoda _create_tasks ustvari naloge. Metoda __call__ inicializira in zažene posadko. Ko zaženete skript, lahko opazujete verigo dejanj na terminalu ali prenosnem računalniku. Naloge se bodo izvajale po vrstnem redu, ki ga določi posadka. Tukaj je posnetek dnevnika izvajanja.

končni agent

To je dnevnik izvajanja za končnega posrednika. tj urednik. Ureja osnutek, prejet od agenta pisca, in uporablja orodje za pisanje datotek, da datoteko shrani z ustreznim imenom datoteke.

To je splošni potek dela za ustvarjanje sodelujočih agentov AI s CrewAI. Lahko združite druga orodja Langchain ali ustvarite orodja po meri z učinkovitimi pozivi za izvajanje bolj zapletenih nalog.

Tukaj je repozitorij GitHub za kode: sunilkumardash9/ContentWritingAgents.

Replit repozitorij: Sunil-KumarKu17/CollborativeAIAgent

Primeri uporabe v resničnem svetu

Avtonomni agenti AI imajo lahko veliko primerov uporabe. Od osebnih asistentov do virtualnih inštruktorjev. Tukaj je nekaj primerov uporabe agentov AI.

  • Osebni pomočnik AI: Osebni asistenti bodo kmalu sestavni del nas. Pomočnik, podoben Jarvisu, ki obdeluje vse vaše podatke, zagotavlja vpogled sproti in sam obravnava trivialne naloge.
  • Tolmači kod: Tolmač kode OpenAI je odličen primer agenta AI. Tolmač lahko zažene kateri koli skript Python in izpiše rezultate kot odgovor na besedilni poziv. To je verjetno najuspešnejši agent doslej.
  • Virtualni inštruktorji: Ko se tehnologija umetne inteligence razvija, lahko pričakujemo virtualne inštruktorje na številnih področjih, kot so izobraževanje, usposabljanje itd.
  • Programska oprema Agent First: Ogromen potencialni primer uporabe agentov AI je razvoj programske opreme agenta. Namesto ročnega brskanja in klikanja gumbov, da bi opravili stvari, jih bodo agenti AI samodejno izvedli na podlagi glasovnih ukazov.
  • Prostorsko računalništvo: Ko se tehnologija AR/VR razvija, bodo imeli agenti AI ključno vlogo pri premoščanju vrzeli med virtualnim in resničnim svetom.

zaključek

Še vedno smo v zgodnjih fazah razvoja agenta AI. Trenutno se moramo za najboljši možni rezultat agentov AI zanašati na GPT-4, ki je drag. Toda ko bodo odprtokodni modeli dosegli GPT-4, bomo dobili boljše možnosti za učinkovito izvajanje agentov AI po razumni ceni. Po drugi strani pa okviri za razvoj agentov hitro napredujejo. Ko gremo naprej, bodo ogrodja omogočala agentom izvajanje še bolj zapletenih nalog.

 Ključni izdelki

  • Agenti umetne inteligence izkoristijo zmožnost razmišljanja LLM-jev, da izberejo ustrezna orodja za izpolnjevanje zapletenih nalog.
  • CrewAI je odprtokodno ogrodje za ustvarjanje sodelujočih agentov AI.
  • Edinstvena funkcija CrewAI vključuje agente na podlagi vlog, avtonomno delegiranje med agenti in prilagodljivo upravljanje nalog.
  • CrewAI se neopazno integrira z obstoječim ekosistemom Langchain. Uporabljamo lahko orodja Langchain in integracije LLM s CrewAI.

Pogosto zastavljena vprašanja

Q1. Kaj so agenti AI?

A. Agenti umetne inteligence so programski programi, ki komunicirajo s svojim okoljem, sprejemajo odločitve in delujejo za dosego končnega cilja.

Q2. Kateri je najboljši LLM za uporabo z agenti AI?

A. To je odvisno od vaših primerov uporabe in proračuna. GPT 4 je najzmogljivejši, a drag, medtem ko so modeli GPT 3.5, Mixtral in Gemini Pro manj kvalificirani, a hitri in poceni.

Q3. Kaj je CrewAI?

A. CrewAI je odprtokodno ogrodje za orkestriranje igranja vlog in avtonomnih agentov AI. Pomaga ustvariti sodelujoče agente AI za enostavno doseganje zapletenih ciljev.

Q4. Za kaj se uporablja CrewAI?

A. CrewAI zagotavlja visokonivojsko abstrakcijo za ustvarjanje sodelujočih agentov AI za kompleksne poteke dela.

V5. Kakšna je razlika med CrewAi in Autogen?

A. V Autogenu je za orkestriranje interakcij agentov potrebno dodatno programiranje, ki lahko postane zapleteno in okorno, ko se obseg nalog povečuje.

Mediji, prikazani v tem članku, niso v lasti Analytics Vidhya in se uporabljajo po lastni presoji avtorja.

Časovni žig:

Več od Analitika Vidhya