Opbygning af kollaborative AI-agenter med CrewAI

Opbygning af kollaborative AI-agenter med CrewAI

Kildeknude: 3089434

Introduktion

AI-agentudvikling er en af ​​de hotteste grænser for softwareinnovation. Efterhånden som kvaliteten af ​​store sprogmodeller udvikler sig, vil vi opleve en stigning i AI-agentintegration med eksisterende softwaresystemer. Med AI-agenter vil det være muligt at udføre opgaver med stemme- eller gestuskommandoer i stedet for manuelt at navigere gennem applikationer. Men lige nu er agentudviklingen i sin begyndelse. Vi gennemgår stadig den indledende fase af udvikling af infrastruktur, værktøjer og rammer, svarende til internettet i 1990'erne. Så i denne artikel vil vi diskutere en anden ramme for agentudvikling kaldet CrewAI.

AI-agenter

Læringsmål

  • Lær om AI-agenter.
  • Udforsk CrewAI – et open source-værktøj til byggeagenter.
  • Byg et samarbejdende AI-hold til at skrive indhold.
  • Udforsk real-life use cases af AI-agenter.

Denne artikel blev offentliggjort som en del af Data Science Blogathon.

Indholdsfortegnelse

Hvad er AI-agenter?

Sprogmodellerne udmærker sig ved oversættelse, opsummering og ræsonnement. Du kan dog gøre så meget med dem. En af måderne til fuldt ud at realisere ræsonnementspotentialet er at gøre LLM'er agenter. AI-agenterne er LLM'er udvidet med de rigtige værktøjer og prompter. Disse agenter kan automatisere browsing, web-scrapping, udførelse af SQL-forespørgsler, filhandlinger og mere. Agenterne bruger LLM'ernes begrundelseskapacitet til at vælge et værktøj baseret på aktuelle krav. Men i stedet for at bruge en enkelt agent til en opgave, kan vi samle mange af dem til at udføre komplekse opgaver.

Langchain er standardværktøjet, der kommer til at tænke på, når man diskuterer AI-agenter. Det ville dog være en udfordring med Langchain at manuelt orkestrere AI-agenter til at udføre samarbejdsopgaver. Det er her, CrewAI kommer ind i billedet.

Hvad er CrewAI?

CrewAI er en open source-ramme til orkestrering af rollespil og autonome AI-agenter. Det hjælper med at skabe kollaborative AI-agenter for at opnå komplekse mål med lethed. Rammerne er designet til at gøre det muligt for AI-agenter at påtage sig roller, uddelegere opgaver og dele mål, ligesom en besætning i den virkelige verden. Dette er nogle af de unikke egenskaber ved CrewAI:

  • Rollebaserede agenter: Vi kan definere agenter med specifikke roller, mål og baggrundshistorier for at give mere kontekst til LLM'er før svargenerering.
  • Opgavestyring: Definer opgaver med værktøjer og tildel dem dynamisk til agenter.
  • Delegering mellem agenter: Agenterne kan uddelegere opgaver til andre agenter for at samarbejde effektivt.

Nedenfor er en repræsentation af CrewAI-tankekortet.

CrewAI

CrewAI integreres problemfrit med Langchain-økosystemet. Det betyder, at vi kan bruge Langchain-værktøjerne og LLM-integrationerne med CrewAI. 

Opbygning af et kollaborativt AI-hold

For at forstå CrewAI bedre, lad os bygge kollaborative AI-agenter til kreativ indholdsskrivning. Til dette vil vi definere agenter, værktøjer og de respektive opgaver for hver agent. Da det er et team til indholdsskrivning, vil vi definere tre separate agenter, såsom en idéanalytiker, en forfatter og en redaktør. Hver agent vil blive tildelt en opgave.

Analytikeragenten vil være ansvarlig for at analysere ideen og udarbejde en omfattende plan for at skrive indholdet. Writer-agenten vil forberede udkastet til artiklen, og endelig vil redaktøren være ansvarlig for at formatere, redigere og rette udkastet. Som vi ved, lader CrewAI os udvide agenter med brugerdefinerede værktøjer. Vi vil udvide editoren med et værktøj til at gemme den på den lokale disk. Men for at opnå alle disse ting, har vi brug for en LLM. Her vil vi bruge Googles Gemini-model.

Lad os dykke ned i kodningen

Som med ethvert Python-projekt skal du oprette et virtuelt miljø og installere afhængighederne. Vi skal bruge Crewai-biblioteket og Langchains implementering af Google GenAI. Du kan bruge andre LLM'er, såsom open-access-modeller fra SammenEnhver skala, eller OpenAI-modeller.

pip install crewai langchain-google-genai

Det næste trin er at definere vores LLM og samarbejdsagenter. Opret en separat fil med navnet agents.py for at definere agenter.

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
           )

Lad os definere fillagringsværktøjet.

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

Ovenstående write_file metode er dekoreret med Langchains værktøjsfunktion. Da CrewAI bruger Langchain under motorhjelmen, skal værktøjerne overholde Langchains konventioner. Funktionen forventer en enkelt streng med to dele, en filsti og indhold adskilt af et rør (|). Metodens doc-strenge bruges også som tilføjet kontekst til funktionen. Så sørg for at give detaljerede oplysninger om metoden.

Lad os definere agenterne

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
)

