CrewAI로 협업 AI 에이전트 구축

CrewAI로 협업 AI 에이전트 구축

소스 노드 : 3089434

개요

AI 에이전트 개발은 소프트웨어 혁신의 가장 중요한 분야 중 하나입니다. 대규모 언어 모델의 품질이 발전함에 따라 기존 소프트웨어 시스템과 AI 에이전트의 통합이 급증하는 것을 목격하게 될 것입니다. AI 에이전트를 사용하면 애플리케이션을 수동으로 탐색하는 대신 음성이나 제스처 명령으로 작업을 수행할 수 있습니다. 하지만 현재 에이전트 개발은 초기 단계에 있습니다. 우리는 여전히 1990년대 인터넷과 유사한 인프라, 도구, 프레임워크 개발의 초기 단계를 겪고 있습니다. 따라서 이 기사에서는 CrewAI라는 에이전트 개발을 위한 또 다른 프레임워크에 대해 논의하겠습니다.

AI 에이전트

학습 목표

  • AI 에이전트에 대해 알아보세요.
  • 에이전트 구축을 위한 오픈 소스 도구인 CrewAI를 살펴보세요.
  • 콘텐츠 작성을 위한 협업 AI 팀을 구성하세요.
  • AI 에이전트의 실제 사용 사례를 살펴보세요.

이 기사는 데이터 과학 블로그.

차례

AI 에이전트란 ​​무엇입니까?

언어 모델은 번역, 요약 및 추론에 탁월합니다. 그러나 당신은 그들과 함께 많은 것을 할 수 있습니다. 추론 잠재력을 완전히 실현하는 방법 중 하나는 LLM을 에이전트로 만드는 것입니다. AI 에이전트는 올바른 도구와 프롬프트로 강화된 LLM입니다. 이러한 에이전트는 탐색, 웹 스크래핑, SQL 쿼리 실행, 파일 작업 등을 자동화할 수 있습니다. 에이전트는 LLM의 추론 능력을 사용하여 현재 요구 사항에 따라 도구를 선택합니다. 그러나 작업에 단일 에이전트를 사용하는 대신 여러 에이전트를 앙상블하여 복잡한 작업을 수행할 수 있습니다.

Langchain은 AI 에이전트를 논의할 때 떠오르는 기본 도구입니다. 그러나 협업 작업을 수행하기 위해 AI 에이전트를 수동으로 조정하는 것은 Langchain에서는 어려울 수 있습니다. 이것이 CrewAI가 등장하는 곳입니다.

CrewAI란 무엇인가요?

크루AI 롤플레잉 및 자율 AI 에이전트를 조정하기 위한 오픈 소스 프레임워크입니다. 복잡한 목표를 쉽게 달성할 수 있는 협업 AI 에이전트를 만드는 데 도움이 됩니다. 프레임워크는 AI 에이전트가 실제 승무원처럼 역할을 맡고, 작업을 위임하고, 목표를 공유할 수 있도록 설계되었습니다. CrewAI의 독특한 기능 중 일부는 다음과 같습니다.

  • 역할 기반 에이전트: 특정 역할, 목표 및 배경 스토리를 가진 에이전트를 정의하여 답변을 생성하기 전에 LLM에 더 많은 컨텍스트를 제공할 수 있습니다.
  • 작업 관리: 도구를 사용하여 작업을 정의하고 이를 에이전트에 동적으로 할당합니다.
  • 에이전트 간 위임: 에이전트는 효과적으로 협업하기 위해 다른 에이전트에게 작업을 위임할 수 있습니다.

아래는 CrewAI 마인드맵을 표현한 것입니다.

크루AI

CrewAI는 Langchain 생태계와 원활하게 통합됩니다. 이는 CrewAI와 Langchain 도구 및 LLM 통합을 사용할 수 있음을 의미합니다. 

협업 AI 크루 구축

CrewAI를 더 잘 이해하기 위해 창의적인 콘텐츠 작성을 위한 협업 AI 에이전트를 구축해 보겠습니다. 이를 위해 에이전트, 도구 및 각 에이전트에 대한 해당 작업을 정의합니다. 콘텐츠 작성을 위한 팀이므로 아이디어 분석가, 작가, 편집자 등 세 명의 별도 에이전트를 정의합니다. 각 상담원에게 작업이 할당됩니다.

