AI 에이전트 팀 구성하기: 여러 AI가 협력해 복잡한 일을 처리하는 구조

AI

멀티 에이전트AI 오케스트레이션LangGraphCrewAIAI 자동화

이 글은 누구를 위한 것인가

  • AI 에이전트를 업무 자동화에 활용하고 싶은 분
  • 단일 AI로 해결 못하는 복잡한 작업을 AI로 처리하는 방법이 궁금한 개발자
  • LangGraph, CrewAI 같은 에이전트 프레임워크가 궁금한 분

들어가며

"AI에게 우리 제품의 경쟁사 분석 리포트 작성을 맡겨보고 싶은데, 가능할까요?"

가능하다. 하지만 하나의 AI에게 "경쟁사 분석 리포트 써줘"라고 하면 좋은 결과가 나오기 어렵다. 웹 검색, 데이터 수집, 분석, 시각화, 문서 작성 — 이 작업들이 각각 전문성이 필요하기 때문이다.

사람도 마찬가지다. 복잡한 프로젝트는 혼자 다 하지 않는다. 팀을 구성해서 역할을 나눈다. AI도 이제 팀으로 일한다. 이것이 멀티 에이전트 시스템이다.


1. 단일 AI 에이전트의 한계

단일 AI가 복잡한 태스크를 혼자 처리할 때 생기는 문제들이 있다.

컨텍스트 길이 한계 경쟁사 분석이라면 수십 개 웹페이지를 읽어야 한다. 이 모든 내용이 AI의 컨텍스트 윈도우를 금방 넘어버린다.

전문성의 한계 검색을 잘 하는 AI와 글을 잘 쓰는 AI는 다른 특성을 가질 수 있다. 하나의 AI가 모든 것을 다 잘 하기는 어렵다.

신뢰성과 검증 AI가 생성한 내용을 또 다른 AI가 검토하면 오류를 더 잘 잡아낼 수 있다. 사람도 자기 글을 스스로 교정하는 것보다 다른 사람이 교정하는 게 낫듯이.


2. 멀티 에이전트 시스템이란

멀티 에이전트 시스템은 각자 역할이 있는 여러 AI가 협력해 공동 목표를 달성하는 구조다.

[경쟁사 분석 리포트 멀티 에이전트 예시]

오케스트레이터(감독 AI)
  ├── 검색 에이전트: 경쟁사 A, B, C 정보 웹 검색
  ├── 분석 에이전트: 수집된 정보에서 패턴 추출
  ├── 데이터 시각화 에이전트: 차트 코드 생성
  └── 작성 에이전트: 최종 리포트 문서 작성

→ 오케스트레이터가 각 에이전트 결과를 조율해 최종 리포트 완성

3. 주요 오케스트레이션 패턴

패턴 1: Supervisor/Worker (감독자-작업자)

가장 직관적인 구조다. 감독 에이전트가 전체를 조율하고, 작업 에이전트들이 구체적인 작업을 수행한다.

감독 에이전트
  ↓ 태스크 분배
  ├── 작업 에이전트 A: 데이터 수집
  ├── 작업 에이전트 B: 분석
  └── 작업 에이전트 C: 리포트 작성
  ↑ 결과 수집 및 통합
감독 에이전트 → 최종 결과

언제 쓰나: 태스크가 명확히 분리되고, 중앙에서 조율이 필요할 때

패턴 2: Pipeline (파이프라인)

각 에이전트의 출력이 다음 에이전트의 입력이 된다. 조립 라인처럼 흐른다.

에이전트 A (검색) → 에이전트 B (요약) → 에이전트 C (번역) → 최종 결과

언제 쓰나: 순차적으로 처리해야 하는 데이터 변환 작업

패턴 3: Critic 패턴 (비평자 패턴)

생성자 에이전트와 비평자 에이전트가 짝을 이룬다.

생성자 에이전트: 코드 작성
  ↓
비평자 에이전트: 코드 검토 (버그, 보안, 성능 이슈 확인)
  ↓
생성자 에이전트: 피드백 반영해 수정
  ↓ (반복 N회)
최종 검증된 코드

언제 쓰나: 품질이 중요한 작업, 코드 생성, 문서 작성


4. 주요 프레임워크 비교

