시리즈: AI 에이전트 직접 만들어보기 | 4편 / 5편
안녕하세요! 😊 3편에서 에이전트 3개를 직접 만들어봤는데, 어떠셨나요?
오늘은 한 단계 더 나아가서, 여러 에이전트가 팀을 이뤄 함께 일하는 방식을 코드로 직접 만들어볼 거예요!
| 패턴 | 난이도 | 무엇을 만드나요? | |
|---|---|---|---|
| 1번 | 오케스트레이터 | ⭐⭐ 보통 | 관리자가 전문가 3명에게 일을 나눠 맡기기 |
| 2번 | 파이프라인 | ⭐⭐ 보통 | 4단계를 순서대로 이어 처리하기 |
| 3번 | 병렬 처리 | ⭐⭐⭐ 높음 | 여러 주제를 동시에 조사하기 |
💡 이번 편도 Google Colab에서 실습해요. 3편에서 만든 노트북을 이어서 사용하거나, 새 노트북을 만들어서 따라오세요!
공통 준비 셀
셀 1 — 패키지 설치 & Claude 연결
3편을 이어서 하는 경우 이미 설치되어 있어요. 새 노트북이라면 실행하세요.
!pip install anthropic -q
print("✅ 설치 완료!")
import anthropic
from google.colab import userdata
client = anthropic.Anthropic(api_key=userdata.get('ANTHROPIC_API_KEY'))
print("✅ Claude 연결 완료!")
에이전트 하나의 한계
복잡한 작업을 에이전트 하나에게 맡기면 어떤 일이 생길까요?
한 에이전트에게 "조사 + 분석 + 보고서 작성"을 모두 시키면...
❌ 컨텍스트가 길어져서 앞 내용을 잊어버릴 수 있어요
❌ 한 분야에 집중하기 어려워요
❌ 순서대로만 처리해서 시간이 오래 걸려요
해결책은 역할을 나눠서 팀으로 일하게 하는 것이에요!
패턴 1: 오케스트레이터 패턴
관리자(오케스트레이터) 가 큰 목표를 받아서 전문 서브 에이전트들 에게 역할을 나눠줘요.
오케스트레이터 (관리자)
│
┌────────────┼────────────┐
↓ ↓ ↓
리서치 AI 분석 AI 작성 AI
조사 전문 인사이트 전문 글쓰기 전문
오늘 만들 예시: “AI 트렌드 보고서 작성” 을 3개 서브 에이전트에게 나눠 맡기기
셀 2 — 서브 에이전트 3개 만들기
각 서브 에이전트는 역할에 맞는 system 프롬프트 를 가진 Claude 호출이에요.
# ① 리서치 에이전트 — 주제를 조사해요
def research_agent(topic: str) -> str:
print(f" 🔍 리서치 중: '{topic}'")
response = client.messages.create(
model="claude-haiku-4-5-20251001", # 서브 에이전트는 빠른 모델로!
max_tokens=500,
system="당신은 리서치 전문가예요. 주어진 주제의 핵심 정보를 불릿 포인트 3~5개로 정리해주세요.",
messages=[{"role": "user", "content": f"주제: {topic}"}]
)
return response.content[0].text
# ② 분석 에이전트 — 조사 결과에서 인사이트를 뽑아요
def analysis_agent(research_result: str) -> str:
print(f" 📊 분석 중...")
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=500,
system="당신은 분석 전문가예요. 조사 결과를 읽고 핵심 인사이트 2~3가지만 간결하게 뽑아주세요.",
messages=[{"role": "user", "content": f"조사 결과:\n{research_result}"}]
)
return response.content[0].text
# ③ 작성 에이전트 — 최종 보고서를 써요
def writing_agent(topic: str, analysis_result: str) -> str:
print(f" ✍️ 보고서 작성 중...")
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=800,
system="당신은 글쓰기 전문가예요. 분석 결과를 바탕으로 읽기 좋은 짧은 보고서를 작성해주세요.",
messages=[{"role": "user", "content": f"주제: {topic}\n분석 결과:\n{analysis_result}"}]
)
return response.content[0].text
print("✅ 서브 에이전트 3개 준비 완료!")
셀 3 — 오케스트레이터 만들기
def orchestrator_agent(project_goal: str):
"""
큰 목표를 받아서 서브 에이전트 3개에게 순서대로 나눠 맡겨요.
"""
print(f"\n{'='*45}")
print(f"🎯 프로젝트: {project_goal}")
print(f"{'='*45}\n")
# Step 1: 리서치 에이전트에게 조사 맡기기
print("📌 [1/3] 리서치 에이전트 호출")
research = research_agent(project_goal)
print(f" 완료!\n")
# Step 2: 분석 에이전트에게 인사이트 추출 맡기기
print("📌 [2/3] 분석 에이전트 호출")
analysis = analysis_agent(research)
print(f" 완료!\n")
# Step 3: 작성 에이전트에게 보고서 작성 맡기기
print("📌 [3/3] 작성 에이전트 호출")
report = writing_agent(project_goal, analysis)
print(f" 완료!\n")
# Step 4: 결과 출력
print(f"{'='*45}")
print("📝 최종 보고서")
print(f"{'='*45}")
print(report)
return report
print("✅ 오케스트레이터 준비 완료!")
셀 4 — 오케스트레이터 실행!
orchestrator_agent("2025년 AI 에이전트 트렌드")
이런 출력이 나오면 성공이에요! 🎉

