
🤝 혼자 다 하는 AI vs 팀으로 일하는 AI
지난 8편에서 Claude Agent SDK로 에이전트 한 마리를 조립해봤죠? 그런데 현실의 복잡한 작업을 하나의 에이전트한테 전부 맡기면 어떻게 될까요? 리서치도 하고, 글도 쓰고, SEO도 분석하고, 이미지도 기획하라고 하면… 결과가 산만해지기 쉬워요.
잠깐, 이 글도 AI 팀이 쓴 거야? 한 명이 다 한 거 아니고?
맞아! 리서처, 라이터, 에디터… 사실 이 블로그는 10개 에이전트가 팀으로 일하고 있어. 각자 맡은 역할에만 집중하니까 훨씬 좋은 결과가 나오거든.
회사를 생각해보면 이해하기 쉬워요. CEO 혼자 마케팅, 개발, 디자인, 영업을 다 하는 회사보다, 각 부서에 전문가가 있는 회사가 더 효율적이잖아요? 멀티 에이전트 시스템도 같은 원리예요.
각자의 역할, 도구, 지시사항을 가진 여러 AI 에이전트가 협업해서 단일 에이전트로는 어려운 복잡한 작업을 완수하는 시스템이에요. 5편에서 배운 Agent Loop(Think→Act→Observe)가 각 에이전트마다 독립적으로 돌아가요.
🔀 멀티 에이전트의 3가지 패턴
멀티 에이전트 시스템을 설계하는 방법은 크게 3가지 패턴이 있어요. 각각 장단점이 뚜렷하니까, 상황에 맞는 걸 골라 쓰는 게 중요해요.

