W7 강의노트 멀티 에이전트 오케스트레이션 0%
Week 07 · Phase 4 · 멀티 에이전트

멀티 에이전트 오케스트레이션

1명이 아닌 4명 — 뉴스·온체인·매크로 전문 에이전트 + 조율자

3시간수업
시간
4 AgentOrchestrator
+ 3 Specialist
Team리서치팀
아키텍처
▶ PHASE 4 INTEGRATION — W7 & W8
에이전트를 "한 명"에서 "한 팀"으로
지금까지 만든 에이전트는 혼자 모든 일을 했습니다. Phase 4는 역할 분담의 미학입니다. 각 에이전트가 자기 전문 영역만 깊이 파고, Orchestrator가 이들을 조율합니다. 실제 리서치팀 구조와 동일합니다.
Learning Objectives

이번 주 학습 목표

레벨
고급+
선수지식
W1~W6
실습
130분
과제
확장 1개
1
단일 에이전트 vs 멀티 에이전트의 차이점을 이해하고 Gatekeeper 패턴의 필요성을 설명할 수 있다
2
n8n AI Agent Tool 노드로 3개 전문 에이전트(뉴스·온체인·매크로)를 Orchestrator의 툴로 연결할 수 있다
3
각 서브 에이전트에 전용 System Message + 전용 데이터 API를 부여해 역할 분담을 명확히 할 수 있다
4
메시지 버스 로깅으로 에이전트 간 상호작용을 추적하고 문제 발생 시 디버깅할 수 있다
이번 주의 한 문장: "한 명의 천재보다 전문가 팀." 이번 주는 Claude 한 명이 모든 것을 알려고 하는 대신, 각자의 전문 영역에서 뛰어난 4명의 Claude가 팀으로 일하는 구조를 만듭니다. 이게 바로 실전 AI 시스템의 모습입니다.
Why Multi-Agent

단일 에이전트의 한계

W3~W6에서 만든 에이전트는 매우 똑똑하지만 문제가 있습니다. 모든 툴을 다 알아야 한다는 점입니다. 실제로 AI Agent에 5~7개 이상의 툴이 연결되면 에이전트의 판단 정확도가 급격히 떨어집니다. "결정 피로"가 발생하는 것입니다.

❌ 단일 에이전트 (W6까지)
1명의 에이전트에게 15개 툴 연결:
• Yahoo Finance, CoinGecko, FRED
• Alpha Vantage News, Chart-IMG
• Supabase Search, Cohere Rerank
• Discord, Gmail, Telegram...

문제: System Message가 거대해짐 → 툴 선택 오류 → 비용 낭비 → 답변 품질 저하
✅ 멀티 에이전트 (이번 주)
4명의 에이전트가 역할 분담:
• Orchestrator: 3개 툴(서브 에이전트)
• News Agent: 뉴스 API만 3개
• Chain Agent: 온체인 API만 3개
• Macro Agent: 매크로 API만 3개

효과: 각자 System Message 작고 명확 → 툴 선택 정확 → 확장 용이

팀 아키텍처 시각화

ORCHESTRATOR
🎼 리서치 팀장 Claude
질문 받고 어느 전문가에게 물어볼지 결정 → 답변 종합
▼ 호출 ▼
📰
News Agent
Alpha Vantage +
GDELT 뉴스
⛓️
OnChain Agent
Blockchair +
Whale Alert
🌍
Macro Agent
FRED +
World Bank
💡 왜 이게 "실전"인가: 골드만삭스·블랙록의 리서치팀도 정확히 이 구조입니다. 뉴스 담당, 온체인 담당, 매크로 담당이 따로 있고 CIO가 이들을 조율합니다. 우리는 이 구조를 AI로 복제합니다. Gatekeeper 패턴이라고도 부릅니다.
Session 1 · 40min

1교시 — 3개 전문 에이전트 역할 설계

서브 에이전트 각각에 좁은 역할 + 전용 데이터 소스 + 구조화된 출력을 부여합니다. 각 에이전트의 "명함"을 만드는 작업입니다.