다른 주제로 바꿔보세요!
orchestrator_agent("파이썬 vs 자바스크립트 비교 분석")

패턴 2: 파이프라인 패턴
작업을 순서대로 이어지는 단계로 처리해요. 앞 에이전트의 출력이 다음 에이전트의 입력이 돼요. 마치 공장 생산 라인처럼요! 🏭
원본 텍스트
↓
[수집 에이전트] → 핵심 내용 추출
↓
[정제 에이전트] → 불필요한 부분 제거
↓
[요약 에이전트] → 3줄 요약
↓
[저장 에이전트] → 파일 저장 ✅
오늘 만들 예시: 긴 영어 텍스트를 4단계로 처리해서 한국어 요약 파일로 저장하기
셀 5 — 파이프라인 단계 4개 만들기
# 1단계: 수집 에이전트 — 원본에서 핵심 문장만 골라내요
def stage1_collect(raw_text: str) -> str:
print(" [1단계] 핵심 문장 수집 중...")
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=600,
system="주어진 텍스트에서 핵심 문장만 골라서 그대로 나열해주세요. 설명 없이 문장들만요.",
messages=[{"role": "user", "content": raw_text}]
)
return response.content[0].text
# 2단계: 정제 에이전트 — 중복·불필요한 내용을 제거해요
def stage2_clean(collected: str) -> str:
print(" [2단계] 중복 제거 및 정제 중...")
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=500,
system="주어진 문장들에서 중복된 내용을 제거하고, 가장 중요한 내용만 남겨주세요.",
messages=[{"role": "user", "content": collected}]
)
return response.content[0].text
# 3단계: 요약 에이전트 — 한국어 3줄 요약을 만들어요
def stage3_summarize(cleaned: str) -> str:
print(" [3단계] 한국어 요약 작성 중...")
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=400,
system="주어진 내용을 한국어로 3줄 이내로 요약해주세요. 번호를 붙여주세요.",
messages=[{"role": "user", "content": cleaned}]
)
return response.content[0].text
# 4단계: 저장 에이전트 — 파일로 저장해요
def stage4_save(summary: str, filename: str) -> str:
print(f" [4단계] '{filename}' 저장 중...")
filepath = f"/content/{filename}"
with open(filepath, "w", encoding="utf-8") as f:
f.write(summary)
return f"✅ '/content/{filename}' 저장 완료!"
print("✅ 파이프라인 단계 4개 준비 완료!")
셀 6 — 파이프라인 실행 함수
def run_pipeline(raw_text: str, output_filename: str = "summary.txt"):
"""
4단계 파이프라인을 순서대로 실행해요.
각 단계의 출력이 다음 단계의 입력이 돼요!
"""
print(f"\n{'='*45}")
print(f"🏭 파이프라인 시작")
print(f"{'='*45}\n")
# 1단계 → 2단계 → 3단계 → 4단계 순서대로 연결!
collected = stage1_collect(raw_text)
print(f" ✅ 완료\n")
cleaned = stage2_clean(collected)
print(f" ✅ 완료\n")
summary = stage3_summarize(cleaned)
print(f" ✅ 완료\n")
result = stage4_save(summary, output_filename)
print(f" {result}\n")
print(f"{'='*45}")
print("📝 최종 요약")
print(f"{'='*45}")
print(summary)
return summary
print("✅ 파이프라인 준비 완료!")
셀 7 — 파이프라인 실행!
sample_text = """
Artificial intelligence is rapidly transforming industries worldwide.
Machine learning models are becoming more efficient and accessible.
Large language models like GPT and Claude can now perform complex reasoning tasks.
Businesses are adopting AI to automate repetitive tasks and improve decision-making.
However, concerns about AI safety, bias, and job displacement remain significant.
Researchers are working on interpretability tools to make AI systems more transparent.
The global AI market is expected to reach trillions of dollars by 2030.
Governments are beginning to regulate AI through new legislation and guidelines.
Open-source AI models are democratizing access to powerful AI capabilities.
Multimodal AI systems can now process text, images, audio, and video together.
"""
run_pipeline(sample_text, "ai_summary.txt")
이런 출력이 나오면 성공이에요! 🎉

