4 분 소요

한 줄 요약: CrewAI란, 여러 AI 에이전트에게 각자의 역할(role)과 목표(goal)를 부여하고 하나의 팀(Crew)처럼 협업시켜 복잡한 작업을 자동으로 수행하게 만드는 오픈소스 멀티 에이전트 오케스트레이션 프레임워크이다.


1. CrewAI란 무엇인가?

회사에서 프로젝트를 진행할 때를 떠올려보자. 기획자는 요구사항을 정리하고, 리서처는 자료를 조사하고, 작가는 초안을 쓰고, 편집자는 검수한다. 각자 맡은 역할이 다르고, 서로의 결과물을 넘겨받아 다음 작업을 진행한다. CrewAI는 이 조직 구조를 그대로 AI 에이전트에게 적용한 프레임워크다.

기존의 단일 LLM 호출 방식은 하나의 프롬프트에 모든 지시를 욱여넣어야 했다. 반면 CrewAI는 “리서처 에이전트”, “작가 에이전트”, “검수자 에이전트”처럼 역할을 분리하고, 각자 자신의 전문 영역에만 집중하도록 만든 뒤 이들의 산출물을 순차적 또는 병렬적으로 연결한다.

CrewAI 공식 문서에 따르면 CrewAI는 “역할 기반 자율 AI 에이전트들이 협업하여 복잡한 작업을 처리하도록 설계된, 처음부터 새로 만들어진(standalone) 빠르고 유연한 멀티 에이전트 프레임워크”로 정의된다. (출처: CrewAI 공식 문서)

특히 LangChain 등 기존 프레임워크에 의존하지 않고 독자적으로 개발되어 가볍고 빠르다는 점이 특징이며, 파이썬 기반 오픈소스로 GitHub에서 활발히 개발되고 있다.

2. 핵심 개념 이해하기

CrewAI는 크게 세 가지 구성 요소로 이루어진다.

구성 요소 역할 핵심 속성
Agent 특정 역할을 수행하는 개별 AI 작업자 role, goal, backstory, llm, tools
Task 에이전트가 처리해야 할 구체적 작업 단위 description, expected_output, agent
Crew Agent와 Task를 묶어 실행을 총괄하는 팀 agents, tasks, process, kickoff()

2.1 Agent — 역할을 가진 AI 작업자

Agent는 단순히 “LLM 호출”이 아니라 역할(role), 목표(goal), 배경 스토리(backstory)라는 페르소나를 갖는다. 이 세 가지 정보는 시스템 프롬프트로 조합되어 에이전트의 행동과 말투, 판단 기준을 결정한다. 또한 각 Agent는 서로 다른 LLM(OpenAI GPT, Anthropic Claude, Google Gemini 등)을 사용할 수 있고, 웹 검색·코드 실행·파일 읽기 같은 Tool을 장착해 실제 행동을 수행할 수 있다.

2.2 Task — 구체적인 작업 명세

Task는 “무엇을 해야 하는가(description)”와 “결과물이 어떤 모습이어야 하는가(expected_output)”로 정의된다. 이 명확한 정의 덕분에 에이전트는 모호한 지시 없이도 결과물의 완성도를 스스로 판단할 수 있다. Task는 특정 Agent에 할당되며, 이전 Task의 출력(context)을 다음 Task의 입력으로 넘겨받을 수 있다.

2.3 Crew — 팀 단위 오케스트레이션

Crew는 여러 Agent와 Task를 하나로 묶고, 이들을 어떤 순서와 방식으로 실행할지 결정하는 컨테이너다. 실행 방식(process)은 대표적으로 두 가지가 있다.

[Sequential Process]
Task1 → Task2 → Task3   (순서대로 실행, 앞 결과가 다음 입력으로 전달)

[Hierarchical Process]
        Manager Agent
       /      |       \
  Agent A  Agent B   Agent C   (매니저가 작업을 분배·검토)

crew.kickoff()를 호출하는 순간 이 모든 파이프라인이 실제로 실행된다.

2.4 내부 동작 — LiteLLM을 통한 프로바이더 추상화

CrewAI는 내부적으로 LiteLLM을 사용해 OpenAI, Anthropic, Google Gemini, Ollama 등 다양한 LLM 프로바이더를 동일한 인터페이스로 호출한다. 덕분에 에이전트마다 다른 모델을 자유롭게 조합해도 코드 구조를 바꿀 필요가 없다.

3. 실무 적용 예시

간단한 “리서치 → 글쓰기” 2단계 Crew를 만드는 예시다.

from crewai import Agent, Task, Crew, Process

# 1. Agent 정의
researcher = Agent(
    role="시니어 리서처",
    goal="주어진 주제에 대한 최신 정보를 정확히 조사한다",
    backstory="10년간 기술 트렌드를 분석해온 애널리스트",
    verbose=True,
)

