AI 에이전트 개발을 시작하려는 엔지니어라면, 가장 큰 고민 중 하나가 바로 어떤 프레임워크를 선택할 것인가입니다. 2024년 기준 대표적인 3대 에이전트 프레임워크인 CrewAI, AutoGen, LangGraph는 각각 다른 철학과 강점을 가지고 있습니다. 저는 지난 2년간 세 프레임워크 모두를 프로덕션 환경에서 활용하며 각각의 장단점을 체감했습니다. 이 가이드에서는 아키텍처 설계, 성능 튜닝, 동시성 제어, 비용 최적화 관점에서 심층적으로 비교하고, 실제 벤치마크 데이터를 바탕으로 의사결정 프레임워크를 제공합니다.
개요: 세 프레임워크의 핵심 철학
| 특성 | CrewAI | AutoGen | LangGraph |
|---|---|---|---|
| 개발사 | CrewAI Inc. | Microsoft Research | LangChain |
| 핵심 추상화 | 에이전트 + 태스크 + 크루 | 대화형 에이전트 협업 | 상태 그래프 + 노드 |
| 학습 곡선 | 낮음 ⭐ | 중간 | 높음 |
| 상태 관리 | 내장 (크루 수준) | 그룹 채팅 히스토리 | 외부 상태 저장소 연동 |
| 멀티모달 지원 | 기본 | 우수 | 우수 |
| 프로덕션 적합도 | 중소규모 | 중규모 | 대규모 분산 시스템 |
| 최소 의존성 | 단일 패키지 | 다중 패키지 | 모듈식 |
아키텍처 깊이 분석
CrewAI: 직관적 태스크 분배 아키텍처
CrewAI는 에이전트를 "크루(Crew)" 단위로 구성하고, 태스크를 순차적 또는 병렬로 분배하는 구조입니다. 제가 처음 CrewAI를 사용했을 때 가장 인상 깊었던 점은 비즈니스 로직을 코드화하기 직관적이었다는 것입니다.
# CrewAI 기본 구조 예시 - HolySheep API 사용
import os
from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI
HolySheep AI API 설정
os.environ["OPENAI_API_KEY"] = "YOUR_HOLYSHEEP_API_KEY"
os.environ["OPENAI_API_BASE"] = "https://api.holysheep.ai/v1"
llm = ChatOpenAI(
model="gpt-4.1",
temperature=0.7,
api_key=os.environ["OPENAI_API_KEY"],
base_url=os.environ["OPENAI_API_BASE"]
)
研究员 에이전트 정의
researcher = Agent(
role="시장 연구원",
goal="최신 시장 트렌드 분석",
backstory="10년 경력의 시장 분석 전문가",
llm=llm,
verbose=True
)
작가 에이전트 정의
writer = Agent(
role="콘텐츠 작가",
goal="연구 결과를 이해하기 쉽게 작성",
backstory="TechCrunch 출신의 베테랑 작가",
llm=llm,
verbose=True
)
태스크 정의
research_task = Task(
description="2024년 AI 에이전트 시장 규모와 성장률 분석",
agent=researcher,
expected_output="구조화된 시장 분석 보고서"
)
write_task = Task(
description="연구 결과를 위한 블로그 포스트 작성",
agent=writer,
expected_output="1500단어 정도의 블로그 포스트"
)
크루 구성 및 실행
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process="sequential" # 순차 실행
)
result = crew.kickoff()
print(f"최종 결과: {result}")
AutoGen: 대화형 협업 아키텍처
AutoGen은 다중 에이전트 간 대화 기반 협업에 특화되어 있습니다. Microsoft의 연구에서 출발한 만큼, 복잡한 협업 시나리오와 인간-에이전트 인터랙션을 정교하게 처리합니다. 저는 고객 지원 자동화 시스템에서 AutoGen의 그룹 채팅 기능을 효과적으로 활용했습니다.
# AutoGen 기본 구조 예시 - HolySheep API 사용
import autogen
from autogen import ConversableAgent, GroupChat, GroupChatManager
HolySheep AI API 설정
config_list = [{
"model": "gpt-4.1",
"api_key": "YOUR_HOLYSHEEP_API_KEY",
"base_url": "https://api.holysheep.ai/v1"
}]
사용자 프록시 (인간 인터페이스)
user_proxy = ConversableAgent(
name="user",
system_message="사용자 요청을 전달하는 프록시 에이전트",
human_input_mode="NEVER",
code_execution_config={"use_docker": False}
)
코드 작성자 에이전트
coder = ConversableAgent(
name="coder",
system_message=""""당신은 파이썬 전문가입니다.
사용자의 요구사항을 분석하고 최적의 코드를 작성합니다.
필요한 경우 코드 실행 결과를 해석하고 수정합니다.""",
llm_config={"config_list": config_list},
human_input_mode="NEVER"
)
코드 리뷰어 에이전트
reviewer = ConversableAgent(
name="reviewer",
system_message="""당신은 코드 리뷰어입니다.
작성된 코드의 품질, 보안, 성능을 검토합니다.
개선사항이 있으면 구체적으로 제안합니다.""",
llm_config={"config_list": config_list},
human_input_mode="NEVER"
)
그룹 채팅 설정
group_chat = GroupChat(
agents=[user_proxy, coder, reviewer],
messages=[],
max_round=6
)
그룹 채팅 매니저
manager = GroupChatManager(groupchat=group_chat)
협업 시나리오 시작
user_proxy.initiate_chat(
manager,
message="1부터 100까지의 소수를 찾는 파이썬 함수를 작성하고 리뷰해주세요."
)
LangGraph: 상태 기반 그래프 아키텍처
LangGraph는 그래프 구조를 통한 명시적 상태 관리를 제공합니다. 복잡한 워크플로우, 조건부 분기, 루프 처리가 필요한 시나리오에서 강력한 추상화를 제공합니다. 대규모 분산 시스템에서 저는 LangGraph를 사용하여 수십 개의 노드로 구성된 복잡한 에이전트 파이프라인을 구축했습니다.
# LangGraph 기본 구조 예시 - HolySheep API 사용
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator