Koostöövõimeliste AI-agentide loomine CrewAI-ga

Koostöövõimeliste AI-agentide loomine CrewAI-ga

Allikasõlm: 3089434

Sissejuhatus

AI-agendi arendamine on tarkvarainnovatsiooni üks kuumemaid piire. Kuna suurte keelemudelite kvaliteet areneb, oleme tunnistajaks tehisintellekti agentide integreerimisele olemasolevate tarkvarasüsteemidega. AI-agentidega on rakendustes käsitsi navigeerimise asemel võimalik ülesandeid täita hääl- või žestikäsklustega. Kuid praegu on agentide arendamine alles kujunemisjärgus. Oleme endiselt läbimas infrastruktuuri, tööriistade ja raamistiku arendamise algfaasi, sarnaselt 1990. aastate Internetile. Seega käsitleme selles artiklis teist agentide arendamise raamistikku nimega CrewAI.

AI agendid

õppe eesmärgid

  • Lisateavet tehisintellekti agentide kohta.
  • Avastage CrewAI – avatud lähtekoodiga tööriist ehitusagentidele.
  • Looge sisu kirjutamiseks koostööd tegev AI meeskond.
  • Avastage tehisintellekti agentide tegelikke kasutusjuhtumeid.

See artikkel avaldati osana Andmeteaduse ajaveebi.

Sisukord

Mis on AI agendid?

Keelemudelid on suurepärased tõlkimise, kokkuvõtete tegemise ja arutlemise osas. Samas saab nendega nii mõndagi ära teha. Üks viise, kuidas arutluspotentsiaali täielikult realiseerida, on muuta LLM-id agendiks. AI agendid on LLM-id, mida on täiendatud õigete tööriistade ja viipadega. Need agendid saavad automatiseerida sirvimist, veebi väljalõikamist, SQL-päringu täitmist, failitoiminguid ja palju muud. Agendid kasutavad LLM-ide arutlusvõimet, et valida tööriist praeguste nõuete alusel. Kuid selle asemel, et kasutada ülesande jaoks ühte agenti, saame paljud neist keerukate ülesannete täitmiseks koondada.

Langchain on vaiketööriist, mis AI agentide üle arutledes meelde tuleb. Kuid AI-agentide käsitsi korraldamine koostööülesannete täitmiseks oleks Langchainiga keeruline. Siin tuleb pildile CrewAI.

Mis on CrewAI?

CrewAI on avatud lähtekoodiga raamistik rollimängude ja autonoomsete tehisintellekti agentide korraldamiseks. See aitab luua koostööl põhinevaid tehisintellekti agente, et täita keerulisi eesmärke hõlpsalt. Raamistik on loodud selleks, et võimaldada tehisintellekti agentidel võtta endale rolle, delegeerida ülesandeid ja jagada eesmärke sarnaselt reaalse meeskonnaga. Need on mõned CrewAI ainulaadsed omadused:

  • Rollipõhised agendid: saame määratleda konkreetsete rollide, eesmärkide ja taustaga agente, et anda LLM-idele enne vastuse genereerimist rohkem konteksti.
  • Ülesandehaldus: määrake ülesanded tööriistadega ja määrake need dünaamiliselt agentidele.
  • Agentidevaheline delegeerimine: agendid saavad tõhusaks koostööks delegeerida ülesandeid teistele agentidele.

Allpool on CrewAI mõttekaardi esitus.

CrewAI

CrewAI sulandub sujuvalt Langchaini ökosüsteemiga. See tähendab, et saame kasutada Langchaini tööriistu ja LLM-i integratsioone CrewAI-ga. 

Koostöölise AI meeskonna loomine

CrewAI paremaks mõistmiseks loome loomingulise sisu kirjutamiseks koostöös tehisintellekti agente. Selleks määratleme iga agendi jaoks agendid, tööriistad ja vastavad ülesanded. Kuna tegemist on sisu kirjutamise meeskonnaga, määratleme kolm eraldi agenti, nagu ideeanalüütik, kirjanik ja toimetaja. Igale agendile määratakse ülesanne.