1. 순차 패턴 (Sequential Pattern)
릴레이 달리기처럼 A가 끝나면 B, B가 끝나면 C로 바톤을 넘기는 방식이에요. 가장 단순하고 이해하기 쉬워요.
블로그 글쓰기를 예로 들면, Researcher가 조사를 끝내야 Writer가 글을 쓸 수 있잖아? 이렇게 순서가 중요한 작업에 딱 맞는 패턴이야.
Claude Agent SDK에서는 AgentDefinition으로 각 에이전트의 역할을 정의하고, 오케스트레이터의 system prompt에서 순서를 지정해요.
agents = {
"researcher": AgentDefinition(
description=(
"Researches a topic and "
"returns a briefing."
),
prompt=(
"You are a tech "
"researcher. Find key "
"facts, recent trends, "
"and concrete examples "
"about the topic. Return"
" a structured briefing "
"with bullet points."
),
tools=[
"WebSearch",
"WebFetch",
],
),
"writer": AgentDefinition(
description=(
"Writes blog posts from "
"research briefings."
),
prompt=(
"You are a blog writer. "
"Using the research "
"provided, write an "
"engaging blog post "
"with clear sections "
"and a friendly tone."
),
tools=[],
),
}
async for msg in query(
prompt=(
"Create a short blog "
"post about multi-agent "
"AI systems. First "
"research the topic, "
"then write the post."
),
options=ClaudeAgentOptions(
system_prompt=(
"You are a pipeline "
"manager. Follow this "
"exact order:\n"
"1. Call researcher to "
"gather facts\n"
"2. Call writer to "
"create a blog post "
"from the research\n"
"Return the final post."
),
allowed_tools=["Agent"],
agents=agents,
max_turns=10,
),
):
if hasattr(msg, "result"):
print(msg.result)
정확해!
AgentDefinition의 prompt가 그 에이전트의 전문 분야를 결정하는 거야. 그리고 tools로 사용할 수 있는 도구도 에이전트마다 다르게 줄 수 있어.
2. 병렬 패턴 (Parallel Pattern)
서로 의존하지 않는 작업들을 동시에 처리하는 방식이에요. SEO 분석과 이미지 기획처럼 서로 독립적인 작업이 있을 때 시간을 절약할 수 있어요.
agents = {
"seo-researcher": AgentDefinition(
description=(
"Analyzes SEO keywords "
"and search trends."
),
prompt=(
"You are an SEO "
"specialist. Analyze "
"search trends for "
"the given topic. "
"Return: top 5 "
"keywords, search "
"volume hints, and "
"a suggested title."
),
tools=["WebSearch"],
),
"image-director": AgentDefinition(
description=(
"Plans visual content "
"for blog posts."
),
prompt=(
"You are an art "
"director. Plan the "
"visual content for "
"a blog post: featured"
" image concept, 2 "
"diagram ideas, and "
"color palette."
),
tools=[],
),
}
async for msg in query(
prompt=(
"For a blog post about "
"'multi-agent systems': "
"1) Research SEO keywords"
" 2) Plan the images. "
"These tasks are "
"independent."
),
options=ClaudeAgentOptions(
system_prompt=(
"You manage parallel "
"tasks. Call BOTH "
"seo-researcher AND "
"image-director — "
"they don't depend "
"on each other, so "
"dispatch them "
"together. Combine "
"results into a "
"unified brief."
),
allowed_tools=["Agent"],
agents=agents,
max_turns=10,
),
):
if hasattr(msg, "result"):
print(msg.result)
3. 오케스트레이터 패턴 (Orchestrator)
이제 가장 강력하면서도 복잡한 패턴이에요. 오케스트라 지휘자처럼 매니저 에이전트가 팀 전체를 조율하는 방식이죠. 매니저는 직접 일을 하지 않고, 누구에게 어떤 작업을 맡길지 판단하고 결과를 종합해요. 순차와 병렬을 유연하게 조합할 수 있는 게 장점이에요.
블로그 팀으로 비유하면, 편집장이 “먼저 리서처한테 조사 시키고, 그 결과로 작가가 글 쓰고, 마지막에 리뷰어가 품질 검수”하는 전체 흐름을 관리하는 거야.
agents = {
"researcher": AgentDefinition(
description=(
"Researches topics "
"using web search."
),
prompt=(
"You are a tech "
"researcher. Search "
"for recent info on "
"the given topic. "
"Return a structured "
"briefing with:\n"
"- Key facts (3-5)\n"
"- Recent trends\n"
"- One concrete example"
),
tools=[
"WebSearch",
"WebFetch",
],
),
"writer": AgentDefinition(
description=(
"Writes blog posts "
"from research."
),
prompt=(
"You are a blog "
"writer. Write an "
"engaging post using "
"the research. Use "
"clear sections, "
"simple language, "
"and a friendly tone."
" Target: 300-500 "
"words."
),
tools=[],
),
"reviewer": AgentDefinition(
description=(
"Reviews drafts for "
"quality and accuracy."
),
prompt=(
"You are a blog "
"editor. Review the "
"draft for:\n"
"- Factual accuracy\n"
"- Clarity and flow\n"
"- Engagement level\n"
"Provide specific, "
"actionable feedback. "
"Then rewrite the "
"improved version."
),
tools=[],
),
}
async for msg in query(
prompt=(
"Create a blog post "
"about 'How AI agents "
"work together as a "
"team'. Research it, "
"write it, then review."
),
options=ClaudeAgentOptions(
system_prompt=(
"You are an editor-"
"in-chief managing a "
"blog team. Workflow:"
"\n1. Call researcher "
"to gather facts\n"
"2. Call writer to "
"draft using research"
"\n3. Call reviewer to"
" improve the draft\n"
"Return the final "
"polished blog post."
),
allowed_tools=[
"Agent",
],
agents=agents,
max_turns=15,
),
):
if hasattr(msg, "result"):
print(msg.result)
오 이거 진짜 회사 같다! 편집장이 리서처, 작가, 리뷰어한테 순서대로 일을 시키네.