📰
News Agent
"무슨 일이 일어났나" 전문가
데이터 소스
Alpha Vantage NEWS_SENTIMENT (기본) + GDELT Project API (무료, 전세계 뉴스)
입력
ticker, hours_back, focus(실적/리스크/공급망 등)
출력 JSON
{sentiment_score, top_headlines[], key_events[], risk_flags[]}
결정 권한
뉴스 사실만 보고. 투자 판단은 금지 → Orchestrator 몫.
⛓️
OnChain Agent
"고래는 뭘 하나" 전문가
데이터 소스
Blockchair API (무료, Bitcoin/ETH 트랜잭션) + Whale Alert Public Feed + CoinGecko
입력
asset(BTC/ETH/etc), window_hours
출력 JSON
{active_addresses, whale_tx_count, exchange_inflow, dominant_flow_direction}
결정 권한
온체인 지표만. 가격 예측은 금지.
🌍
Macro Agent
"세상이 어떻게 돌아가나" 전문가
데이터 소스
FRED API (금리, CPI, 실업률, VIX, USD index) + W6 RAG (FOMC 의사록 검색)
입력
focus(rates/inflation/employment), period
출력 JSON
{current_values, trend, policy_stance, related_fomc_context}
결정 권한
거시 환경 해석만. 종목 추천은 금지.
⚠️ 역할 분리 원칙: 각 에이전트는 자기 영역의 사실만 보고하도록 강제합니다. "이 뉴스는 긍정적이니 매수하세요"처럼 통합 판단을 하면 안 됩니다. 통합 판단은 Orchestrator만의 역할. 이래야 디버깅이 쉽고, 각 에이전트의 결정을 독립적으로 검증할 수 있습니다.
Session 2 · 45min

2교시 — 서브 에이전트 구현

패턴 — 각 서브 에이전트의 공통 구조

모든 서브 에이전트는 동일한 패턴입니다: AI Agent Tool 노드 + 전용 Chat Model + 전용 툴 2~3개 + 전용 System Message.

🤖 AI Agent Tool 노드 (sub-agent용) SUB-AGENT
Orchestrator의 AI Agent 노드에 Tool로 연결됨. 자체적으로 서브 툴도 가질 수 있음.
Tool Name: news_agent / chain_agent / macro_agent
Tool Description: 에이전트 역할 + 입력 형식 명시
System Message: 역할 집중 프롬프트
Chat Model: Anthropic — claude-haiku-4-5 (서브는 빠른 모델)
Output Parser: Structured Output Parser (JSON 강제)

News Agent 구현

NEWS AGENT — SYSTEM MESSAGE
당신은 금융 뉴스 전문 리서처입니다. 오직 뉴스 관련 사실만 수집·정리합니다.

가용 도구:
1. fetch_news — Alpha Vantage NEWS_SENTIMENT로 종목 뉴스 조회
2. search_global_news — GDELT API로 거시 뉴스 검색

규칙:
• 투자 추천 금지. 오직 뉴스 사실 보고
• 주관적 평가 금지. 원문의 센티먼트 스코어만 제시
• 중복 기사 필터링
• relevance_score ≥ 0.3 기사만 채택

출력 JSON (엄격):
{
  "ticker": "...",
  "sentiment_avg": -0.35 ~ 0.35,
  "article_count": number,
  "top_headlines": [{title, source, score}],
  "key_events": ["이벤트 요약 1문장"],
  "risk_flags": ["리스크 요소 1문장"]
}

OnChain Agent 구현

입문자 친화적 무료 API로 Blockchair(Bitcoin/Ethereum 트랜잭션) + Whale Alert Public Feed 조합을 사용합니다.

// OnChain Agent의 툴 #1 — Blockchair Bitcoin 활성 주소
// Method: GET
// URL: https://api.blockchair.com/bitcoin/stats
// 응답에서 중요 필드:
{
  "data": {
    "blocks": 830000,
    "transactions_24h": 450000,
    "outputs_24h": 1200000,
    "circulation": "19700000",
    "market_price_usd": 62450,
    "hashrate_24h": "...",
    "mempool_transactions": 18500
  }
}

Whale Alert의 무료 공개 피드는 twitter.com/whale_alert 또는 RSS를 통해 간접 수집합니다. n8n RSS Feed Trigger 노드로 처리.

ONCHAIN AGENT — SYSTEM MESSAGE
당신은 온체인 데이터 분석가입니다. Bitcoin·Ethereum의 네트워크 활동만 분석합니다.

가용 도구:
1. blockchair_stats — Bitcoin/ETH 24시간 네트워크 통계
2. whale_alert_feed — 최근 100 BTC/1000 ETH 이상 고래 이체
3. coingecko_exchange_flow — 거래소 순유출입

규칙:
• 가격 예측 금지. 오직 온체인 지표 해석
• "고래가 거래소로 대량 이체" 같은 사실만 보고
• 전일 대비 변동률이 ±20% 이상이면 risk_flag 발동

