🤖 AI/ML

CrewAI

여러 AI 에이전트가 협업하는 프레임워크

📖 상세 설명

CrewAI는 여러 AI 에이전트가 팀처럼 협업하여 복잡한 작업을 수행하는 멀티 에이전트 오케스트레이션 프레임워크입니다. 각 에이전트에 역할(Role), 목표(Goal), 배경 스토리(Backstory)를 부여하고, 태스크를 순차적 또는 병렬로 실행하여 단일 LLM으로는 어려운 복잡한 워크플로우를 구현합니다.

2023년 말 Joao Moura가 오픈소스로 공개한 CrewAI는 AutoGPT, BabyAGI 같은 자율 에이전트 프로젝트의 영향을 받아 탄생했습니다. LangChain과 통합되어 있으며, 역할 기반 에이전트 설계라는 차별화된 접근 방식으로 GitHub 스타 20,000개 이상을 달성하며 빠르게 성장했습니다.

CrewAI의 핵심 구성요소는 Agent, Task, Crew, Tool입니다. Agent는 특정 역할을 가진 AI 페르소나이고, Task는 에이전트가 수행할 작업 단위입니다. Crew는 에이전트 팀을 관리하며, Tool은 웹 검색, 파일 읽기 등 외부 기능을 제공합니다. 순차(Sequential) 또는 계층(Hierarchical) 프로세스로 태스크 실행 순서를 제어합니다.

실무에서는 리서치 자동화, 콘텐츠 생성 파이프라인, 코드 리뷰 시스템 등에 활용됩니다. 예를 들어 리서치 Crew는 조사원 에이전트가 정보를 수집하고, 분석가 에이전트가 검토하며, 작가 에이전트가 보고서를 작성하는 3단계 워크플로우를 구성할 수 있습니다.

💻 코드 예제

from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool

# 도구 설정
search_tool = SerperDevTool()

# 에이전트 정의
researcher = Agent(
    role="시장 조사 전문가",
    goal="AI 시장 동향에 대한 심층 분석 제공",
    backstory="10년 경력의 기술 시장 분석가로, 트렌드 예측에 강점이 있습니다.",
    tools=[search_tool],
    verbose=True,
    llm="gpt-4o"
)

writer = Agent(
    role="기술 콘텐츠 작가",
    goal="복잡한 기술 정보를 이해하기 쉬운 콘텐츠로 변환",
    backstory="기술 매거진 편집장 출신으로, 전문 용어를 쉽게 풀어쓰는 능력이 뛰어납니다.",
    verbose=True,
    llm="gpt-4o"
)

# 태스크 정의
research_task = Task(
    description="2024년 생성형 AI 시장 규모와 주요 플레이어를 조사하세요.",
    expected_output="시장 규모, 성장률, Top 5 기업 정보가 포함된 분석 보고서",
    agent=researcher
)

writing_task = Task(
    description="조사 결과를 바탕으로 경영진 브리핑 문서를 작성하세요.",
    expected_output="A4 1페이지 분량의 요약 보고서",
    agent=writer,
    context=[research_task]  # research_task 결과를 컨텍스트로 사용
)

# Crew 구성 및 실행
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    process=Process.sequential,  # 순차 실행
    verbose=True
)

# 실행
result = crew.kickoff()
print(result)

🗣️ 실무에서 이렇게 말하세요

AI 자동화 프로젝트 킥오프에서

"주간 경쟁사 분석 리포트를 자동화하고 싶습니다. CrewAI로 리서치 에이전트, 분석 에이전트, 리포트 작성 에이전트 3개를 구성하면 됩니다. 각 에이전트가 순차적으로 작업하면서 컨텍스트를 전달하니까, 단일 프롬프트보다 훨씬 체계적인 결과물이 나옵니다."

기술 스택 선정 회의에서

"LangGraph와 CrewAI를 비교하면, LangGraph는 상태 머신 기반이라 정밀한 제어가 가능하고, CrewAI는 역할 기반이라 직관적입니다. 우리 팀에 에이전트 경험이 없으니 CrewAI로 시작하고, 복잡도가 높아지면 LangGraph로 마이그레이션하는 게 좋겠습니다."

코드 리뷰에서

"에이전트 backstory가 너무 짧네요. CrewAI에서 backstory는 단순 설명이 아니라 LLM이 역할에 몰입하게 만드는 컨텍스트입니다. '10년 경력의 시니어 분석가로 스타트업과 대기업 모두 경험했다'처럼 구체적으로 써주면 출력 품질이 확 달라집니다."

⚠️ 흔한 실수 & 주의사항

1.
토큰 비용 폭증

멀티 에이전트 시스템은 에이전트 간 컨텍스트 전달로 토큰 사용량이 기하급수적으로 증가합니다. 3개 에이전트의 5단계 워크플로우가 단일 호출 대비 10배 이상 비용이 들 수 있습니다. max_iter와 max_rpm 설정으로 제한하세요.

2.
무한 루프 위험

에이전트가 태스크를 완료하지 못하고 재시도를 반복하면 무한 루프에 빠질 수 있습니다. Task에 timeout과 max_retries를 반드시 설정하고, 실패 시 폴백 로직을 구현하세요.

3.
디버깅 어려움

여러 에이전트가 상호작용하면 문제 발생 시 원인 파악이 어렵습니다. verbose=True로 로깅하고, 각 에이전트별 중간 결과물을 파일로 저장하는 콜백을 구현하세요.

🔗 관련 용어

📚 더 배우기