Analüütiku agent vastutab idee analüüsimise ja sisu kirjutamiseks põhjaliku kavandi koostamise eest. Kirjaniku agent valmistab ette artikli mustandi ja lõpuks vastutab toimetaja mustandi vormindamise, toimetamise ja parandamise eest. Nagu me teame, võimaldab CrewAI meil agente kohandatud tööriistadega täiendada. Täiendame redaktorit tööriistaga, mis salvestab selle kohalikule kettale. Kuid kõigi nende asjade saavutamiseks vajame LLM-i. Siin kasutame Google'i Gemini mudelit.

Süveneme kodeerimisse

Nagu iga Pythoni projekti puhul, looge virtuaalne keskkond ja installige sõltuvused. Vajame Crewai raamatukogu ja Langchaini rakendust Google GenAI. Saate kasutada teisi LLM-e, näiteks avatud juurdepääsuga mudeleid KokkuMis tahes skaalavõi OpenAI mudelid.

pip install crewai langchain-google-genai

Järgmine samm on meie LLM-i ja koostööagentide määratlemine. Agentide määratlemiseks looge eraldi fail nimega agents.py.

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
           )

Määratleme faili salvestamise tööriista.

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

Ülaltoodud meetod write_file on kaunistatud Langchaini tööriista funktsiooniga. Kuna CrewAI kasutab kapoti all Langchaini, peavad tööriistad vastama Langchaini tavadele. Funktsioon eeldab ühte stringi, millel on kaks osa, failitee ja sisu, mis on eraldatud toruga (|). Funktsiooni lisakontekstina kasutatakse ka meetodi doc stringe. Seega andke kindlasti meetodi kohta üksikasjalik teave.

Määratleme agendid

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
)

Meil on kolm agenti, igaühel erinev roll, eesmärk ja taust. Seda teavet kasutatakse LLM-i viipana, et anda rohkem konteksti. Toimetajaagendiga on seotud kirjutustööriist.