🔗 에이전트 핸드오프 — 바톤 터치의 비밀
멀티 에이전트 시스템에서 한 에이전트가 다른 에이전트에게 작업을 넘기는 것을 핸드오프(Handoff)라고 해요. 한 에이전트의 출력이 다음 에이전트의 입력으로 전달되는 과정이죠.
SDK에서 핸드오프는 자동으로 일어나. 오케스트레이터가
Agent 도구로 서브에이전트를 호출하면, 그 에이전트가 자기만의 Agent Loop를 돌리고 결과를 돌려주거든.
그러면 각 에이전트는 서로의 존재를 아는 거야?
아니, 서로 몰라! 오케스트레이터만 전체 그림을 보고 있어. 각 서브에이전트는 자기한테 주어진 입력만 보고 작업하는 거야. 그래서 역할 분리가 깔끔해져.
🏗️ 실전: 블로그 파이프라인의 구조
사실 여러분이 읽고 있는 이 글도 멀티 에이전트 시스템이 만든 거예요. 실제 blog-agent의 파이프라인 구조를 살짝 보여드릴게요.

10개 에이전트가 순차와 병렬 패턴을 조합해서 움직여요:
- 순차 구간: Topic Planner → Researcher → Writer → Reviewer (글의 흐름상 순서가 필요한 작업)
- 병렬 구간: SEO Analyzer + Image Director + Translator (서로 독립적인 작업을 동시 처리)
- 최종 순차: Publisher가 모든 결과를 모아서 WordPress에 발행
와, 10개나! 그러면 API 비용도 10배인 거야?!
좋은 질문이야! 에이전트 하나 = API 호출 하나(이상)이니까, 비용이 늘어나는 건 맞아. 그런데 각 에이전트가 작은 역할만 하니까 개별 비용은 적고, 품질은 훨씬 좋아져. 트레이드오프가 있는 거지.
⚖️ 멀티 에이전트, 언제 쓸까?
멀티 에이전트 시스템이 항상 정답은 아니에요. 언제 쓰고, 언제 안 쓰는 게 좋은지 정리해볼게요.
| 멀티 에이전트가 필요할 때 | 단일 에이전트로 충분할 때 |
|---|---|
| 역할이 명확히 분리되는 복잡한 작업 | 간단한 Q&A나 단순 변환 |
| 전문 도구가 에이전트마다 다를 때 | 도구 1-2개로 해결되는 작업 |
| 품질이 중요해서 검수 단계가 필요할 때 | 속도가 품질보다 중요할 때 |
| 병렬 처리로 시간을 아낄 수 있을 때 | 작업이 순서대로만 흘러갈 때 |
그러니까 에이전트 3마리 만들면… API 비용이 3배 이상이라는 거지? 거기에 매니저까지 더하면 4배?!
맞아, 그래서 무조건 많이 나누는 게 아니라, “이 작업을 나누면 품질이 확실히 올라가는가?”를 먼저 따져봐야 해. 단순한 작업에 멀티 에이전트를 쓰면 비용만 늘고 효과는 없거든.
🎯 핵심 정리

오늘 배운 멀티 에이전트 시스템의 핵심을 정리해볼게요:
- 역할 분리가 핵심이에요 — 한 에이전트가 모든 걸 하면 산만해져요. 전문가 팀으로 나누면 각자의 역할에 집중해서 더 좋은 결과를 내요.
- 3가지 패턴을 상황에 맞게 골라 쓰세요 — 순차(순서가 중요할 때), 병렬(독립 작업 동시 처리), 오케스트레이터(복잡한 조율이 필요할 때).
- 비용과 품질의 트레이드오프를 기억하세요 — 에이전트 하나 = API 호출 하나 이상. 꼭 필요한 만큼만 나누고, 단일 에이전트로 충분한 작업은 굳이 나누지 마세요.
다음 편은 대망의 마지막! 지금까지 배운 Agent Loop, System Prompt, MCP, SDK, 멀티 에이전트를 모두 결합해서 나만의 AI 에이전트 프로젝트를 만들어볼 거예요. Ep1부터 Ep9까지의 총정리!
오 최종편! 드디어 다 합쳐서 뭔가 만드는 거야?
맞아! 9편까지 배운 모든 개념을 하나의 프로젝트로 완성하는 거야. 기대해줘!
참고 자료
- Anthropic — Building Effective Agents
- Claude Agent SDK — Subagents
- Claude Agent SDK 공식 문서
- 이번 편 전체 코드 (GitHub)
▶ 다음 편: 10편 — 나만의 AI 에이전트 프로젝트 — 종합 실습 (예정)
📚 시리즈 전체 보기