CrewAI: 역할 기반 Crew와 Flow (CrewAI: Role-Based Crews and Flows)
CrewAI는 2026년의 역할 기반(role-based) 멀티 에이전트 프레임워크(multi-agent framework)입니다. 네 가지 원시 요소(primitives)는 Agents, Tasks, Crews, Processes입니다. 공식 문서의 프로덕션 지침은 분명합니다. "프로덕션 준비가 된 애플리케이션이라면 Flow부터 시작하라."
유형: Learn + Build
언어: Python (stdlib)
선수 학습: Phase 14 · 12 (워크플로 패턴(Workflow Patterns)), Phase 14 · 14 (액터 모델(Actor Model))
소요 시간: 약 60분
학습 목표
- CrewAI의 네 가지 원시 요소인 Agent, Task, Crew, Process와 각각의 역할을 말할 수 있습니다.
- Crew(자율적인 역할 기반 협업)와 Flow(이벤트 기반 결정적 워크플로)를 구분할 수 있습니다.
- 공식 문서가 프로덕션에는 Flow를, 탐색에는 Crew를 권장하는 이유를 설명할 수 있습니다.
- 표준 라이브러리만으로 Crew 실행기(runner)와 Flow 실행기(runner)를 구현하고, 각각이 빛을 발하는 상황을 보여줍니다.
문제
멀티 에이전트 프레임워크를 도입하는 팀은 같은 벽에 부딪힙니다. "자율 협업(autonomous collaboration)"이라는 표현은 멋있게 들리지만, 막상 고객이 버그를 제보하면 결정적 재현(deterministic replay)이 가능해야 합니다. CrewAI는 이 두 가지 요구를 명시적으로 분리합니다. 창의적인 협업이 필요할 때는 Crew를, 이벤트 기반이고 감사 가능하며 프로덕션 형태에 맞는 워크플로가 필요할 때는 Flow를 사용합니다.
개념
네 가지 원시 요소
- Agent. 역할(role) + 목표(goal) + 배경 이야기(backstory) + 도구(tools)로 구성됩니다. backstory는 단순한 장식이 아니라 핵심 부품(load-bearing)입니다. 말투와 판단 기준을 좌우합니다.
- Task. 설명(description) + 기대 출력(expected_output) + 배정된 agent로 이루어진, 재사용 가능한 작업 단위입니다.
- Crew. Agents와 Tasks의 실행 순서를 잡는 컨테이너(container)입니다. 실행 방식인 Process를 소유합니다.
- Process. Sequential(순차), Hierarchical(계층적; 관리자(manager) Agent를 포함), Consensual(합의 기반) 가운데 하나입니다.
Crews와 Flows
- Crew. 자율적으로 동작하며 LLM이 흐름을 주도합니다. 리서치, 브레인스토밍, 초안 작성처럼 개방형(open-ended) 작업에 잘 맞습니다. 프레임워크가 실행 시점(runtime)에 그때그때 형태를 정합니다.
- Flow. 이벤트 기반이며 코드가 소유하는 그래프(graph)입니다. 각 단계는 트리거(함수 데코레이터(function decorator), 이벤트 매칭(event match))로 실행됩니다. 프로덕션에 적합합니다. 관찰 가능하고, 테스트 가능하며, 결정적입니다.
CrewAI 2026 공식 문서의 권고는 명확합니다. 프로덕션 애플리케이션은 Flow로 시작하고, 자율성이 그 비용을 충분히 정당화할 때 Crew를 하위 단계로 접어 넣으라는 것입니다.
메모리 시스템(Memory System)
CrewAI는 네 가지 메모리 유형을 기본 제공합니다. 단기 메모리(short-term, 한 번의 실행 내), 장기 메모리(long-term, 여러 실행에 걸쳐), 엔티티 메모리(entity, 엔티티별 사실), 맥락 메모리(contextual, 검색 시점에 조립)입니다. 벡터 저장소(vector store)와의 통합도 자체 지원(first-party)으로 제공됩니다.
AWS Bedrock 통합
CrewAI는 CloudWatch, AgentOps, Langfuse 관찰성 훅(observability hook)을 포함한 AWS Bedrock 통합을 문서화하고 있습니다. AWS 문서는 자체 벤치마크 기준으로 QA 작업에서 LangGraph 대비 5.76배 속도 향상을 인용하고 있지만, 프레임워크별 수치는 절대값이 아니라 대략적인 방향성으로 받아들이세요.
의존성 형태(Dependency Shape)
LangChain과는 독립적인 프레임워크입니다. Python 3.10-3.13을 지원합니다. 의존성 관리는 uv를 사용합니다. 2026년 초 기준 GitHub 별점(star)은 3만 개를 넘었습니다.
이 패턴이 잘못 사용되는 지점
- Crew를 그대로 프로덕션에 사용(Crew-as-prod). Flow 래퍼(wrapper) 없이 자유 형식의 Crew를 프로덕션에 그대로 올리는 경우입니다. 출력 변동성이 크고 디버깅이 고통스러워집니다.
- 배경 이야기 비대화(Backstory bloat). 2000단어짜리 backstory는 컨텍스트 예산(context budget)을 밀어냅니다. 짧고 단단하게 유지하세요.
- Process 혼동. Hierarchical process는 라우팅을 담당하는 관리자(manager) Agent를 추가합니다. 전문가가 4명 이상일 때만 가치를 발합니다.
만들어보기
code/main.py는 두 형태를 모두 표준 라이브러리만으로 구현합니다.
Agent, Task, Crew, SequentialCrew(한 번에 한 작업), HierarchicalCrew(관리자가 라우팅)을 정의합니다.
@start()와 @listen() 데코레이터(decorator)를 가진 Flow를 제공합니다. 실제 CrewAI 데코레이터를 흉내 낸 일반 함수 형태의 대체 구현(plain-function stand-in)입니다.
- 같은 세 단계 작업(조사(research), 개요 작성(outline), 초안 작성(draft))을 두 방식으로 모두 구현합니다.
실행합니다.
python3 code/main.py
Crew 추적은 유동적이며 실행마다 달라질 수 있습니다. 반면 Flow 추적은 고정되어 있고 관찰 가능합니다. 이 차이가 곧 선택의 기준입니다.
사용해보기
- CrewAI Flow는 프로덕션에 사용합니다.
- CrewAI Crew는 탐색, 페어링(pairing), 초안 작성에 사용합니다.
- LangGraph(13강)는 더 명시적인 상태 머신(state machine)을 원할 때 선택합니다.
- AutoGen v0.4(14강)는 액터 모델(actor model) 기반 동시성을 원할 때 선택합니다.
산출물 만들기
outputs/skill-crew-or-flow.md는 주어진 작업에 대해 Crew와 Flow 중 무엇을 선택할지 고르고, 최소 구현 골격을 자동으로 짜냅니다(scaffold).
연습문제
- (쉬움) Crew 기반 데모를 Flow로 옮겨 보세요. 변동성이 줄어드는 접점이 몇 군데인지 세어 봅니다.
- (중간) Crew에 엔티티 메모리(entity memory)를 추가하세요. 한 고객에 관한 사실이 여러 작업을 거치며 유지되도록 합니다.
- (중간) Hierarchical process를 구현하세요. 관리자(manager) Agent가 직전 출력에 기반해 다음으로 실행할 전문가(specialist)를 고릅니다.
- (어려움) CrewAI 공식 문서 소개(introduction)를 읽고, 만들어 본 장난감 예제를 실제
crewai API로 옮겨 보세요. 테스트 가능성(testability)이 어떻게 달라지나요?
- (어려움) 실행 한 번에 AgentOps 또는 Langfuse를 연결해 보세요. 표준 라이브러리 버전에서 놓치고 있던 추적은 무엇이었나요?
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| Agent | "페르소나(Persona)" | 역할(role) + 목표(goal) + 배경 이야기(backstory) + 도구(tools)입니다. |
| Task | "작업 단위" | 설명(description) + 기대 출력(expected output) + 담당자(assignee)입니다. |
| Crew | "에이전트 팀" | Agents + Tasks + Process를 담는 컨테이너입니다. |
| Process | "실행 전략" | Sequential / Hierarchical / Consensual 중 하나입니다. |
| Flow | "결정적 워크플로" | 이벤트 기반이고, 코드가 소유하며, 테스트 가능합니다. |
| Backstory | "페르소나 프롬프트" | Agent의 말투와 판단 기준을 형성합니다. |
| 엔티티 메모리(Entity memory) | "엔티티별 사실" | 고객/계정/이슈 단위로 범위가 잡힌 메모리입니다. |
더 읽을거리