TL;DR — 멀티 에이전트 협업은 복잡한 작업을 여러 전문화된 AI 에이전트가 나눠 맡아 협력하는 패턴입니다. 한 마디로 “AI 시스템에 회사 조직도를 그려 주는 것”이죠. 단일 에이전트의 4대 한계(컨텍스트 과부하·전문성 부족·확장성 제한·검증 불가)를 분업과 협업으로 넘어섭니다. 두 축으로 설계합니다 — 협업 형태 6가지(순차·병렬·토론·계층·전문가팀·비평검토)와 통신 구조 6가지(단일·네트워크·Supervisor·Supervisor-as-Tool·계층·커스텀). 핵심 설계 패턴은 Supervisor(중앙 조율)·Swarm/Handoff(자율 전달)·Hierarchical(다층 위임)입니다. LangGraph(Command·핸드오프 도구)·CrewAI(Process.hierarchical)·Google ADK(output_key)로 구현하고, CRM·ERP·Groupware에 단계적으로 적용합니다. 단, 비용·무한 루프·SPOF를 막을 안전장치(HITL·롤백·Critic)가 처음부터 필요합니다.
1. 왜 멀티 에이전트인가 — 한 명의 천재 vs 한 팀의 전문가
앞선 여섯 편을 빠르게 되짚어 봅시다. 1편 프롬프트 체이닝은 작업을 순서대로 쪼갰고, 2편 라우팅은 길을 나눴으며, 3편 병렬화는 독립 작업을 동시에 던졌고, 4편 리플렉션은 쓴 결과를 읽고 고쳤습니다. 5편 도구 사용은 손과 발을 달았고, 6편 플래닝은 목표를 단계로 쪼개는 청사진을 그렸죠. 그런데 그 모든 일을 여전히 ‘한 에이전트’가 혼자 했습니다. 여기서 결정적인 질문이 남습니다 — “계획을 세웠다면, 그 계획의 각 단계는 누가 실행하지?”
한 사람에게 조사도, 분석도, 글쓰기도, 검수도 전부 시키면 어떻게 될까요? 평범한 결과가 나옵니다. “Jack of all trades, master of none” — 두루 하지만 어느 것도 통달하지 못하죠. 멀티 에이전트 협업은 이 문제를 회사가 푸는 방식 그대로 풉니다. 조사는 리서처에게, 분석은 애널리스트에게, 글은 라이터에게, 검수는 리뷰어에게. 본질은 ‘분업과 협업(Division of Labor & Collaboration)’을 AI에 적용하는 것 — 다시 말해 AI 시스템에 조직도를 그려 주는 일입니다.
2. 한계와 정의 — 언제 팀을 꾸리는가
정의부터 못 박겠습니다. 멀티 에이전트 협업은 “복잡한 문제를 여러 전문화된 에이전트가 협력해 해결하는 설계 패턴”입니다. 핵심 3요소는 전문화된 역할(Specialization), 분산된 작업(Distributed Tasks), 에이전트 간 통신(Communication)입니다. 이 셋이 갖춰져야 단순한 “여러 번 호출”이 아니라 협업이 됩니다.
그렇다고 모든 일에 팀이 필요한 건 아닙니다 — 오히려 대부분의 작업엔 과합니다. 판단 기준(Rule of Thumb)은 이렇습니다. “단일 에이전트로 처리하기엔 복잡하고, 전문 기술·도구가 필요한 하위 작업으로 분해할 수 있는가?” “예”라면 팀, “아니오”라면 혼자가 낫습니다.
| 단일 에이전트의 한계 | 멀티 에이전트가 주는 답 | 메커니즘 |
|---|---|---|
| 컨텍스트 과부하 | 전문성 | 역할별로 컨텍스트를 좁게 |
| 전문성 부족 | 시너지 | 서로 다른 관점의 결합 |
| 확장성 제한 | 모듈성 | 에이전트 추가/제거로 확장 |
| 검증 불가 | 강건성 | 동료 검토(Critic)로 상호 검증 |
3. 협업 형태와 통신 구조 — 6 × 6 지도
멀티 에이전트를 설계할 땐 두 개의 다른 축을 구분해야 헷갈리지 않습니다. 협업 형태(무엇을 하나)와 통신 구조(어떻게 연결되나)입니다. “순차로 일한다”는 형태이고, “Supervisor가 조율한다”는 구조죠. 둘을 조합해 시스템을 짓습니다.
콘텐츠 파이프라인 · 문서 승인
다각적 시장분석 · 다중 소스
정책 검토 · 의사결정 · 코드리뷰
대규모 프로젝트 · 엔터프라이즈
제품 개발 · 컨설팅
환각 감소 · 컴플라이언스
예를 들어 “Critic-Reviewer 형태”를 “Supervisor 구조”로 구현할 수도, “Network 구조”로 구현할 수도 있습니다. 형태가 일이라면 구조는 조직표죠. 이번 편에서 깊게 볼 것은 가장 실무적인 세 가지 구조 — Supervisor·Swarm/Handoff·Hierarchical입니다.
4. 핵심 설계 패턴 — Supervisor · Swarm · Hierarchical
실무에서 쓰이는 핵심 설계 패턴은 다섯입니다 — Manager/Supervisor, Swarm/Handoff, Pipeline, Parallel Fan-out/Fan-in, AgentTool. 이 중 통신 구조를 좌우하는 Manager/Supervisor와 Swarm/Handoff, 그리고 이를 여러 층으로 펼친 Hierarchical까지 세 가지를 깊이 봅시다.
5. 구현 ① LangGraph — Supervisor와 Command 객체
LangGraph는 협업을 상태 그래프(StateGraph)로 표현합니다. 각 에이전트가 노드가 되고, 한 노드에서 다른 노드로 제어가 넘어가는 게 핸드오프죠. 그 핸드오프를 도구(tool)로 만든다는 게 LangGraph 방식의 특징입니다. 먼저 핸드오프 도구 팩토리를 봅시다.
마법은 Command 한 객체에 있습니다. “어디로 갈지(goto)”와 “상태를 어떻게 바꿀지(update)”를 한 번에 반환하죠. graph=Command.PARENT는 “자식 그래프에서 처리하지 말고 부모 그래프로 제어를 돌려보내라”는 뜻 — 그래야 Supervisor가 다음 Worker로 다시 라우팅할 수 있습니다. 이제 Worker와 그래프 조립을 봅시다.
권한 비대칭이 보이시나요? Supervisor는 위임 도구 3개, 각 Worker는 복귀 도구 1개. 모든 길이 Supervisor를 통하는 허브-스포크가 코드 레벨에서 강제됩니다. 모든 노드가 MessagesState를 공유해 대화 이력이 누적되고요.
Researcher
Analyst
Writer
langgraph.prebuilt.create_handoff_tool·create_react_agent API에 맞춘 형태입니다. 학습 저장소의 예제는 동일 인터페이스를 가진 시뮬레이션 클래스로 개념을 보여 주며, 라우팅 판정도 시연용으로 단순화되어 있습니다. 프로덕션에선 종료 조건과 max_iterations 상한을 반드시 함께 거세요.6. 구현 ② CrewAI — 역할 기반 계층 Crew
CrewAI는 발상이 다릅니다. 그래프를 그리는 대신 “전문가 팀을 꾸린다”는 메타포로 접근하죠. Agent를 역할(role)·목표(goal)·배경(backstory)으로 정의하면, backstory가 LLM에게 역할극을 부여합니다. 레거시 ERP를 클라우드로 옮기는 마이그레이션 프로젝트를 팀으로 짜 봅시다.
세 가지가 핵심입니다. 첫째, context=[arch_task] — 이전 Task의 결과를 다음 Task로 명시적으로 흘려보내 의존성 체인을 코드로 박습니다(아키텍처 → 데이터 → QA). 둘째, allow_delegation — 매니저만 True, 워커는 False로 둬야 위계가 코드로 강제됩니다. 셋째, Process.hierarchical — 켜는 순간 매니저가 Task 분석 → 할당 → 검증 → 통합을 조율합니다.
정해진 순서대로, 마지막 결과만 반환
의존성 분석 → 할당 → 결과 종합
학습 곡선이 가장 낮고 역할 기반 분업이 네이티브라, “사람 팀이 일하듯” 협업을 빠르게 시뮬레이션할 때 제격입니다. 다만 함정도 있습니다 — hierarchical에서 매니저는 agents가 아니라 manager_agent로 넘겨야 하며(자동 생성을 원하면 manager_llm만 지정), 둘 중 하나는 줘야 조율 주체가 생깁니다. context를 누락하면 다음 Task가 이전 결과를 못 봅니다. 그리고 병렬·반복 워크플로우 지원은 제한적이라, 그 영역은 다음 ADK가 강합니다.
7. 구현 ③ Google ADK — 4대 오케스트레이터 + output_key
Google ADK는 워크플로우 에이전트를 조립식 블록으로 제공합니다. 개별 LlmAgent를 만든 뒤 SequentialAgent·ParallelAgent·LoopAgent로 감싸죠. 상태 전달의 핵심은 output_key 단 하나입니다.
진짜 일은 output_key가 합니다. 에이전트 결과가 세션 상태에 자동 저장되고, 다음 에이전트의 instruction에서 {변수}로 쓰면 알아서 치환됩니다 — 상태를 손으로 넘기는 코드가 사라지죠. 나머지 세 블록도 직관적입니다.
sub_agents는 조직도에 늘 있는 직원(항상 함께 실행되는 영구 계층)이고, AgentTool은 필요할 때만 부르는 외부 컨설턴트(LLM이 판단해 호출하는 도구)입니다. 세 블록은 서로 중첩됩니다 — Sequential 안에 Parallel을, 그 안에 Loop를 — 복잡한 오케스트레이션을 레고처럼 쌓죠. 단, 학습 예제의 ParallelAgent는 시뮬레이션 특성상 순차로 도는 등 단순화가 있으니, 실제 동작은 google.adk 라이브러리로 확인하세요.8. 세 프레임워크 — 같은 협업, 다른 철학
셋 다 “전문 에이전트가 협력한다”는 본질은 같습니다. 다른 건 무엇을 일급 시민으로 보느냐입니다 — LangGraph는 그래프(상태·흐름), CrewAI는 역할(팀), ADK는 워크플로우 블록이 주인공입니다.
| 실행 패턴 | LangGraph | CrewAI | Google ADK |
|---|---|---|---|
| 순차 실행 | 조건부 엣지 | Process.sequential | SequentialAgent |
| 병렬 실행 | Fan-out/Fan-in | 지원 제한 | ParallelAgent |
| 반복 실행 | 사이클 그래프 | 수동 구현 | LoopAgent |
| 계층 구조 | 서브그래프 | Process.hierarchical | sub_agents |
| Agent-as-Tool | 핸드오프 도구 | allow_delegation | AgentTool |
| 상태 관리 | MessagesState+Command | Task.context | output_key+{key} |
| 학습 곡선 | 중간 | 낮음 | 낮음 |
| 추천 환경 | 복잡한 워크플로우 | 팀 협업 시뮬레이션 | 병렬·반복 표준화 |
고르는 법은 간단합니다. 세밀한 제어·실시간 핸드오프·커스텀 통합이면 LangGraph, 역할 기반 팀·계층적 승인 프로세스면 CrewAI, 병렬·반복을 표준 블록으로 쌓고 Gemini를 쓰면 Google ADK. 제어 수준은 LangGraph > ADK > CrewAI 순으로 높고, 학습 곡선은 정확히 그 반대입니다.
9. 토폴로지 선택 — 중앙집중 vs 분산은 트레이드오프다
어떤 통신 구조를 고를지는 그 자체가 트레이드오프입니다. 정답은 없고, 무엇을 포기할지를 고르는 일이죠. 핵심 축은 중앙집중(Supervisor) ↔ 분산(Network/Swarm)입니다.
| 패턴 | 장점 | 대가 |
|---|---|---|
| Supervisor | 명확한 권한 · 디버깅 용이 | 병목(SPOF) · 유연성 제한 |
| Swarm/Handoff | 유연한 라우팅 · 분산 | 디버깅 난이도 · 무한 루프 |
| Hierarchical | 대규모 관리 · 책임 분산 | 레이턴시 · 통신 오버헤드 |
| Parallel | 처리 속도 · 리소스 효율 | 동기화 · 결과 통합 복잡 |
| Loop/Iterative | 품질 점진 개선 · 자기 수정 | 종료 조건 설계 · 비용 증가 |
5편의 LangGraph로 돌아가 보면, graph=Command.PARENT가 바로 이 선택의 도구입니다 — 자식 서브그래프에서 처리하다가 부모 그래프로 제어를 되돌려 중첩된 계층을 만들 수 있죠. Network(완전연결)는 복원력이 높지만 에이전트가 많아질수록 통신 오버헤드와 레이턴시가 폭증하고, Custom(Hub-and-Spoke/Ring)은 둘을 섞은 하이브리드입니다.
10. 엔터프라이즈 적용 — CRM · ERP · Groupware
기업 업무 대부분은 여러 시스템과 전문 영역을 거치는 협업입니다 — 정확히 멀티 에이전트가 노리는 지점이죠. 시스템별로 전문 에이전트 팀을 붙이면, 기대효과는 숫자로 그려집니다. (아래는 적용전략 문서의 도입 기대효과(목표치)이며 실측 사례가 아닙니다.)
문서 분류→요약→검토
CRM 고객 응대 워크플로우
CRM-ERP-GW 연계
성능 모니터링→자동 튜닝
기술적으로는 레거시를 그대로 두고 위에 얹는 계층 구조가 정석입니다. 요청은 인증·권한·감사를 맡는 Security Layer를 지나, Enterprise Orchestrator(요청 파싱→에이전트 할당→SLA 모니터링)가 지휘하고, Domain Agent(CRM/ERP/GW)가 Integration Layer·ESB(Salesforce·SAP·MS365)를 통해 실제 시스템을 두드립니다. 그 모든 행동을 Policy Engine이 통제하죠.
11. 케이스 스터디 — Supervisor CRM과 안전장치
실제 시나리오를 봅시다. 고객이 “구매한 AI 솔루션의 API 연동이 안 됩니다. 긴급히 해결이 필요합니다”라고 문의했습니다. CRM Supervisor(고객 서비스 팀장)가 이 한 줄을 받아 팀을 지휘합니다.
Supervisor가 inquiry_analyzer로 분류시키고, 결과(기술/긴급)를 보고 product_expert에게 배정하죠. 5편에서 본 핸드오프 도구가 정확히 이 흐름을 구현합니다(학습 예제는 분류·전문가 배정까지 구현하고, 기록·HITL 전환은 권장 설계 흐름입니다). 그런데 자율성이 커질수록 고삐가 중요해집니다.
안전장치 ① 어디까지 자동인가 — Policy Engine
엔터프라이즈 멀티 에이전트의 첫 번째 원칙은 “어떤 에이전트도 프로덕션 데이터를 직접 수정하지 않는다”입니다. 권한을 에이전트별로 잘게 쪼개고, 위험한 동작은 승인 게이트를 거치게 합니다.
응대 초안 생성
저위험·되돌릴 수 있는 작업
고객 데이터 수정/삭제
외부 시스템 쓰기 작업
재무 데이터 읽기 전용
프로덕션 직접 수정 불가
안전장치 ② 협업이기에 더 위험한 6가지 함정
max_iterations + 명확한 종료 키워드 필수12. 베스트 프랙티스 & 트레이드오프
팀을 꾸릴지 말지 — 의사결정
- 다양한 전문성이 필요한 복잡한 작업
- 독립 작업의 병렬 처리가 유리할 때
- 다단계 워크플로우(조사→분석→작성→검토)
- 상호 검증으로 품질을 높여야 할 때
- 엔터프라이즈 크로스시스템 프로세스
- 단순 질의응답·단일 문서 요약
- 간단한 데이터 변환
- 실시간 응답이 필수(레이턴시 민감)
- 저비용 운영이 필수(다중 LLM 호출)
트레이드오프 — 시너지엔 대가가 따른다
멀티 에이전트는 품질·강건성·확장성을 주는 대신 다중 LLM 호출 비용, 레이턴시 증가, 동기화·결과 통합 복잡성, 분산 디버깅의 어려움을 떠안깁니다. 그래서 “팀을 만들 수 있다”가 아니라 “이 작업에 팀이 정말 필요한가”를 먼저 물어야 합니다. 그리고 에이전트 입자도(granularity) — 너무 잘게 쪼개면 통신 오버헤드가, 너무 뭉치면 단일 에이전트의 한계로 회귀합니다. “각 에이전트에 명확하고 단일한 책임”이 균형점입니다.
다른 패턴과의 조합 — 멀티 에이전트는 ‘종합’이다
멀티 에이전트는 앞선 여섯 패턴을 한 무대에 모으는 종합 패턴입니다. 각 에이전트는 내부에서 체이닝하고, 라우터가 팀을 고르며, 독립 에이전트는 병렬로 돌고, Critic이 검토하죠.
| 조합 | 시너지 |
|---|---|
| + 프롬프트 체이닝(1편) | 각 에이전트 내부에서 작업을 단계별로 분해 |
| + 라우팅(2편) | 작업 유형에 따라 전문 Agent 팀으로 라우팅 |
| + 병렬화(3편) | 독립 Agent를 병렬 실행해 성능 향상(Fan-out/in) |
| + 리플렉션(4편) | Critic이 다른 Agent 결과를 검토(Critic-Reviewer) |
| + 도구 사용(5편) | 각 Agent가 외부 API·DB 도구로 작업 수행 |
| + 플래닝(6편) | 계획의 각 단계를 전문 Agent가 분담(Hierarchical) |
설계 체크리스트
- ✅ 각 에이전트에 명확하고 단일한 책임 · 입자도(너무 많지도 적지도) 균형
- ✅ 명시적 입출력 계약(스키마) + 상태 전달 메커니즘(
output_key·context·Command.update) - ✅ 무한 루프 차단 —
max_iterations+ 명확한 종료 조건 - ✅ 에러 처리·폴백·롤백 + 타임아웃·재시도 + 비용·SLA 모니터링
- ✅ 단위 테스트(개별 Agent) + 통합 테스트(협업 흐름) + Human-in-the-Loop
체이닝(1편)이 “순서대로 쪼개기”, 라우팅(2편)이 “입력에 따라 길 나누기”, 병렬화(3편)가 “독립 작업 동시에”, 리플렉션(4편)이 “쓴 다음 읽고 고치기”, 도구 사용(5편)이 “못 하면 도구를 써라”, 플래닝(6편)이 “목표만 주면 길은 내가 그린다”였다면, 멀티 에이전트 협업은 “혼자 다 하지 말고, 전문가 팀을 꾸려라”입니다. 여기서 우리는 한 명의 천재 LLM에서 한 팀의 전문가로 옮겨 왔습니다. 핵심은 셋 — 형태(무엇을 하나)와 구조(어떻게 연결되나)를 구분해 설계하고, Supervisor의 권한 비대칭처럼 협업 규칙을 코드로 강제하며, 시너지의 대가인 비용·무한 루프·SPOF를 막을 안전장치(HITL·롤백·Critic)를 처음부터 두는 것. 그리고 멀티 에이전트의 진짜 위력은 앞선 모든 패턴을 지휘할 때 나옵니다 — 각 에이전트가 체이닝하고, 도구를 부르고, 병렬로 돌고, 서로를 검토하죠. 다음 8편에서는 이 팀이 대화와 작업을 가로질러 기억을 공유하는 법 — 메모리 관리(Memory Management)를 다룹니다. 한 팀이 함께 일하려면, 함께 기억해야 하니까요.
'Agentic AI Design Patterns' 카테고리의 다른 글
| CH09-기억하는 AI는 끝났다 — 이제 '배우는 AI'다 (피드백 루프부터 자기 개선까지) (0) | 2026.06.06 |
|---|---|
| CH08-기억하는 AI — 메모리 관리(Memory Management) 완벽 정리 (0) | 2026.06.05 |
| CH06-스스로 길을 그리는 AI — 플래닝(Planning) 패턴 완벽 정리 (0) | 2026.06.03 |
| CH05-AI 에이전트 도구 사용 입문 | @tool·ReAct·FunctionTool로 외부 API·DB 연동하기 (0) | 2026.06.03 |
| CH04-스스로 고쳐 쓰는 AI — 리플렉션(Reflection) 패턴 완벽 정리 (0) | 2026.06.02 |