프레임워크특징학습 곡선적합한 케이스
LangGraph그래프 기반 워크플로우, 유연성 최고높음복잡한 커스텀 워크플로우
CrewAI역할 기반, 직관적 API낮음빠른 프로토타이핑
AutoGen (Microsoft)대화 기반, 코드 실행 특화중간코딩 자동화
Claude Agent SDKAnthropic 공식 SDK낮음Claude 기반 에이전트
LangChain방대한 생태계중간다양한 LLM, 도구 연동

5. CrewAI로 만드는 간단한 멀티 에이전트

CrewAI는 사람 팀처럼 역할(Role), 목표(Goal), 배경(Backstory)을 가진 에이전트를 정의한다.

from crewai import Agent, Task, Crew

# 연구자 에이전트
researcher = Agent(
    role='시장 조사 전문가',
    goal='최신 AI 트렌드를 정확하게 수집하고 정리한다',
    backstory='10년 경력의 테크 리서처. 신뢰할 수 있는 정보만 선별한다.',
    tools=[search_tool],  # 웹 검색 도구
    verbose=True
)

# 작가 에이전트
writer = Agent(
    role='테크 블로그 작가',
    goal='연구 결과를 일반인도 이해하기 쉬운 글로 작성한다',
    backstory='전문 지식을 쉽게 풀어쓰는 능력이 뛰어난 작가.',
    verbose=True
)

# 태스크 정의
research_task = Task(
    description='2026년 AI 에이전트 시장 최신 트렌드를 조사하라',
    agent=researcher,
    expected_output='핵심 트렌드 5가지와 각 근거 자료'
)

writing_task = Task(
    description='조사 결과를 바탕으로 블로그 포스트를 작성하라',
    agent=writer,
    context=[research_task],  # 연구 결과를 참고
    expected_output='1000자 이상의 블로그 포스트'
)

# Crew 구성 및 실행
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task]
)

result = crew.kickoff()
print(result)

6. 에이전트 간 상태 공유와 실패 복구

멀티 에이전트의 가장 어려운 부분이 상태 관리실패 처리다.

상태 공유: 에이전트들이 서로의 진행 상황을 알아야 한다. LangGraph는 그래프의 각 노드(에이전트)가 공유 상태(State)를 읽고 쓰는 방식으로 이 문제를 해결한다.

실패 복구: 에이전트 하나가 실패하면 전체가 멈추면 안 된다. 두 가지 전략이 있다:

  1. 재시도(Retry): 같은 에이전트가 다시 시도
  2. 폴백(Fallback): 다른 방법으로 같은 결과를 얻는 대안 에이전트 실행
# LangGraph 실패 처리 예시
from langgraph.graph import StateGraph

def research_with_retry(state):
    max_retries = 3
    for attempt in range(max_retries):
        try:
            result = research_agent.run(state["query"])
            return {"research": result}
        except Exception as e:
            if attempt == max_retries - 1:
                # 최대 재시도 후 실패 시 간소화된 검색으로 폴백
                return {"research": simple_search(state["query"])}

7. 실제 활용 사례

코드 리뷰 자동화

PR 생성
  → 코드 분석 에이전트 (보안 취약점, 성능 이슈 확인)
  → 스타일 검사 에이전트 (코딩 컨벤션 준수 여부)
  → 요약 에이전트 (리뷰 코멘트 종합)
  → GitHub PR에 자동 코멘트

고객 응대 에이전트 팀

고객 문의 접수
  → 분류 에이전트 (일반문의 / 불만 / 기술 지원)
  → 전문 에이전트 (해당 유형별 전문 응답)
  → 품질 검사 에이전트 (응답 적절성 확인)
  → 최종 응답 발송

맺으며

멀티 에이전트는 "AI를 더 크게 쓰는 것"이 아니라 "AI를 더 똑똑하게 조직하는 것"이다. 사람 조직이 분업과 협력으로 더 큰 성과를 내듯이, AI도 팀으로 구성하면 단독으로는 불가능한 복잡한 작업을 처리할 수 있다.

복잡한 프레임워크부터 시작할 필요는 없다. 지금 AI에게 시키려는 작업을 하위 작업으로 나눠보고, 그것을 순서대로 실행하는 파이프라인 구조부터 시작해보자. 그것이 멀티 에이전트의 첫 걸음이다.