출력 JSON:
{
  "asset": "BTC" or "ETH",
  "active_addresses_24h": number,
  "tx_volume_24h_usd": number,
  "whale_tx_count_24h": number,
  "exchange_net_flow": "INFLOW" | "OUTFLOW" | "NEUTRAL",
  "dominant_signal": "문장 1개 요약"
}

Macro Agent 구현 — W6 RAG와 결합

Macro Agent는 특별합니다. FRED API(숫자 데이터) + W6에서 구축한 Vector DB(FOMC 의사록)를 모두 활용합니다.

MACRO AGENT — SYSTEM MESSAGE
당신은 거시경제 분석가입니다. 금리·인플레이션·고용·VIX 등 매크로 지표를 다룹니다.

가용 도구:
1. fred_indicator — FRED에서 시리즈(DFF, CPIAUCSL, UNRATE, VIXCLS) 조회
2. fomc_rag_search — W6 지식베이스에서 FOMC 의사록 검색 (출처 포함)

규칙:
• 해석은 중립적으로. "매파적/비둘기파적" 같은 용어는 FOMC 원문에 근거할 때만
• 수치 변동은 전기 대비 변동률로 표기
• FOMC 발언 인용 시 반드시 출처 명시

출력 JSON:
{
  "focus_area": "rates" | "inflation" | "employment",
  "current_value": number,
  "trend_6m": "UP" | "DOWN" | "FLAT",
  "fomc_stance_quote": "최근 FOMC 인용 + 출처",
  "implication_1line": "시장에 미치는 영향 1문장"
}
Session 3 · 40min

3교시 — Orchestrator 에이전트 구현

Orchestrator는 팀장입니다. 질문을 보고 어느 전문가에게 물어볼지 결정하고, 답변들을 종합해 최종 답변을 만듭니다. Claude Sonnet(Haiku보다 상위)을 씁니다.

🎼 AI Agent — Orchestrator (root) ROOT
3개의 AI Agent Tool을 sub-node로 연결. Chat Model은 Sonnet으로 상향.
Agent Type: Tools Agent
Chat Model: Anthropic — claude-sonnet-4-6
Max Iterations: 5 (충분한 reasoning 턴 허용)
Return Intermediate Steps: ON (디버깅용)
Tools: news_agent, chain_agent, macro_agent

Orchestrator System Message — 가장 중요한 프롬프트

ORCHESTRATOR SYSTEM MESSAGE
당신은 리서치팀 팀장입니다. 3명의 전문 에이전트를 조율합니다.

팀 구성:
news_agent: 뉴스·센티먼트 전문 (어떤 사건이 일어났나)
chain_agent: 온체인 데이터 전문 (암호화폐 네트워크 활동)
macro_agent: 거시경제 전문 (금리·인플레이션·FOMC)

워크플로:
1. 사용자 질문 분석 → 어느 에이전트가 필요한지 결정
2. 관련 있는 에이전트만 호출 (불필요한 호출 = 비용 낭비)
3. 암호화폐 질문: chain_agent + macro_agent
4. 주식 질문: news_agent + macro_agent
5. 복잡한 질문: 3명 모두 호출 후 종합

종합 규칙:
• 각 에이전트 답변을 출처로 명시하며 통합 ("News Agent에 따르면...")
• 에이전트 간 충돌 발견 시 명시: "온체인은 긍정적이나 뉴스는 부정적"
• 최종 verdict: BUY / WATCH / HOLD / AVOID + confidence 1~5
• 투자 권유 아닌 교육 목적 종합 분석임을 명시

출력 형식:
{
  "query_type": "crypto" | "stock" | "macro" | "mixed",
  "agents_called": ["news_agent", ...],
  "agent_findings": {agent_name: summary},
  "consensus": "ALIGNED" | "MIXED" | "CONFLICTED",
  "final_verdict": "...",
  "confidence": 1-5,
  "reasoning": "2-3문장 종합"
}

전체 워크플로