writer = Agent(
    role="테크 블로그 작가",
    goal="조사된 내용을 바탕으로 읽기 쉬운 글을 작성한다",
    backstory="복잡한 기술을 쉽게 풀어쓰는 데 능숙한 작가",
    verbose=True,
)

# 2. Task 정의
research_task = Task(
    description="'CrewAI 프레임워크의 최신 동향'에 대해 조사하라",
    expected_output="핵심 포인트 5가지를 담은 불릿 리스트",
    agent=researcher,
)

write_task = Task(
    description="조사 결과를 바탕으로 블로그 초안을 작성하라",
    expected_output="800자 내외의 블로그 글",
    agent=writer,
    context=[research_task],  # 이전 Task 결과를 입력으로 사용
)

# 3. Crew 구성 및 실행
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential,
)

result = crew.kickoff()
print(result)

이처럼 역할별로 에이전트를 나누면, 프롬프트 하나로 모든 것을 처리할 때보다 각 단계의 품질과 디버깅 가능성이 크게 향상된다.

4. 멀티 에이전트 프레임워크 심층 비교: CrewAI vs LangGraph vs AutoGen

       
구분 CrewAI LangGraph AutoGen (Microsoft)
설계 철학 역할 기반 협업 (Role-playing)마치 회사 조직처럼 역할을 나누고 목표를 달성 상태 그래프 기반 흐름 제어노드와 엣지로 복잡한 상태 머신과 워크플로 구축 대화 기반 멀티 에이전트에이전트 간의 자유로운 채팅과 메시지 교환
러닝 커브 낮음 (선언적 구조)직관적이고 설정이 쉬움 높음 (그래프/상태 설계 필요)LangChain 이해 및 그래프 이론 필요 중간대화 패턴 설계는 쉬우나 복잡한 제어는 어려움
실행 흐름 제어 순차적(Sequential) / 계층적(Hierarchical)정해진 순서나 매니저의 지시에 따라 실행 세밀한 조건 분기·루프 가능순환 참조(Cycle) 및 조건부 엣지를 통한 정밀 제어 대화 턴 기반 자유 흐름에이전트들이 스스로 발언권을 얻으며 진행
주요 구성 요소 Agent, Task, Crew, Process, Tools State, Node, Edge, Graph, Checkpoint ConversableAgent, UserProxyAgent, GroupChat
메모리 및 상태 관리 Task 결과물 순차 전달, 최근 단기/장기/엔티티 메모리 기능 추가 강력한 전역 State 객체를 통한 명시적 관리, 시간여행(Time-travel) 지원 대화 히스토리(메시지 리스트) 누적을 통한 문맥(Context) 유지
도구(Tool) 통합 자체 커스텀 도구 및 LangChain Tools 호환 지원 LangChain 생태계의 모든 도구와 네이티브 통합 함수 호출(Function Calling) 기반, 로컬 코드 실행(Code Execution)에 강점
인간 개입 (Human-in-the-loop) Task 실행 후 피드백을 받는 형태 지원 그래프 내 인터럽트(Interrupt)를 통해 특정 시점에 완벽한 개입 및 상태 수정 가능 UserProxyAgent를 통해 대화 중간중간 자연스럽게 인간이 개입 가능
LangChain 의존성 없음 (독립적이지만 호환됨) LangChain 생태계의 핵심 일부 없음 (Microsoft 자체 개발)
가장 적합한 사례 명확히 역할이 나뉘는 업무 자동화(예: 콘텐츠 기획팀, 리서치팀, 마케팅팀 모사) 복잡한 조건부·재시도 워크플로(예: 엔터프라이즈급 RAG, 검증 및 수정 루프가 필요한 작업) 자유 토론형 문제 해결 및 코딩(예: 코드 작성-실행-디버깅 무한 루프, 아이디어 브레인스토밍)

CrewAI는 “역할이 명확한 팀 작업”을 빠르게 구현하는 데 강점이 있는 반면, 복잡한 분기·재시도 로직이 필요한 경우에는 LangGraph 같은 그래프 기반 프레임워크가 더 유리하다.

5. 마치며

CrewAI는 Agent(역할), Task(작업), Crew(팀)라는 단순하고 직관적인 구조로 멀티 에이전트 시스템을 빠르게 구축할 수 있게 해주는 프레임워크다. LiteLLM을 통해 다양한 LLM을 자유롭게 조합할 수 있다는 점도 실무 적용성을 높여준다. 단일 에이전트로 처리하기 어려운 복잡한 업무를 역할 분담을 통해 해결하고 싶다면 CrewAI가 좋은 출발점이 될 수 있다. 다음으로는 [[Agentic AI]], [[Sub-agent]], [[Orchestrator-worker Pattern]] 개념을 함께 읽어보길 추천한다.

참고 자료

함께 읽으면 좋은 용어

이 개념과 함께 알아두면 이해가 깊어지는 관련 용어들입니다.

댓글 남기기