05. CrewAI로 멀티 에이전트 구축하기
개요
이번 세션에서는 수동 멀티 에이전트 오케스트레이션을 CrewAI로 대체합니다. CrewAI는 역할 수행, 작업 위임, 워크플로우 관리를 기본으로 제공하는 고수준 프레임워크입니다.
CrewAI란?
CrewAI는 역할 기반 자율 AI 에이전트를 오케스트레이션하는 프레임워크입니다. 각 에이전트가 특정 역할, 목표, 배경 스토리를 가진 가상 팀을 구성한다고 생각하면 됩니다.
왜 CrewAI인가?
| 수동 오케스트레이션 | CrewAI |
|---|---|
| 에이전트 간 문자열 수동 전달 | 자동 메시지 전달 |
| 직접 슈퍼바이저 로직 구축 | 내장된 Sequential/Hierarchical 프로세스 |
| 페르소나 관리 없음 | 풍부한 role, goal, backstory 시스템 |
| DIY 도구 공유 | 원활한 도구 위임 |
핵심 개념
1. Agents (에이전트)
에이전트는 크루의 작업자입니다. 각각 고유한 성격과 목적을 가집니다.
from crewai import Agent
researcher = Agent(
role='시니어 연구원',
goal='AI 분야의 혁신적인 기술 발굴',
backstory="""당신은 최고의 기술 연구원입니다.
최신 뉴스와 논문을 찾는 데 전문가입니다.""",
verbose=True,
allow_delegation=False # 다른 에이전트에게 위임 가능?
)
writer = Agent(
role='기술 콘텐츠 전략가',
goal='기술 발전에 대한 매력적인 콘텐츠 작성',
backstory="""당신은 유명한 콘텐츠 전략가로,
복잡한 주제를 쉽게 풀어내는 것으로 유명합니다.""",
verbose=True,
allow_delegation=False
)Pro Tip: backstory 필드가 매우 중요합니다! 에이전트가 어떻게 "생각"하고 응답할지를 결정합니다. 잘 작성된 배경 스토리는 더 일관된 캐릭터 출력으로 이어집니다.
2. Tasks (태스크)
태스크는 에이전트에게 주어지는 구체적인 작업입니다.
from crewai import Task
task1 = Task(
description="""2024년 'AI 에이전트'의 최신 트렌드를 분석하세요.
주요 장단점을 파악하세요.""",
expected_output="상위 3개 트렌드의 불릿 포인트 요약.",
agent=researcher # 특정 에이전트에 할당
)
task2 = Task(
description="""제공된 인사이트를 활용하여 짧은 LinkedIn 게시물을 작성하세요.
임팩트 있고 전문적으로.""",
expected_output="해시태그가 포함된 LinkedIn 게시물.",
agent=writer
)3. Crew (크루)
Crew는 모든 것을 오케스트레이션합니다—워크플로우와 커뮤니케이션을 관리합니다.
from crewai import Crew, Process
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=True,
process=Process.sequential # 또는 Process.hierarchical
)
# 한 줄로 전체 팀 실행!
result = crew.kickoff()프로세스 유형
Sequential Process: 태스크가 하나씩 순서대로 실행됩니다. Task 1의 출력이 Task 2의 입력이 됩니다.
적합한 경우: 각 단계가 이전 단계에 의존하는 선형 워크플로우
에이전트에 도구 추가하기
CrewAI 에이전트도 ReAct 에이전트처럼 도구를 사용할 수 있습니다:
from crewai_tools import SerperDevTool, WebsiteSearchTool
search_tool = SerperDevTool()
web_tool = WebsiteSearchTool()
researcher = Agent(
role='리서치 분석가',
goal='정확한 정보 찾기',
backstory='웹 접근 권한이 있는 전문 연구원',
tools=[search_tool, web_tool], # 여기에 도구 연결
verbose=True
)실습 내용
노트북에서 다음을 수행합니다:
CrewAI 설치
pip install crewai crewai-tools에이전트 정의
고유한 역할과 배경 스토리를 가진 전문 에이전트 생성
태스크 생성
각 에이전트에 구체적인 목표 할당
Crew 구성
에이전트와 태스크를 프로세스 유형과 결합
Kickoff!
크루를 실행하고 협업 관찰
실제 활용 사례
| 사용 사례 | Crew 구성 |
|---|---|
| 콘텐츠 파이프라인 | 연구원 → 작가 → 편집자 → 퍼블리셔 |
| 코드 리뷰 | 개발자 → 리뷰어 → 보안 분석가 |
| 고객 지원 | 분류기 → 전문가 → QA 에이전트 |
| 시장 조사 | 데이터 수집가 → 분석가 → 보고서 작성자 |
CrewAI vs LangGraph
| 측면 | CrewAI | LangGraph |
|---|---|---|
| 추상화 수준 | 높음 (역할 기반) | 낮음 (그래프 기반) |
| 학습 곡선 | 완만함 | 가파름 |
| 유연성 | 제한적 | 매우 유연함 |
| 적합한 용도 | 팀 시뮬레이션 | 커스텀 워크플로우 |
| 상태 관리 | 자동 | 수동 제어 |
언제 무엇을 사용할까?
- CrewAI: 역할 기반의 빠른 멀티 에이전트 설정이 필요할 때
- LangGraph: 상태와 전환에 대한 세밀한 제어가 필요할 때
참고 자료 & 추가 학습
학술 논문
-
"Communicative Agents for Software Development" (ChatDev) - Chen et al., 2023
- arXiv:2307.07924 (opens in a new tab)
- 코드 생성을 위한 멀티 에이전트 협업
-
"AutoGen: Enabling Next-Gen LLM Applications" - Microsoft, 2023
- arXiv:2308.08155 (opens in a new tab)
- 프레임워크 비교 및 멀티 에이전트 패턴
-
"AgentVerse: Facilitating Multi-Agent Collaboration" - Chen et al., 2023
- arXiv:2308.10848 (opens in a new tab)
- 멀티 에이전트 시스템의 다이나믹스
다음 단계
주말 프로젝트에서 CEO, CTO, CMO가 협력하여 비즈니스 피치를 만드는 가상 스타트업 팀을 구축합니다!