🔧 멀티 에이전트 워크플로 (단일 캔버스)
Chat/Webhook TriggerDiscord /ask 또는 다른 입력
Orchestrator AgentSonnet이 질문 분석 + 필요 에이전트 호출 결정
News Agent ToolHaiku + Alpha Vantage + GDELT (필요 시)
OnChain Agent ToolHaiku + Blockchair + Whale Alert (필요 시)
Macro Agent ToolHaiku + FRED + FOMC RAG (필요 시)
Orchestrator 종합에이전트 결과 통합 + 최종 verdict + reasoning
Code (Message Bus)intermediate steps에서 에이전트 간 대화 로그 추출
Discord + Sheets최종 답변 + 전체 로그 기록
💡 모델 비용 최적화 전략:
Orchestrator = Sonnet (판단 품질 중요, 호출 1회)
Sub-agents = Haiku (속도 + 낮은 비용, 호출 여러 번)
복잡한 질문 1회당: Sonnet $0.01 + Haiku × 3 = $0.005 ≈ 총 $0.015. 하루 10회 × 30일 = 월 $4.5.
Session 4 · 45min

4교시 — 메시지 버스 로깅과 디버깅

멀티 에이전트의 가장 큰 함정은 "왜 이런 답이 나왔는지 모른다"는 점입니다. 에이전트 3명이 동시에 일하는데 중간 과정을 못 보면 디버깅이 지옥. 메시지 버스로 모든 에이전트 대화를 기록합니다.

Return Intermediate Steps 활용

Orchestrator의 Return Intermediate Steps를 ON으로 하면 응답에 모든 sub-agent 호출 내역이 포함됩니다.

// Orchestrator 응답에서 메시지 버스 추출
const orchestratorOutput = $input.item.json;
const steps = orchestratorOutput.intermediateSteps || [];

// 각 sub-agent 호출을 타임스탬프와 함께 로그화
const messageBus = [];
const startTime = new Date();

for (let i = 0; i < steps.length; i++) {
  const step = steps[i];
  const agentName = step.action?.tool || 'unknown';
  const input = step.action?.toolInput || {};
  const output = step.observation || '';
  
  // 호출 시점
  messageBus.push({
    t: new Date(startTime.getTime() + i * 100).toISOString(),
    actor: 'orchestrator',
    action: 'CALL',
    target: agentName,
    payload: JSON.stringify(input).slice(0, 100)
  });
  
  // 응답 시점
  messageBus.push({
    t: new Date(startTime.getTime() + i * 100 + 50).toISOString(),
    actor: agentName,
    action: 'RESPOND',
    target: 'orchestrator',
    payload: typeof output === 'string' ? output.slice(0, 150) : JSON.stringify(output).slice(0, 150)
  });
}

// 최종 결정
messageBus.push({
  t: new Date().toISOString(),
  actor: 'orchestrator',
  action: 'FINAL',
  target: 'user',
  payload: orchestratorOutput.output?.slice(0, 200) || ''
});

return {
  final_answer: orchestratorOutput.output,
  message_bus: messageBus,
  agent_count_called: steps.length,
  total_time_ms: new Date() - startTime
};

예시 메시지 버스 (Discord 디버그 채널 출력)

00:00.00
ORCHCALL → news_agent ({ticker: "AAPL", hours: 24})
00:01.23
NEWSRESPOND → sentiment +0.18, 주요 사건: WWDC AI 칩 발표
00:01.50
ORCHCALL → macro_agent ({focus: "rates"})
00:02.87
MACRORESPOND → 금리 5.50% 동결, FOMC 점도표 3.625 (2026)
00:03.42
ORCHFINAL → WATCH (confidence 3): 기술적 모멘텀 긍정적이나 고금리 지속...
✨ 이 로그가 왜 중요한가: 다음 날 에이전트가 이상한 답변을 했을 때 "왜"가 바로 보입니다. "News Agent가 제대로 안 물어봤네", "Macro Agent가 FOMC 검색을 놓쳤네" 같은 원인 분석이 즉시 가능. 이게 없으면 블랙박스.

로그 저장 — Sheets "agent_trace" 탭

메시지 버스를 Google Sheets에 기록해두면 주간·월간 분석에 유용합니다. 어느 에이전트가 가장 자주 틀리는지, 평균 응답 시간은 얼마인지 집계 가능.

필드예시 값용도
query_iduuid-1234같은 질문의 여러 에이전트 호출 묶기
actornews_agent누가 말했는지
targetorchestrator누구에게
actionRESPONDCALL / RESPOND / FINAL
latency_ms1230응답 시간
payload_summarysentiment +0.18핵심 내용 요약
Test & Debug

실행 테스트와 디버깅

