한 Agent가 모든 질문을 처리하면 환각과 톤 불일치가 커집니다. 블루버튼은 Coordinator가 질문을 분류해 전문 Agent 노드로 라우팅하는 멀티 에이전트 아키텍처를 사용합니다.
개념 정의
멀티 에이전트 시스템은 역할이 분리된 여러 Agent가 Coordinator(조정자) 아래 협업하는 구조입니다. 사용자는 auto_select: true로 요청하면 적합한 Agent가 자동 선택되고, agent_id를 지정하면 해당 전문가에게 직접 연결됩니다.
| 구성요소 | 역할 |
|---|---|
| Coordinator | 의도 분류·노드 선택·fallback 판단 |
| Specialist Agent | 도메인별 system_prompt·도구 세트 |
| LangGraph | 노드·엣지로 실행 흐름 정의 |
| Circuit Breaker | multi_agent 장애 시 단일 Agent fallback |
메커니즘: 라우팅 경로
- 요청 수신:
message,session_id,context,auto_select전달 - Coordinator 분류: 기획/쇼핑/학습/시장 분석 등 intent 추출
- 노드 실행: LangGraph
multi_agent그래프에서 해당 노드 호출 - 응답 집계:
agent_responses,current_agent,agents_involved반환 - Fallback: Circuit Breaker OPEN 시
market_analyst(단일)로 전환
블루버튼 Agent ID → 노드 매핑 예:
| Agent ID | node_name | 용도 |
|---|---|---|
| 1 | market_analyst | 시장·트렌드 분석 |
| 3 | project_navigator | 프로젝트 intake·MVP 범위 |
| 4 | fashion_curator | 패션 쇼핑 큐레이션 |
| 5 | tech_curator | 전자·IT 제품 추천 |
| 6 | beauty_curator | 뷰티·코스메틱 상담 |
| 7 | learning_assistant | 단계별 학습·힌트 |
이론적 배경
분업 협업(Multi-Agent Collaboration) 이론에서 전문화된 Agent는 각자 좁은 action space를 가져 계획 오류를 줄입니다. LangGraph는 상태 기계(State Machine)로 Agent 간 handoff를 명시해, 단일 프롬프트 체인보다 추적 가능한 실행 경로를 제공합니다. Coordinator는 Router Agent 패턴의 구현체입니다.
30초 요약
- Coordinator가 질문 유형을 읽고 전문 Agent 노드로 보냅니다.
auto_select: true면 agent_id 없이 자동 라우팅, false면 지정 Agent만 사용합니다.- LangGraph multi_agent + Circuit Breaker로 안정성과 fallback을 확보합니다.
병원에 비유하면, 접수(Coordinator)가 증상을 듣고 내과·정형외과·약국으로 안내하는 것과 같습니다. 한 명의 의사가 모든 수술을 하지 않듯, 기획 질문을 fashion_curator에게 보내면 답 품질과 전환율이 모두 떨어집니다.
FAQ
Q. auto_select와 agent_id 지정 중 무엇을 쓰나요?
A. 탐색형 UX·온보딩은 auto_select. 특정 쇼핑몰 Agent·학습 �utor 고정은 agent_id 지정.
Q. multi_agent 실패 시 어떻게 되나요?
A. multi_agent_circuit_breaker가 OPEN이면 단일 Agent(market_analyst) fallback. 응답 metadata에 fallback_mode: true 포함.
Q. Agent를 새로 추가하려면?
A. DB에 Agent 등록 → agent_mapping에 node_name 추가 → LangGraph config 갱신. 시스템 프롬프트부터 작성.
Q. 세션은 Agent 간 공유되나요?
A. 동일 session_id로 컨텍스트가 유지되며, 라우팅만 바뀔 수 있습니다.
용어 사전
| 용어 | 설명 |
|---|---|
| Coordinator | 사용자 intent를 분류하는 라우팅 Agent |
| auto_select | agent_id 자동 선택 API 플래그 |
| LangGraph | 노드 기반 Agent 워크플로 프레임워크 |
| node_name | 그래프 내 Agent 식별자 (예: project_navigator) |
| Circuit Breaker | 연속 실패 시 요청 차단·fallback 트리거 |
팁: 라우팅 로그에
current_agent와agents_involved를 저장하면, 어떤 질문이 잘못된 Agent로 갔는지 주간 리뷰가 가능합니다.
실무: API 요청 템플릿
{
"message": "스타트업 MVP 앱 견적과 Must 기능 3개만 정리해줘",
"session_id": "sess_abc123",
"context": "예산 1500만, 8주 일정",
"auto_select": true,
"stream": false
}
응답 확인 필드: selected_agent_id, auto_selected, selected_agent_info.name
라우팅 품질 체크리스트
- Coordinator 프롬프트에 각 Agent 한 줄 역할 정의
- 애매한 intent는 확인 질문 노드로 분기
- Agent별 tool 화이트리스트 분리
- fallback 단일 Agent 응답 품질 주간 점검
-
agents_involved > 1비율 모니터링 (과도한 멀티 hop 방지)
Before / After
| Before | After |
|---|---|
| 모든 질문 → 범용 GPT | 기획 → project_navigator |
| 쇼핑·학습 톤 혼재 | 카테고리 Curator 분리 |
| 장애 시 전체 500 | Circuit Breaker → 단일 fallback |
KPI
- 라우팅 정확도(사람 라벨 대비) ≥ 85%
- auto_select 성공률 ≥ 92%
- 평균 agents_involved 1.2~1.8 (불필요한 다중 hop 최소화)