tracks
AI 에이전트는 작업을 수행하고 세상과 상호 작용할 수 있는 조수입니다. 고정된 규칙을 따르는 전통적인 시스템과 달리, 이들은 학습하고 새로운 상황에 적응할 수 있습니다. 환경을 인지하고 행동을 취하는 소프트웨어 프로그램이라고 생각하시면 됩니다.
그렇다면 우리가 잘 알고 있는 인기 있는 언어 모델과 같은 다른 AI 엔터티와 AI 에이전트는 무엇이 다를까요?
이 글에서는 이 질문에 답하고, 다중 에이전트 AI 시스템 개발을 단순화하도록 설계된 무료 오픈 소스 파이썬 프레임워크인 CrewAI를 소개합니다. 에이전트와 언어 모델의 차이를 살펴보고, 왜 에이전트 프레임워크가 AI 애플리케이션 구축에 중요한지 논의하며, CrewAI가 어떻게 에이전트 간 협업을 가능하게 해 뛰어난 결과를 내는지 보여드리겠습니다.
AI 에이전트 vs. LLM
에이전트와 대규모 언어 모델(LLM)의 차이에 대한 흔한 오해를 바로잡아 봅시다. 둘 다 인공지능의 한 갈래에 속하지만, 보유한 역량은 분명히 다릅니다.

예를 들어 ChatGPT나 Gemini와 같은 언어 모델은 언어 사용에 매우 능숙합니다. 방대한 텍스트와 코드로 광범위한 학습을 거쳐 인간과 매우 유사한 방식으로 언어를 이해하고 생성할 수 있게 되었습니다.
LLM은 인공지능 세계의 언어 장인이라고 할 수 있으며, 번역, 요약, 창의적인 이야기, 심지어 시까지 다양한 콘텐츠를 만들어냅니다. 다만 범위는 대체로 언어 관련 작업에 한정됩니다.
반면 에이전트는 주로 행동에 초점을 맞춥니다. 이들은 탐색하고, 객체와 상호 작용하며, 인지한 바를 바탕으로 결정을 내릴 수 있습니다.
요약하자면, 언어 모델은 두뇌이고 에이전트는 손입니다. 함께할 때 강력한 조합을 이룹니다.
이처럼 에이전트가 AI 애플리케이션에서 중요한 역할을 하는데, 여러 에이전트가 함께 일해야 할 때 이들의 복잡성을 어떻게 관리할까요? 바로 여기서 에이전트 프레임워크가 필요해집니다.
에이전트 프레임워크가 필요한 이유
에이전트 프레임워크의 필요성은 AI 애플리케이션이 점점 복잡해지는 데서 비롯됩니다. 특히 여러 에이전트가 협력해 공동의 목표를 달성해야 하는 경우가 그렇습니다. 왜 에이전트 프레임워크가 필수인지 살펴보겠습니다.
오케스트레이션과 조정
AI 시스템이 확장됨에 따라, 다양한 역량을 가진 수많은 에이전트가 포함되는 경우가 많습니다. 이러한 상호 작용을 관리하고 조화롭게 작동하도록 보장하는 일은 갈수록 어려워집니다.
에이전트 프레임워크는 에이전트의 활동을 오케스트레이션하고, 역할과 책임을 정의하며, 커뮤니케이션을 개선할 수 있는 구조화된 환경을 제공합니다.
다중 에이전트 시스템에서는 가장 적합한 에이전트에게 작업을 효율적으로 할당하고 공유 자원을 효과적으로 관리하는 것이 중요합니다. 에이전트 프레임워크는 작업 할당, 자원 협상, 충돌 해결을 위한 동적 메커니즘을 제공합니다.
모듈성 및 재사용성
에이전트 프레임워크는 에이전트를 독립 컴포넌트로 설계·구현하는 모듈식 접근을 장려합니다. 이러한 모듈성은 코드 구성을 개선하고, 다양한 프로젝트에서 에이전트 모듈을 재사용할 수 있게 하여 복잡한 시스템의 개발과 유지 관리를 단순화합니다. 컴포넌트 기반 구조 덕분에 AI 개발자는 더 큰 시스템을 방해하지 않고 개별 에이전트에 집중할 수 있습니다.
또한 에이전트 프레임워크는 종종 역할 기반 아키텍처를 채택해, 개발자가 에이전트에 특정 역할을 부여하고 그에 따른 역량과 권한을 정의할 수 있게 합니다. 이러한 역할 기반 설계는 에이전트를 전체 아키텍처에 큰 영향을 주지 않고 추가, 제거, 수정할 수 있는 더 조직적이고 관리 가능한 시스템을 만듭니다. 이 유연성 덕분에 시스템은 대대적인 재설계 없이도 새로운 요구 사항에 맞춰 발전하고 적응할 수 있습니다.
적응성 및 학습
현실 세계의 환경은 대개 역동적이고 예측 불가능하며 지속적으로 변화합니다. 에이전트 프레임워크는 에이전트가 주변 변화을 감지하고 그에 맞게 행동을 조정할 수 있도록 지원합니다. 이러한 적응성은 복잡하고 끊임없이 변하는 상황에서도 에이전트가 효과적으로 기능하도록 보장해, 현실 문제를 더 잘 다루게 합니다.
더 나아가 에이전트 프레임워크는 에이전트가 시간에 따라 성능을 향상할 수 있도록 하는 학습 메커니즘을 자주 포함합니다. 피드백과 경험으로부터 학습함으로써, 에이전트는 의사결정 과정을 지속적으로 최적화하고 새로운 도전에 적응할 수 있습니다. 이러한 지속적 개선은 에이전트를 더욱 효과적이고 가치 있게 만들어, 장기적인 시스템 효율성과 성공에 기여합니다.
이제 에이전트 프레임워크 얘기가 나온 김에, AI 커뮤니티에서 주목받고 있는 CrewAI를 소개합니다.
CrewAI란?
CrewAI는 두 가지 상호 보완적인 빌딩 블록을 중심으로 구축된 오픈 소스 파이썬 프레임워크입니다:
- Crews — 역할 기반 의사결정을 통해 자율적으로 협업하는 AI 에이전트 팀 — 그리고
- Flows — 자동화를 세밀하게 제어할 수 있는, 프로덕션 준비 완료의 이벤트 구동 워크플로
이 둘을 함께 사용하면 간단한 리서치 파이프라인부터 완전 자율형 다중 에이전트 시스템까지 무엇이든 구축할 수 있습니다.