분석 에이전트는 아이디어를 분석하고 콘텐츠 작성을 위한 포괄적인 청사진을 준비하는 일을 담당합니다. 작가 에이전트는 기사의 초안을 준비하고, 마지막으로 편집자는 초안의 형식 지정, 편집 및 수정을 담당합니다. 아시다시피 CrewAI를 사용하면 맞춤형 도구로 에이전트를 강화할 수 있습니다. 로컬 디스크에 저장하는 도구를 사용하여 편집기를 보강하겠습니다. 하지만 이 모든 일을 성취하려면 LLM이 필요합니다. 여기서는 Google의 Gemini 모델을 사용하겠습니다.

코딩에 대해 알아보자

Python 프로젝트와 마찬가지로 가상 환경을 만들고 종속성을 설치합니다. Crewai 라이브러리와 Langchain의 구현이 필요합니다. 구글 젠AI. 오픈 액세스 모델과 같은 다른 LLM을 사용할 수 있습니다. 함께모든 규모또는 OpenAI 모델.

pip install crewai langchain-google-genai

다음 단계는 LLM 및 협업 에이전트를 정의하는 것입니다. 에이전트를 정의하려면 Agent.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
           )

파일 저장 도구를 정의해 보겠습니다.

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

위의 write_file 메소드는 Langchain의 도구 기능으로 장식되었습니다. CrewAI는 내부적으로 Langchain을 사용하므로 도구는 Langchain의 규칙을 준수해야 합니다. 이 함수는 두 부분, 파일 경로, 파이프(|)로 구분된 콘텐츠로 구성된 단일 문자열을 기대합니다. 메소드 문서 문자열은 함수에 대한 추가 컨텍스트로도 사용됩니다. 따라서 방법에 대한 자세한 정보를 제공하십시오.

에이전트를 정의해보자

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
)

세 명의 에이전트가 있는데 각각 다른 역할, 목표, 배경 이야기를 가지고 있습니다. 이 정보는 LLM이 더 많은 맥락을 제공하기 위한 프롬프트로 사용됩니다. 편집자 에이전트에는 이와 관련된 쓰기 도구가 있습니다.