Järgmine asi on ülesannete määratlemine. Selleks looge muu fail task.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).
            """)

Siin esitatud ülesanded on üksikasjalikud tegevusplaanid, mida agentidelt ootate.

Lõpuks looge fail main.py, kuhu koondame funktsionaalse meeskonna loomiseks agendid ja ülesanded.

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

Ülaltoodud koodis määratlesime klassi ContentWritingCrew, mis aktsepteerib kasutaja ideestringi. Meetod _create_tasks loob ülesanded. Meetod __call__ initsialiseerib ja käivitab meeskonna. Kui olete skripti käivitanud, saate terminalis või sülearvutis jälgida toimingute ahelat. Ülesanded täidetakse meeskonna poolt määratud järjekorras. Siin on täitmislogi hetktõmmis.

lõppagent

See on lõpliku agendi täitmislogi. st Toimetaja. See redigeerib kirjutaja agendilt saadud mustandit ja kasutab faili kirjutamise tööriista, et salvestada fail sobiva failinimega.

See on CrewAI-ga koostööd tegevate AI-agentide loomise üldine töövoog. Saate siduda teisi Langchaini tööriistu või luua kohandatud tööriistu tõhusa viipaga keerukamate ülesannete täitmiseks.

Siin on koodide GitHubi hoidla: sunilkumardash9/ContentWritingAgents.

Repositoorium uuesti: Sunil-KumarKu17/CollborativeAIAgent

Reaalse maailma kasutusjuhtumid

Autonoomsetel AI-agentidel võib olla palju kasutusjuhtumeid. Isiklikest assistentidest virtuaalsete juhendajateni. Siin on mõned AI-agentide kasutusjuhtumid.

  • Isiklik AI assistent: Isiklikud abistajad on peagi meie lahutamatu osa. Jarvise-sarnane assistent, mis töötleb kõiki teie andmeid, annab ülevaate töö käigus ja tegeleb triviaalsete ülesannetega ise.
  • Kooditõlgid: OpenAI kooditõlk on AI agendi suurepärane näide. Tõlk võib käivitada mis tahes Pythoni skripti ja väljastada tulemused vastusena tekstiviipale. See on vaieldamatult seni edukaim agent.
  • Virtuaalsed juhendajad: AI tehnoloogia arenedes võime oodata virtuaalseid juhendajaid paljudes valdkondades, nagu haridus, koolitus jne.
  • Tarkvara agent esimene: Tehisintellekti agentide suur kasutusvõimalus on agentide esimeses tarkvaraarenduses. Asjade tegemiseks käsitsi sirvimise ja nuppude klõpsamise asemel teevad AI agendid need automaatselt häälkäskluste alusel.
  • Ruumiline andmetöötlus: AR/VR-tehnoloogia arenedes mängivad tehisintellekti agendid otsustavat rolli virtuaalse ja reaalse maailma vahelise lõhe ületamisel.

Järeldus

Oleme AI-agendi arendamise algusjärgus. Praegu peame tehisintellekti agentide parima võimaliku tulemuse saavutamiseks toetuma GPT-4-le ja see on kallis. Kuid kuna avatud lähtekoodiga mudelid jõuavad GPT-4-le, saame paremaid võimalusi tehisintellekti agentide tõhusaks käitamiseks mõistliku kuluga. Teisest küljest arenevad agentide arendamise raamistikud kiiresti. Edasi liikudes võimaldavad raamistikud agentidel täita veelgi keerukamaid ülesandeid.

 Võtme tagasivõtmine

  • AI agendid kasutavad LLM-ide arutlusvõimet, et valida sobivaid tööriistu keerukate ülesannete täitmiseks.
  • CrewAI on avatud lähtekoodiga raamistik koostöövõimeliste tehisintellekti agentide loomiseks.
  • CrewAI ainulaadne funktsioon hõlmab rollipõhiseid agente, autonoomset agentidevahelist delegeerimist ja paindlikku ülesannete haldamist.
  • CrewAI integreerub sujuvalt olemasoleva Langchaini ökosüsteemiga. CrewAI-ga saame kasutada Langchaini tööriistu ja LLM-i integratsioone.

Korduma kippuvad küsimused

Q1. Mis on AI agendid?

V. AI agendid on tarkvaraprogrammid, mis suhtlevad oma keskkonnaga, teevad otsuseid ja tegutsevad lõppeesmärgi saavutamiseks.

Q2. Milline on parim LLM AI-agentidega kasutamiseks?

V. See sõltub teie kasutusjuhtudest ja eelarvest. GPT 4 on kõige võimekam, kuid kallim, samas kui GPT 3.5, Mixtral ja Gemini Pro mudelid on vähem kvalifitseeritud, kuid kiired ja odavad.

Q3. Mis on CrewAI?

A. CrewAI on avatud lähtekoodiga raamistik rollimängude ja autonoomsete tehisintellekti agentide korraldamiseks. See aitab luua koostööd tegevaid tehisintellekti agente, et täita keerulisi eesmärke hõlpsalt.

Q4. Milleks CrewAI-d kasutatakse?

A. CrewAI pakub kõrgetasemelist abstraktsiooni keerukate töövoogude jaoks koostöötavate tehisintellekti agentide loomiseks.

K5. Mis vahe on CrewAil ja Autogenil?

V. Autogenis nõuab agentide interaktsioonide korraldamine täiendavat programmeerimist, mis võib ülesannete ulatuse kasvades muutuda keeruliseks ja tülikaks.

Selles artiklis näidatud meedia ei kuulu Analytics Vidhyale ja seda kasutatakse autori äranägemisel.

Ajatempel:

Veel alates Analüütika Vidhya