이 프레임워크는 웹 검색 엔진과 언어 모델을 포함한 다양한 도구로 구성되어 있어, 에이전트가 외부 세계와 상호 작용하고 정보를 수집하며 목표를 달성하기 위해 행동할 수 있게 합니다.
CrewAI의 설계와 확장성은 기본부터 복잡한 다중 에이전트 애플리케이션까지 개발하는 데 적합하며, AI 시스템 내에서 과제 해결과 의사결정을 위한 협업적 접근을 촉진합니다.
이제 CrewAI로 다중 에이전트 시스템을 구축할 때 강력한 이유가 되는 핵심 기능을 살펴보겠습니다.
- 에이전트 오케스트레이션: CrewAI는 모든 에이전트가 자신의 역할을 정확히 알도록 보장합니다. 에이전트의 행동을 정의하고 조율하는 도구를 제공해 모두가 호흡을 맞출 수 있게 합니다.
- 역할 기반 아키텍처: 연주자에게 서로 다른 악기를 배정하듯, CrewAI는 에이전트에 특정 역할을 부여해 역량과 권한을 정의할 수 있게 합니다. 이는 복잡한 상황에서도 모듈식이고 잘 구조화된 시스템을 만듭니다.
- 유연한 커뮤니케이션: CrewAI는 다양한 커뮤니케이션 채널을 지원해 에이전트 간 정보 교환이 원활합니다. 개인 채팅, 그룹 토론, 메가폰을 한데 모은 것과 비슷하다고 보시면 됩니다.
- 도구 통합: CrewAI는 다양한 도구를 통해 에이전트가 세상과 상호 작용하도록 지원합니다. 이를 통해 웹 검색, 언어 이해, 데이터 분석, 사용자 정의 작업 수행이 가능합니다.
- 확장성: CrewAI는 손쉬운 확장을 염두에 두고 설계되어, 시스템이 성장해도 다중 에이전트 시스템이 민첩하고 효율적으로 유지됩니다.
그렇다면 CrewAI는 어떤 이점을 제공할까요? 계속해서 살펴보겠습니다.
CrewAI Flows 및 Crews
CrewAI는 간단한 에이전트 작업부터 복잡한 프로덕션 파이프라인까지 처리하도록 함께 동작하는 두 가지 상호 보완적인 빌딩 블록을 중심으로 구축되었습니다.
Crews는 자율적으로 협업하는 AI 에이전트 팀입니다. Crew의 각 에이전트는 역할, 목표, 배경 스토리가 정의되어 있으며, 서로 작업을 분담하고 위임하며, 모든 단계를 일일이 스크립팅할 필요 없이 함께 결정을 내립니다. 무언가를 어떻게 해낼지 에이전트가 스스로 도출하길 원할 때 Crew를 사용합니다.
Flows는 Crews 위에서 동작하는 오케스트레이션 레이어입니다. Flow를 사용하면 여러 Crew를 연결하고, 단계 간 조건 로직을 추가하고, 파이프라인 전반의 상태를 관리하며, 이벤트에 따라 동작을 트리거할 수 있습니다. Crew가 자율성을 제공한다면, Flow는 통제력을 제공합니다.
| Crews | Flows | |
|---|---|---|
| 적합한 용도 | 자율적이고 협업적인 에이전트 작업 | 통제된 실행을 갖춘 다단계 파이프라인 |
| 통제 수준 | 에이전트 주도 | 개발자 정의 |
| 사용 시점 | 에이전트가 ‘어떻게’를 스스로 도출하길 원할 때 | 무엇, 언제, 조건을 통제해야 할 때 |
대부분의 초보자에게는 Crews부터 시작하는 것이 좋습니다. 프로덕션급 안정성이 필요할 때에만 Flows를 사용하세요. 확장이 필요할 때 Flows가 해답입니다.
CrewAI 사용의 이점
CrewAI는 여러 AI 에이전트가 협업하고 지식을 공유하며 공통 목표를 향해 행동을 조율하도록 해줍니다.
작업 분배와 자원 관리를 자동화함으로써, CrewAI는 에이전트가 최소한의 오버헤드로 자신의 역할에 집중하도록 합니다.
이 프레임워크는 적응성도 지원하여, 에이전트가 변화하는 조건이나 목표에 맞춰 행동을 조정할 수 있게 합니다.
또한 CrewAI는 다중 에이전트 시스템을 만들고 관리하기 위한 사용자 친화적 플랫폼을 제공해 개발 과정을 단순화합니다.

