한국어
Week 3: 멀티 에이전트
05. Modern Stack (CrewAI)

05. Modern Stack: CrewAI

개요

에이전트 간 문자열을 수동으로 전달하는 것은 "From Scratch" 방식입니다. CrewAIAgents (역할과 목표), Tasks (설명과 예상 출력), Crews (프로세스)를 정의하는 구조화된 프레임워크를 제공합니다.

핵심 개념

개념설명
Role Playing에이전트에게 풍부한 배경 스토리를 부여하여 성능 향상
Agent역할, 목표, 배경 스토리를 가진 자율적 단위
Task설명, 예상 출력, 담당 에이전트가 있는 작업 항목
Crew프로세스(순차/계층)를 가진 에이전트 팀
Process.sequential작업을 순차적으로 실행
Process.hierarchical매니저 에이전트가 전문가에게 작업 위임

CrewAI 에이전트 정의

from crewai import Agent, Task, Crew, Process
 
researcher = Agent(
    role="시니어 리서치 애널리스트",
    goal="AI와 데이터 사이언스의 최신 발전 동향 발굴",
    backstory="""당신은 선도적인 기술 싱크탱크에서 일합니다.
    신흥 트렌드를 식별하는 것이 전문 분야입니다.
    복잡한 데이터를 분석하고 실행 가능한 인사이트를 제시하는
    능력이 뛰어납니다.""",
    verbose=True,
    allow_delegation=False
)
 
writer = Agent(
    role="테크 콘텐츠 전략가",
    goal="기술 발전에 대한 설득력 있는 콘텐츠 작성",
    backstory="""당신은 통찰력 있고 매력적인 글로
    유명한 콘텐츠 전략가입니다.""",
    verbose=True,
    allow_delegation=True
)

Task 정의

research_task = Task(
    description="""2024년 AI 최신 발전에 대한 포괄적 분석을
    수행하세요. 주요 트렌드, 혁신 기술, 잠재적 산업 영향을
    파악하세요.""",
    expected_output="글머리 기호로 된 전체 분석 보고서",
    agent=researcher
)
 
write_task = Task(
    description="""리서치 인사이트를 활용하여 가장 중요한
    AI 발전을 강조하는 매력적인 블로그 포스트를 작성하세요.""",
    expected_output="최소 4문단의 전체 블로그 포스트",
    agent=writer
)

Crew 구성

crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential,  # 또는 Process.hierarchical
    verbose=True
)
 
result = crew.kickoff()

Sequential vs Hierarchical

CrewAI를 사용하는 이유

Role Playing: 풍부한 페르소나를 가진 에이전트가 일반적인 지시보다 더 나은 결과를 생성

기능장점
풍부한 배경 스토리더 나은 컨텍스트 이해
위임에이전트가 서로 도움 요청 가능
메모리에이전트가 이전 상호작용 기억
도구커스텀 도구와 쉽게 통합

실습

에이전트 정의

역할, 목표, 배경 스토리가 있는 에이전트 생성

Task 생성

각 에이전트가 수행할 작업 정의

Crew 구성

프로세스 유형 선택 및 워크플로우 실행

결과 분석

순차 vs 계층 출력 비교

참고 자료