다음은 작업을 정의하는 것입니다. 이를 위해 다른 파일 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).
            """)

여기에 있는 작업은 상담원이 수행할 것으로 기대하는 세부 작업 계획입니다.

마지막으로 에이전트와 작업을 조합하여 기능적인 팀을 만드는 main.py 파일을 만듭니다.

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

위 코드에서는 사용자의 아이디어 문자열을 받아들이는 ContentWritingCrew 클래스를 정의했습니다. _create_tasks 메서드는 작업을 생성합니다. __call__ 메소드는 승무원을 초기화하고 시작합니다. 스크립트를 실행하면 터미널이나 노트북에서 일련의 작업을 관찰할 수 있습니다. 작업은 승무원이 정의한 순서대로 실행됩니다. 다음은 실행 로그의 스냅샷입니다.

최종 대리인

최종 에이전트의 실행 로그입니다. 즉 편집자. 작가 에이전트로부터 받은 초안을 편집하고 파일 작성 도구를 사용하여 적절한 파일 이름으로 파일을 저장합니다.

이는 CrewAI를 사용하여 협업 AI 에이전트를 생성하기 위한 일반적인 워크플로입니다. 더 복잡한 작업을 수행하기 위해 다른 Langchain 도구를 페어링하거나 효율적인 프롬프트로 사용자 정의 도구를 만들 수 있습니다.

코드에 대한 GitHub 저장소는 다음과 같습니다. sunilkumardash9/ContentWritingAgents.

복제 저장소: Sunil-KumarKu17/ColborativeAIAgent

실제 사용 사례

자율 AI 에이전트는 많은 사용 사례를 가질 수 있습니다. 개인 비서부터 가상 강사까지. 다음은 AI 에이전트의 몇 가지 사용 사례입니다.

  • 개인 AI 비서: 개인 비서는 곧 우리의 필수적인 부분이 될 것입니다. 모든 데이터를 처리하는 Jarvis와 같은 도우미는 진행하면서 통찰력을 제공하고 사소한 작업을 스스로 처리합니다.
  • 코드 해석기: OpenAI의 코드 인터프리터는 AI 에이전트의 훌륭한 예입니다. 인터프리터는 모든 Python 스크립트를 실행하고 텍스트 프롬프트에 대한 응답으로 결과를 출력할 수 있습니다. 이것은 틀림없이 현재까지 가장 성공적인 에이전트입니다.
  • 가상 강사: AI 기술이 발전함에 따라 교육, 훈련 등 다양한 분야에서 가상 강사를 기대할 수 있습니다.
  • 에이전트 우선 소프트웨어: AI 에이전트의 엄청난 잠재적 사용 사례는 에이전트 우선 소프트웨어 개발에 있습니다. 작업을 완료하기 위해 수동으로 탐색하고 버튼을 클릭하는 대신 AI 에이전트는 음성 명령을 기반으로 자동으로 작업을 수행합니다.
  • 공간 컴퓨팅: AR/VR 기술이 발전함에 따라 AI 에이전트는 가상 세계와 현실 세계의 격차를 해소하는 데 중요한 역할을 하게 될 것입니다.

결론

우리는 아직 AI 에이전트 개발 초기 단계에 있습니다. 현재 AI 에이전트로부터 가능한 최상의 결과를 얻으려면 GPT-4에 의존해야 하며 비용이 많이 듭니다. 그러나 오픈 소스 모델이 GPT-4를 따라잡으면 합리적인 비용으로 AI 에이전트를 효율적으로 실행할 수 있는 더 나은 옵션을 얻게 될 것입니다. 반면에 에이전트 개발을 위한 프레임워크는 빠르게 발전하고 있습니다. 앞으로 나아가면서 프레임워크를 통해 에이전트는 더욱 복잡한 작업을 수행할 수 있게 될 것입니다.

 주요 요점

  • AI 에이전트는 LLM의 추론 능력을 활용하여 복잡한 작업을 수행하는 데 적합한 도구를 선택합니다.
  • CrewAI는 협업 AI 에이전트를 구축하기 위한 오픈 소스 프레임워크입니다.
  • CrewAI의 고유한 기능에는 역할 기반 에이전트, 에이전트 간 자율 위임 및 유연한 작업 관리가 포함됩니다.
  • CrewAI는 기존 Langchain 생태계와 원활하게 통합됩니다. CrewAI와 Langchain 도구 및 LLM 통합을 사용할 수 있습니다.

자주 묻는 질문

Q1. AI 에이전트란 ​​무엇입니까?

A. AI 에이전트는 환경과 상호 작용하고, 결정을 내리고, 최종 목표를 달성하기 위해 행동하는 소프트웨어 프로그램입니다.

Q2. AI 에이전트와 함께 사용하기에 가장 좋은 LLM은 무엇입니까?

A. 이는 사용 사례와 예산에 따라 다릅니다. GPT 4는 성능이 가장 뛰어나지만 비용이 많이 드는 반면, GPT 3.5, Mixtral 및 Gemini Pro 모델은 품질이 떨어지지만 빠르고 저렴합니다.

Q3. CrewAI란 무엇인가요?

A. CrewAI는 롤플레잉 및 자율 AI 에이전트를 조정하기 위한 오픈 소스 프레임워크입니다. 복잡한 목표를 쉽게 달성할 수 있는 협업 AI 에이전트를 만드는 데 도움이 됩니다.

Q4. CrewAI는 어떤 용도로 사용되나요?

A. CrewAI는 복잡한 워크플로를 위한 협업 AI 에이전트를 구축하기 위한 높은 수준의 추상화를 제공합니다.

Q5. CrewAi와 Autogen의 차이점은 무엇입니까?

A. Autogen에서 에이전트의 상호 작용을 조정하려면 추가 프로그래밍이 필요하며 작업 규모가 커짐에 따라 복잡하고 번거로울 수 있습니다.

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

타임 스탬프 :

더보기 분석 Vidhya