Vi har tre agenter med hver deres rolle, mål og baggrund. Disse oplysninger bruges som en prompt for LLM for at give mere kontekst. Redaktøren har et skriveværktøj tilknyttet.

Den næste ting er at definere opgaver. Til dette skal du oprette en anden fil 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).
            """)

Opgaverne her er detaljerede handlingsplaner, du forventer, at agenterne udfører.

Til sidst skal du oprette main.py-filen, hvor vi samler agenter og opgaver for at skabe en funktionel besætning.

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

I ovenstående kode definerede vi en ContentWritingCrew-klasse, der accepterer en idéstreng fra brugeren. Metoden _create_tasks opretter opgaver. __call__ metoden initialiserer og starter besætningen. Når du har kørt scriptet, kan du observere kæden af ​​handlinger på terminalen eller notesbogen. Opgaverne vil blive udført i den rækkefølge, de er defineret af besætningen. Her er et øjebliksbillede af udførelsesloggen.

endelig agent

Dette er udførelsesloggen for den endelige agent. dvs. redaktør. Den redigerer udkastet modtaget fra forfatterens agent og bruger filskrivningsværktøjet til at gemme filen med et passende filnavn.

Dette er den generelle arbejdsgang til oprettelse af kollaborative AI-agenter med CrewAI. Du kan parre andre Langchain-værktøjer eller oprette brugerdefinerede værktøjer med effektiv prompt for at udføre mere komplekse opgaver.

Her er GitHub-lageret for koderne: sunilkumardash9/ContentWritingAgents.

Genoplyst lager: Sunil-KumarKu17/CollborativeAIAgent

Brugssager fra den virkelige verden

Autonome AI-agenter kan have mange use cases. Fra personlige assistenter til virtuelle instruktører. Her er et par eksempler på brug af AI-agenter.

  • Personlig AI-assistent: Personlige assistenter bliver snart en integreret del af os. En Jarvis-lignende assistent, der behandler alle dine data, giver indsigt, mens du går, og håndterer trivielle opgaver af sig selv.
  • Kode tolke: OpenAIs kodefortolker er et strålende eksempel på en AI-agent. Fortolkeren kan køre ethvert Python-script og udlæse resultaterne som svar på en tekstprompt. Dette er uden tvivl den mest succesrige agent til dato.
  • Virtuelle instruktører: Efterhånden som AI-teknologien udvikler sig, kan vi forvente virtuelle instruktører inden for mange områder som uddannelse, træning osv.
  • Agent First Software: Et enormt potentielt anvendelsestilfælde af AI-agenter er i agent-første softwareudvikling. I stedet for manuelt at gennemse og klikke på knapper for at få tingene gjort, vil AI-agenter automatisk udføre dem baseret på stemmekommandoer.
  • Spatial Computing: Efterhånden som AR/VR-teknologien udvikler sig, vil AI-agenter spille en afgørende rolle i at bygge bro mellem den virtuelle og den virkelige verden.

Konklusion

Vi er stadig i de tidlige stadier af AI-agentudvikling. I øjeblikket er vi nødt til at stole på GPT-4 for at få det bedst mulige resultat fra AI-agenter, og det er dyrt. Men efterhånden som open source-modellerne indhenter GPT-4, vil vi få bedre muligheder for at køre AI-agenter effektivt til en rimelig pris. På den anden side skrider rammerne for agentudvikling hurtigt frem. Efterhånden som vi bevæger os fremad, vil rammerne gøre det muligt for agenter at udføre endnu mere komplekse opgaver.

 Nøgleforsøg

  • AI-agenter udnytter LLM'ers ræsonnementkapacitet til at vælge passende værktøjer til at udføre komplekse opgaver.
  • CrewAI er en open source-ramme til opbygning af kollaborative AI-agenter.
  • Den unikke egenskab ved CrewAI inkluderer rollebaserede agenter, autonom uddelegering mellem agenter og fleksibel opgavestyring.
  • CrewAI integreres problemfrit med det eksisterende Langchain-økosystem. Vi kan bruge Langchain-værktøjer og LLM-integrationer med CrewAI.

Ofte stillede spørgsmål

Q1. Hvad er AI-agenter?

A. AI-agenter er softwareprogrammer, der interagerer med deres omgivelser, træffer beslutninger og handler for at nå et slutmål.

Q2. Hvad er den bedste LLM at bruge med AI-agenter?

A. Dette afhænger af dine use cases og budget. GPT 4 er den mest dygtige, men dyre, mens GPT 3.5-, Mixtral- og Gemini Pro-modellerne er mindre kvalificerede, men hurtige og billige.

Q3. Hvad er CrewAI?

A. CrewAI er en open source-ramme til orkestrering af rollespil og autonome AI-agenter. Det hjælper med at skabe kollaborative AI-agenter for at opnå komplekse mål med lethed.

Q4. Hvad bruges CrewAI til?

A. CrewAI giver en abstraktion på højt niveau til at bygge kollaborative AI-agenter til komplekse arbejdsgange.

Q5. Hvad er forskellen mellem CrewAi og Autogen?

A. I Autogen kræver orkestrerende agenters interaktioner yderligere programmering, som kan blive kompleks og besværlig, efterhånden som omfanget af opgaver vokser.

Mediet vist i denne artikel ejes ikke af Analytics Vidhya og bruges efter forfatterens skøn.

Tidsstempel:

Mere fra Analyse Vidhya