14. CrewAI 입문: 역할을 가진 AI 팀
- CrewAI의 "가상 회사" 비유로 핵심 4요소를 이해한다
- Agent·Task·Crew·Process를 정의하고 첫 크루를 실행한다
- Sequential·Hierarchical 프로세스의 차이와 선택 기준을 안다
- LangGraph의 그래프 모델과 CrewAI의 역할 모델을 비교한다
비유로 시작하기: 가상 회사 차리기
LangGraph가 "공정도 엔진"이었다면, CrewAI는 가상 회사를 차리는 것에 가깝습니다. 여러분이 CEO가 되어, 역할이 분명한 직원(Agent)을 뽑고, 그들에게 업무(Task)를 맡기고, 팀(Crew)으로 묶어 일을 시킵니다. 그래프 이론이나 상태 관리를 몰라도, "조직을 꾸린다"는 직관만으로 멀티에이전트를 만들 수 있는 것이 CrewAI의 매력입니다.
이 직관적 모델 덕분에 CrewAI는 20줄 안팎으로 멀티에이전트를 시작할 수 있어, 프로토타이핑이 가장 빠른 프레임워크로 꼽힙니다.
uv를 권장합니다. 한 가지 주의: 구버전(0.x)과 달리 커스텀 도구는 BaseTool을 상속해야 합니다. 오래된 튜토리얼 코드가 안 돌면 이 변화를 의심하세요.설치
pip install crewai crewai-tools
핵심 4요소
flowchart TB
classDef agent fill:#80DEEA,stroke:#00838F,color:#000
classDef task fill:#90CAF9,stroke:#1565C0,color:#000
classDef crew fill:#A5D6A7,stroke:#2E7D32,color:#000
A1[Agent: 리서처<br/>role·goal·backstory·tools]:::agent
A2[Agent: 작가]:::agent
T1[Task: 자료 조사<br/>description·expected_output]:::task
T2[Task: 글쓰기]:::task
C[Crew + Process<br/>팀 + 실행 방식]:::crew
A1 --- T1
A2 --- T2
T1 --> C
T2 --> C
네 요소를 회사에 빗대면 이렇습니다. Agent는 직원입니다. 역할(role), 목표(goal), 이력서 격인 배경설정(backstory), 그리고 할 줄 아는 일(tools)을 가집니다. Task는 맡길 업무입니다. 무엇을 하라는 설명(description)과 기대 결과물(expected_output)을 담습니다. Crew는 직원과 업무를 묶는 팀 컨테이너입니다. Process는 일하는 방식(순차/위계)을 정합니다.
📌 핵심: CrewAI에서 role과 backstory가 품질을 좌우합니다. "너는 10년 경력의 시장 분석가다"처럼 구체적인 배경을 주면, 모델이 그 역할에 맞게 답해 환각이 줄고 일관성이 높아집니다.
첫 크루 만들기
강의의 Researcher & Analyst 예제를 따라, 자료를 조사하고 분석 글을 쓰는 2인 팀을 만듭니다.
from crewai import Agent, Task, Crew, Process # 1) Agent 정의 — 직원 채용 researcher = Agent( role="시장 조사 전문가", goal="주제에 대한 정확하고 최신인 사실을 수집한다", backstory="당신은 10년 경력의 리서처로, 핵심을 빠르게 찾아냅니다.", verbose=True, ) analyst = Agent( role="분석가 겸 작가", goal="수집된 자료를 분석해 읽기 쉬운 보고서로 작성한다", backstory="당신은 복잡한 정보를 명료한 글로 풀어내는 전문가입니다.", verbose=True, ) # 2) Task 정의 — 업무 지시 research_task = Task( description="'2026년 AI 에이전트 시장'에 대한 핵심 동향을 조사하라.", expected_output="주요 동향 5가지를 불릿으로 정리한 메모", agent=researcher, ) write_task = Task( description="조사 결과를 바탕으로 한 페이지 분석 보고서를 작성하라.", expected_output="서론·본론·결론을 갖춘 한 페이지 보고서", agent=analyst, ) # 3) Crew 조립 + 4) Process 지정 crew = Crew( agents=[researcher, analyst], tasks=[research_task, write_task], process=Process.sequential, # 순서대로 실행 ) # 실행 result = crew.kickoff() print(result)
crew.kickoff()가 팀을 가동합니다. Sequential 프로세스이므로 research_task가 끝난 뒤 write_task가 실행되고, 앞 task의 결과가 다음 task의 맥락으로 전달됩니다.
💡 팁: verbose=True로 두면 각 에이전트의 사고 과정과 task 진행이 로그로 보입니다. 처음 배울 때와 디버깅할 때 필수입니다.
Sequential vs Hierarchical
CrewAI의 Process는 "팀이 일하는 방식"을 정합니다. 대표적으로 두 가지입니다.
flowchart TB
classDef agent fill:#80DEEA,stroke:#00838F,color:#000
classDef mgr fill:#FFE082,stroke:#F9A825,color:#000
subgraph Sequential[순차 Sequential]
direction LR
R1[리서처]:::agent --> W1[작가]:::agent
end
subgraph Hierarchical[위계 Hierarchical]
M[매니저 에이전트]:::mgr
M -->|위임| R2[리서처]:::agent
M -->|위임| W2[작가]:::agent
R2 --> M
W2 --> M
end
Sequential은 task를 나열된 순서대로 하나씩 실행합니다. 단순하고 빠르며 비용이 예측 가능합니다. Hierarchical은 매니저 에이전트가 목표를 받아 어떤 직원에게 무엇을 맡길지 동적으로 결정하고, 결과를 검토·재위임합니다. 실제 팀장이 일을 배분하는 방식과 같습니다.
crew = Crew( agents=[researcher, analyst], tasks=[research_task, write_task], process=Process.hierarchical, manager_llm="gpt-4o", # 매니저용 모델 (필수) )
⚠️ 흔한 실수: Hierarchical 프로세스를 쓰면서 manager_llm(또는 manager_agent)을 지정하지 않는 것. 매니저가 있어야 위임이 동작하므로 둘 중 하나는 반드시 필요합니다.
| 프로세스 | 동작 | 비용 | 적합 |
|---|---|---|---|
| Sequential | task 순서대로 | 낮음·예측 가능 | 단계가 정해진 파이프라인 |
| Hierarchical | 매니저가 동적 위임 | 높음(매니저 LLM 호출 추가) | 라우팅이 내용에 따라 달라지는 복잡한 작업 |
💡 팁: Hierarchical은 매니저가 매 위임마다 LLM을 호출해 토큰이 30~50% 더 듭니다. 단계가 명확하면 Sequential이 더 싸고 빠릅니다. "정말 동적 라우팅이 필요한가?"를 먼저 자문하세요.
CrewAI vs LangGraph: 두 철학
같은 멀티에이전트를 두 프레임워크가 다르게 표현합니다.
| 관점 | CrewAI | LangGraph |
|---|---|---|
| 멘탈 모델 | 역할을 가진 팀(조직도) | 상태 그래프(공정도) |
| 진입 장벽 | 낮음(20줄로 시작) | 다소 높음(상태·노드·엣지 정의) |
| 제어 정밀도 | 추상화됨(편하지만 덜 세밀) | 매우 정밀(모든 전환 명시) |
| 적합 | 빠른 프로토타입·역할 분담이 자연스러운 일 | 복잡한 분기·재시도·정밀 제어 |
📌 핵심: 둘은 경쟁 관계라기보다 다른 도구입니다. 역할 분담이 자연스럽고 빠르게 만들고 싶으면 CrewAI, 흐름을 한 단계씩 정밀 제어하고 싶으면 LangGraph가 맞습니다. 8부에서 선택 가이드를 다시 정리합니다.
💡 실습 아이디어(강의의 광고/리서치 크루 대응): role과 backstory만 바꿔 "광고 기획팀"(시장조사가 + 카피라이터)을 만들어 보세요. 코드 구조는 그대로, 직원의 정체성만 바꾸면 전혀 다른 팀이 됩니다.
이 장에서 배운 것
- CrewAI는 "가상 회사" 모델로, Agent(직원)·Task(업무)·Crew(팀)·Process(방식) 4요소로 멀티에이전트를 만든다.
- role과 backstory를 구체적으로 줄수록 품질이 높아진다.
- Sequential은 순서대로·저비용, Hierarchical은 매니저가 동적 위임(매니저 모델 필수·고비용)이다.
- CrewAI(역할 모델)와 LangGraph(그래프 모델)는 같은 문제의 다른 표현이며, 작업 성격에 따라 고른다.
✍️ 확인 문제
- CrewAI에서 Agent의 backstory를 구체적으로 작성하면 어떤 이점이 있는가?
- Hierarchical 프로세스로 크루를 만들었는데 실행되지 않는다. 가장 먼저 확인할 설정은?
- "단계가 명확히 정해진 보고서 생성 파이프라인"에는 Sequential과 Hierarchical 중 무엇이 더 적합하며, 그 이유는?
이전 부: 13. 체크포인트·휴먼 인 더 루프
다음 장: 15. Flows: 이벤트 기반 프로덕션 오케스트레이션