🚨 이번 주 자주 발생하는 오류
Orchestrator가 서브 에이전트를 하나도 호출 안 함
Tool Description이 너무 모호함. "뉴스 관련 질문에 사용"보다 "주식/암호화폐에 대한 최근 뉴스·센티먼트·사건 질문에 사용. 예: '애플 최근 뉴스', 'BTC 관련 이벤트'"처럼 예시까지 포함.
서브 에이전트가 자유 텍스트로 답해서 후처리 실패
Structured Output Parser 연결 + System Message 마지막에 "JSON만 출력. 설명 금지." 강조. Temperature 0.1로.
Max Iterations 도달로 에이전트 멈춤
기본 10에서 5~7로 조정. 10번 내내 reasoning만 하는 건 질문이 너무 복잡하거나 프롬프트가 모호. 테스트할 때 질문을 명확하게.
비용이 예상보다 많이 나옴
서브 에이전트가 Haiku가 아닌 Sonnet으로 잘못 설정됨. 각 서브의 Chat Model 설정 확인. 토큰 사용량은 Anthropic Console → Usage에서 모델별 확인 가능.
서브 에이전트 응답이 너무 느림
각 서브의 툴 수를 3~5개로 제한. 5개 초과 시 결정 피로 발생. 또는 Max Iterations를 서브별로 2~3으로 낮춤.
Completion Checklist

이번 주 완료 체크리스트

✅ 아래 항목이 모두 체크되면 W7 완료
News Agent 구현 — Alpha Vantage + GDELT 툴 연결 + JSON 출력 검증
OnChain Agent 구현 — Blockchair + Whale Alert 연결 + BTC/ETH 쿼리 성공
Macro Agent 구현 — FRED + W6 FOMC RAG 연결 + 출처 인용 확인
각 서브 에이전트가 Haiku로 설정됨 + System Message 명확
Orchestrator 에이전트 생성 — Sonnet + 3개 AI Agent Tool 연결
Return Intermediate Steps 옵션 ON
"AAPL 오늘 어때?" 테스트 → 2개 에이전트 호출 + 종합 verdict 수신
"BTC 분석해줘" 테스트 → chain + macro 호출 확인
Code 노드로 메시지 버스 로그 추출 + Sheets "agent_trace" 탭 기록
Discord에 최종 답변 + (옵션) 디버그 채널에 메시지 버스 로그
Homework

이번 주 과제

📝 HOMEWORK · W7
4번째 전문 에이전트 추가
  • 본인 관심 영역에 맞는 4번째 서브 에이전트 설계 및 추가 (예: "실적 발표 Agent" — Alpha Vantage EARNINGS_CALENDAR 활용, 또는 "한국 종목 Agent" — DART 공시 API 활용)
  • 새 에이전트의 System Message 작성 → Orchestrator에 툴로 연결 → 테스트
  • 1주일간 에이전트 호출 통계 수집: agent_trace 시트에서 "어느 에이전트가 가장 자주 호출되나", "평균 응답 시간", "실패율" 집계
  • 선택 챌린지 A: Orchestrator가 에이전트 병렬 호출하도록 Split In Batches + Merge 노드 구성 → 응답 시간 단축 비교
  • 선택 챌린지 B: Human-in-the-loop 승인 단계 추가 — verdict가 BUY_STRONG일 때 Discord 버튼으로 승인/거부 받은 후에만 알림 발송
💡 W8 미리보기: 마지막 주(Phase 4 완성)는 페이퍼 트레이딩 + 최종 발표입니다. 지금까지 만든 4-에이전트 시스템을 실제 가상 돈으로 연결합니다. Alpaca Paper Trading과 Binance Testnet을 연동해 에이전트의 BUY/AVOID 판단이 실제 가상 주문으로 이어지는 완전한 시스템을 만듭니다. 그리고 발표 준비 — 지원서·포트폴리오로 바로 쓸 수 있게.
References

참고 자료

자료용도
n8n AI Agent Tool 노드 Docs
docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolaiagent
서브 에이전트 Tool 패턴 공식 가이드
n8n Multi-Agent Patterns
blog.n8n.io/ai-agentic-workflows
Gatekeeper 패턴, 단일 vs 멀티 비교
Blockchair API Docs
blockchair.com/api/docs
Bitcoin/Ethereum 무료 stats 엔드포인트
Whale Alert
whale-alert.io
공개 피드 및 API 문서
GDELT Project
blog.gdeltproject.org
무료 전세계 뉴스 DB (매크로 뉴스용)
Structured Output Parser
docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured
JSON 스키마 강제 응답
Anthropic Console — Usage
console.anthropic.com/settings/usage
모델별 토큰 사용량·비용 추적
W7 강의노트 · 멀티 에이전트 오케스트레이션 · 투자 자동화 과정 · 2026