Colab 왼쪽 📁 폴더 아이콘 → /content/ai_summary.txt 파일이 생겼어요! 📄
각 단계가 명확히 나뉘어 있어서 어느 단계가 문제인지 바로 찾을 수 있어요!
패턴 3: 병렬 처리 패턴
서로 독립적인 작업들을 동시에 처리하는 패턴이에요. 순서대로 하면 4배 걸릴 시간이, 병렬로 하면 1배만에 끝나요! ⚡
여러 주제 조사 요청
╱ │ ╲
╱ │ ╲
"머신러닝" "딥러닝" "강화학습" ← 동시에 처리!
╲ │ ╱
╲ │ ╱
결과 한꺼번에 수집
💡 Colab에서 asyncio 사용 시 주의! 일반 Python:
asyncio.run(main())Colab:await main()← 이렇게 써야 해요!
셀 8 — 비동기 에이전트 만들기
병렬 처리를 위해 AsyncAnthropic (비동기 전용 클라이언트) 을 사용해요.
import asyncio
from anthropic import AsyncAnthropic
# 비동기 전용 클라이언트 (기존 client와 별개예요)
async_client = AsyncAnthropic(api_key=userdata.get('ANTHROPIC_API_KEY'))
async def async_research_agent(topic: str) -> dict:
"""비동기 리서치 에이전트 — await로 호출해야 해요"""
print(f" ▶ 시작: '{topic}'")
response = await async_client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=300,
system="주어진 주제를 2~3문장으로 간단히 설명해주세요.",
messages=[{"role": "user", "content": f"주제: {topic}"}]
)
result = response.content[0].text
print(f" ✅ 완료: '{topic}'")
return {"topic": topic, "result": result}
async def run_parallel(topics: list) -> list:
"""여러 에이전트를 동시에 실행해요"""
print(f"⚡ {len(topics)}개 주제를 동시에 조사할게요!\n")
# asyncio.gather → 모든 작업을 동시에 시작!
results = await asyncio.gather(
*[async_research_agent(topic) for topic in topics]
)
return results
print("✅ 병렬 처리 에이전트 준비 완료!")
셀 9 — 병렬 처리 실행!
# Colab에서는 await를 직접 쓸 수 있어요!
topics = [
"머신러닝",
"딥러닝",
"강화학습",
"자연어처리",
]
results = await run_parallel(topics)
print(f"\n{'='*45}")
print("📋 조사 결과 모음")
print(f"{'='*45}")
for item in results:
print(f"\n🔹 {item['topic']}")
print(f" {item['result'][:80]}...")
이런 출력이 나오면 성공이에요! 🎉