CrewAI의 또 다른 강점은 다양한 도구와의 통합입니다. 이를 통해 에이전트의 역량이 확장되어 외부 세계와 상호 작용하고 정보를 수집할 수 있습니다.
CrewAI는 웹 검색 엔진, 언어 모델, 데이터 분석 도구, 심지어 사용자 정의 기능까지 지원합니다. 덕분에 에이전트는 웹에서 정보 가져오기나 복잡한 데이터 분석 등 핵심 역량을 넘어서는 작업도 수행할 수 있습니다.
핸즈온: CrewAI로 웹 검색 도구 만들기
이제 소매를 걷고 CrewAI 도구를 사용해 웹사이트에서 콘텐츠를 스크레이핑하고, 그 위에 RAG를 수행하는 워크플로를 만들어 보겠습니다.
도구가 동작하도록 코드를 작성해야 합니다. 시작하기 전에 pip으로 crewai-tools와 crewai 패키지를 설치하겠습니다:
# Install CrewAI with tools support
pip install 'crewai[tools]'
# Or using uv (recommended by CrewAI for dependency management)
uv add 'crewai[tools]'
패키지를 설치했으면 아래 단계를 따라주세요. 이 예시에서는 웹사이트를 스크레이핑하는 ScrapeWebsiteTool, 파일을 기록하는 FileWriterTool, RAG를 위한 컨텍스트 검색에 쓰는 TXTSearchTool의 세 가지 도구를 사용합니다. 시작해 보겠습니다.
1단계: 웹사이트 스크레이핑
먼저 필요한 라이브러리를 임포트하고 ScrapeWebsiteTool을 초기화합니다. 이 도구는 웹사이트에서 콘텐츠를 추출하는 데 사용됩니다. 여기서는 위키피디아의 "Artificial Intelligence" 페이지에서 콘텐츠를 스크레이핑하도록 설정했습니다:
from crewai_tools import ScrapeWebsiteTool, FileWriterTool, TXTSearchTool
import requests
# Initialize the tool, potentially passing the session
tool = ScrapeWebsiteTool(website_url='https://en.wikipedia.org/wiki/Artificial_intelligence')
# Extract the text
text = tool.run()
print(text)
2단계: 추출한 텍스트를 파일로 저장
이제 FileWriterTool을 사용해 추출한 텍스트를 ai.txt라는 파일에 저장합니다.
# Initialize the tool
file_writer_tool = FileWriterTool()
# Write content to a file in a specified directory
result = file_writer_tool._run(filename='ai.txt', content = text, directory = '', overwrite=True)
print(result)
3단계: 텍스트 검색 도구 설정
방금 저장한 ai.txt 파일의 내용을 검색할 또 다른 도구를 설정합니다. 또한 OpenAI API 키를 위한 환경 변수를 설정합니다.
import os
from crewai_tools import TXTSearchTool
os.environ['OPENAI_API_KEY'] = 'API-KEY'
# Initialize the tool with a specific text file, so the agent can search within the given text file's content
tool = TXTSearchTool(txt='ai.txt')
4단계: 작업을 위한 에이전트를 만들고 실행
교육자 역할을 가진 데이터 분석가 에이전트를 만듭니다. 이 에이전트의 작업은 파일에서 검색한 텍스트를 바탕으로 "자연어 처리는 무엇인가?"라는 질문에 답하는 것입니다.
from crewai import Agent, Task, Crew
context = tool.run('What is natural language processing?')
data_analyst = Agent(
role='Educator',
goal=f'Based on the context provided, answer the question - What is Natural Language Processing? Context - {context}',
backstory='You are a data expert',
verbose=True,
allow_delegation=False,
tools=[tool]
)
test_task = Task(
description="Using the provided context, answer the question: What is Natural Language Processing?",
tools=[tool],
agent=data_analyst,
expected_output='A clear, 2-3 paragraph explanation of Natural Language Processing, covering its definition, key techniques, and common applications.'
)
crew = Crew(
agents=[data_analyst],
tasks=[test_task]
)
output = crew.kickoff()

