✍️ CrewAI의 핵심 구성요소 — Agent와 Task [2]
22 Apr 2025
지난 시간에는 CrewAI의 전체적인 개념과 구조를 살펴봤습니다.
이제 본격적으로 CrewAI를 구성하는 핵심 개념인 Agent와 Task에 대해 자세히 알아보겠습니다.
CrewAI - 멀티에이전트 프레임워크의 이해[1]이제 본격적으로 CrewAI를 구성하는 핵심 개념인 Agent와 Task에 대해 자세히 알아보겠습니다.
Loading...
🧠 CrewAI의 두 축: Agent와 Task
🔹 Agent란?
Agent는 CrewAI 프레임워크 내에서 특정 역할과 목표를 가지고 독립적으로 작업을 수행하며, 다른 에이전트들과 협업하여 복잡한 목표를 달성하는 자율적 AI 단위를 의미합니다.
CrewAI 에이전트의 주요 특징
- 자율성과 전문성 각 에이전트는 자신에게 할당된 역할과 목표에 따라 데이터 분석, 웹 검색, 텍스트 요약 등 특정 작업을 독립적으로 수행합니다.
- 역할 기반 구조 에이전트는 연구원, 작가, 개발자, 검토자 등과 같이 특화된 역할을 부여받으며, 각 역할은 고유한 능력과 권한, 때로는 배경 스토리까지 갖추고 있어 실제 팀과 유사한 협업과 효율적인 업무 분담이 가능합니다.
- 의사결정 및 협업 에이전트는 독립적으로 의사결정을 내리고, 하위 작업을 위임하거나 다른 에이전트와 소통할 수 있어 협력적 문제 해결과 워크플로우 조정이 가능합니다.
- 도구 통합 에이전트는 다양한 소프트웨어, API, 데이터베이스, 웹 검색 엔진, 언어 모델 등의 도구를 활용하여 자신의 기능을 확장할 수 있습니다.
- 확장성과 유연성 CrewAI는 단순한 프로젝트부터 기업 규모의 자동화까지 다양한 복잡도의 멀티 에이전트 시스템을 지원합니다.
CrewAI 에이전트의 장점
- 향상된 협업: 여러 에이전트가 지식을 공유하고 복잡한 작업을 함께 수행할 수 있습니다.
- 자동화: 반복적이고 다단계 또는 협업이 필요한 비즈니스 프로세스를 자동화할 수 있습니다. (예: 이벤트 기획, 기술 문서 작성, 고객 지원 등)
- 적응성: 에이전트는 목표나 외부 조건 변화에 따라 행동을 조정할 수 있습니다.
- 개발 용이성: CrewAI는 멀티 에이전트 시스템을 쉽고 빠르게 정의, 관리, 확장할 수 있는 플랫폼을 제공합니다.
CrewAI 에이전트 기능 요약 표
기능 | 설명 |
---|---|
자율성 | 역할과 목표 내에서 독립적으로 작동 |
역할 할당 | 각 에이전트는 특정 기능(예: 연구원, 개발자 등)을 담당 |
도구 활용 | 웹 검색, 데이터 분석 등 통합 도구 사용 |
협업 | 에이전트 간 소통 및 작업 위임 가능 |
확장성 | 단순 프로젝트부터 기업 규모까지 지원 |
맞춤화 | 에이전트 로직과 워크플로우를 세밀하게 제어 및 커스터마이즈 가능 |
CrewAI 에이전트의 협업 방식
CrewAI는 에이전트들을 "크루(crew)"라는 팀 단위로 조직합니다. 각 크루는 여러 역할의 에이전트로 구성되며, 이들은 공동의 목표를 달성하기 위해 협력합니다. 프레임워크는 워크플로우, 작업 분배, 에이전트 간 상호작용을 관리하여 효율적이고 체계적인 작업 진행을 보장합니다.
예시 워크플로우
- 크루(Crew): 프로젝트를 관리하는 팀 전체
- 에이전트(Agent): 데이터 분석가, 웹 리서처 등 특화된 역할의 멤버
- 작업(Task): 데이터 수집, 결과 분석 등 개별 할당 업무
- 프로세스(Process): 작업이 분배되고 완료되는 절차와 논리
- Agent는 "무엇을 해야 하는지"보다는 "어떻게 행동할 것인가"에 집중합니다.
예시 역할:
- 기획자 (Planner)
- 작가 (Writer)
- 검토자 (Reviewer)
- 요약가 (Summarizer)
from crewai import Agent
writer = Agent(
role="콘텐츠 작가",
goal="주어진 주제에 맞춰 매력적인 블로그 초안을 작성한다",
backstory="5년 경력의 기술 블로거로, 독자 친화적인 글을 작성하는 데 전문성이 있다.",
verbose=True
)
🔹 Task란?
Task는 Agent가 수행하는 개별적이고 명확한 목표를 가진 할당 단위(작업지시)입니다. 각 Task는 실행에 필요한 모든 정보를 포함하며, CrewAI 시스템의 핵심 구성 요소로서 에이전트의 역할, 도구, 기대 결과 등을 상세히 정의합니다
CrewAI Task의 주요 속성
- Description(설명): 작업의 목적과 내용을 간결하게 기술합니다.
- Agent(에이전트): 해당 작업을 담당할 에이전트를 지정합니다. 에이전트는 역할, 전문성, 가용성에 따라 직접 지정하거나, CrewAI의 프로세스(예: hierarchical)에서 자동으로 할당할 수 있습니다.
- Expected Output(기대 결과): 작업의 산출물(예: 요약, 보고서 등)을 명확하게 정의하여 결과의 품질과 일관성을 높입니다.
- Tools(도구): 에이전트가 작업을 수행할 때 사용할 수 있는 기능이나 외부 API, 데이터 소스 등을 지정할 수 있습니다. 이를 통해 작업의 복잡성과 효율성을 높일 수 있습니다.
- Async Execution(비동기 실행): 여러 작업을 동시에 처리할 수 있도록 하여 전체 워크플로우의 속도와 효율성을 향상시킵니다.
- Context(문맥/의존성): 다른 작업의 결과를 입력으로 받아 사용할 수 있도록 하여, 여러 작업 간의 연계와 협업을 실현합니다.
CrewAI Task의 작동 방식
- 작업 정의 각 Task는 description, expected output, agent, tools 등 주요 속성을 포함해 코드 또는 YAML로 정의합니다.
- 에이전트 할당 작업은 직접 지정된 에이전트가 수행하거나, hierarchical 프로세스에서는 매니저 역할의 에이전트가 적합한 멤버에게 동적으로 할당합니다.
- 도구 통합 및 실행 필요한 도구를 지정해 에이전트가 최적의 환경에서 작업을 수행할 수 있도록 하며, 비동기 실행을 통해 여러 작업을 병렬로 처리할 수 있습니다.
- 결과 검증 및 연계 각 Task의 결과는 명확한 기대 결과와 검증 과정을 거치며, 필요시 후속 작업의 입력으로 활용됩니다.
from crewai import Task
write_blog_task = Task(
description="주제에 맞는 블로그 글 초안을 작성하라. 문단 구성을 명확히 하고, 기술적인 내용을 쉽게 설명할 것.",
expected_output="마크다운 형식의 블로그 글 초안",
agent=writer,
async_execution=False
)
CrewAI Task의 장점
- 역할 기반 분업과 효율적인 협업 구조
- 도구 및 외부 서비스와의 유연한 통합
- 비동기 실행 및 작업 간 의존성 관리로 복잡한 워크플로우 지원
- 명확한 산출물 정의로 품질 및 신뢰성 향상
CrewAI의 Task는 AI 에이전트 협업의 기본 단위로, 명확한 목표, 도구, 결과 정의를 통해 효율적이고 유연한 자동화 워크플로우를 구축할 수 있게 해줍니다.
🛠️ 실습 예제: 블로그 글 초안 작성
이제 실제로 CrewAI를 사용해서 간단한 콘텐츠 작성 파이프라인을 구성해보겠습니다.
🧪 시나리오
“CrewAI를 소개하는 블로그 초안을 작성하라”
✅ 코드 예제
# 필요한 패키지 설치 (한 번만 실행)
# pip install crewai langchain openai
from crewai import Agent, Task, Crew
from langchain.chat_models import ChatOpenAI
import os
# OpenAI API 키 설정
os.environ["OPENAI_API_KEY"] = "your-api-key"
# 언어 모델 정의
llm = ChatOpenAI(model_name="gpt-4", temperature=0.7)
# 1. 작가 에이전트 정의
writer = Agent(
role="블로그 작가",
goal="기술 블로그 글 초안을 작성한다",
backstory="5년 차 전문 기술 작가로, 복잡한 내용을 쉽게 풀어 설명하는 데 능숙하다.",
verbose=True,
llm=llm
)
# 2. 작성 태스크 정의
write_task = Task(
description="주제: 'CrewAI란 무엇인가?'. 이 주제에 맞는 블로그 글 초안을 작성하라. "
"마크다운 형식으로 문단 구분과 구조를 명확히 하고, 너무 기술적이지 않게 작성할 것.",
expected_output="마크다운 형식의 블로그 글 초안",
agent=writer
)
# 3. 크루 구성 및 실행
crew = Crew(
agents=[writer],
tasks=[write_task],
verbose=True
)
result = crew.run()
print(result)
💡 실행 결과 예시 (요약)
# CrewAI란 무엇인가? — 멀티에이전트 프레임워크의 이해
CrewAI는 여러 AI 에이전트가 팀처럼 협력하여 문제를 해결할 수 있도록 설계된 프레임워크입니다...
🧩 역할 기반 설계 팁
여러 Agent를 조합하면 더 강력한 워크플로우도 가능해집니다. 예:
역할 | 목적 |
---|---|
기획자 | 주제 선정, 키포인트 정리 |
작가 | 본문 작성 |
검토자 | 흐름 검토, 피드백 생성 |
요약가 | TL;DR 요약 작성 |
각 역할은
Agent
+ Task
의 쌍으로 구성하면 돼요.✅ 마무리 정리
Agent
: 역할, 목표, 성격을 가진 AI 인격체Task
: 해당 Agent가 수행해야 할 실제 업무- 구성 조합을 통해 다양한 앱, 서비스에 CrewAI를 활용할 수 있음
👉 [3화 예고] Crew를 꾸려보자 — 멀티에이전트 워크플로우 구성하기
다음 글에서는 여러 에이전트를 연결하여 협력하는 구조를 실제로 구현해 보겠습니다..
다음 글에서는 여러 에이전트를 연결하여 협력하는 구조를 실제로 구현해 보겠습니다..