▶ 시작: 4개가 연달아 뜨고, ✅ 완료: 순서가 뒤섞이는 게 보이시죠? 동시에 실행되고 있다는 증거예요! 😊
세 패턴을 비교해봐요
| 패턴 | 에이전트 관계 | 언제 쓰나요? |
|---|---|---|
| 오케스트레이터 | 관리자 → 전문가들 | 큰 프로젝트를 역할 분담할 때 |
| 파이프라인 | A → B → C → D | 데이터를 단계별로 변환할 때 |
| 병렬 처리 | A + B + C 동시에 | 독립적인 작업을 빠르게 처리할 때 |
핵심 포인트 3가지
① 서브 에이전트는 역할을 좁게 정의할수록 잘 동작해요
# 나쁜 예 ❌
system = "뭐든지 다 잘하는 에이전트"
# 좋은 예 ✅
system = "당신은 리서치 전문가예요. 핵심 정보를 불릿 포인트로만 정리해주세요."
역할이 명확할수록 결과 품질이 높아져요!
② 서브 에이전트는 빠른 모델을 써도 충분해요
오케스트레이터(전체 지휘)는 claude-opus-4-6 처럼 강력한 모델을, 서브 에이전트(단순 작업)는 claude-haiku-4-5-20251001 처럼 빠른 모델을 쓰면 속도도 빠르고 비용도 절약돼요.
③ 병렬 처리는 독립적인 작업에만 써요
❌ 파이프라인 작업 (앞 결과가 있어야 다음 단계 가능)
수집 → 정제 → 요약 → 동시 처리 불가!
✅ 독립적인 작업 (서로 관계없는 작업들)
주제 A, 주제 B, 주제 C 조사 → 동시 처리 가능!
정리해볼까요?
오늘 만든 3가지 패턴:
패턴 1 (오케스트레이터)
→ 오케스트레이터가 서브 에이전트 3개를 순서대로 호출
→ 각 에이전트는 system 프롬프트로 역할을 부여받은 Claude 호출
패턴 2 (파이프라인)
→ 4단계 함수가 체인처럼 연결 (앞 결과 → 다음 입력)
→ 어느 단계에서 문제가 생겼는지 바로 알 수 있음
패턴 3 (병렬 처리)
→ AsyncAnthropic + asyncio.gather로 동시 실행
→ Colab에서는 await를 직접 호출
이 3가지 패턴을 조합하면 실무 수준의 멀티 에이전트 시스템도 만들 수 있어요! 🚀
다음 편 예고
드디어 마지막 편이에요! 🎊
지금까지 에이전트의 개념, MCP, 코드 실습, 멀티 에이전트까지 배웠어요. 마지막 편에서는 “그래서 실제로 어떻게 써요?” 에 집중할 거예요.
실무에 AI 에이전트를 도입할 때 어디서부터 시작해야 하는지, 주의할 점은 뭔지, 실제 성공 사례들은 어떤 게 있는지 알아볼게요!
거의 다 왔어요. 함께 마무리해봐요! 💪
| 편 | 제목 | 상태 |
|---|---|---|
| 1편 | AI 에이전트란 무엇인가요? | ✅ 완료 |
| 2편 | MCP란 무엇인가요? 도구를 에이전트에 연결하는 방법 | ✅ 완료 |
| 3편 | 나만의 에이전트 첫 번째 만들기 (Colab 실습) | ✅ 완료 |
| 4편 | 멀티 에이전트 설계 패턴 | ✅ 현재 글 |
| 5편 | 실무에 AI 에이전트 도입하기 | 예정 |