CrewAI와 LangGraph, AutoGen 비교
CrewAI의 주요 대안은 LangGraph와 Microsoft의 AutoGen입니다. CrewAI의 가장 큰 강점은 역할 기반 에이전트 패러다임입니다. 즉, 역할, 목표, 배경 스토리를 가진 에이전트를 정의함으로써 인간 팀의 협업 방식을 밀접하게 반영하는 행동을 이끌어낼 수 있습니다.
LangGraph는 그래프 기반 접근을 통해 실행 흐름에 대한 더 강력한 제어를 제공하지만, 방향성 그래프와 상태 관리 개념을 이해해야 합니다. 다중 에이전트 시스템에 처음 입문하는 대부분의 개발자에게는 CrewAI가 작동하는 프로토타입에 도달하는 더 빠른 경로입니다.
결론
CrewAI는 다중 에이전트 시스템을 관리하기 위한 실용적인 플랫폼을 제공합니다. 콘텐츠 스크레이핑이든 작업 위임이든, 이 프레임워크는 에이전트 간 협업을 지원하고 적응 및 개선을 돕습니다.
도구 통합과 체계적인 구조를 제공함으로써, CrewAI는 개발자가 에이전트 상호 작용을 관리하고 작업을 분배하며 최적의 성능을 보장하기 쉽게 만들어 줍니다.