CrewAI 는 코드 내의 옵션 선택을 통해 supervisor pattern 을 사용할 수 있다.
GitHub 소스를 분석해 보면, 이 기능의 구현에 대한 3가지 힌트를 확인할 수 있다.
https://docs.crewai.com/ko/learn/hierarchical-process
먼저, supervisor 는 무엇이며 어떤 역할을 할까?
일반적으로 Supervisor 는 다음과 같은 역할을 맡는다.
1. 의도 파악 (Intent Classification)
• 사용자의 입력을 분석해 어떤 작업인지 판단
• 단순 규칙이 아니라 LLM 분류, embeddings 기반 매칭 등을 사용
2. Worker 선택 (Routing)
• 조건 분기에 따라 적합한 Worker를 선택
• 때로는 여러 Worker를 순차·병렬로 호출
3. 흐름 제어 (Flow Orchestration)
• Worker 실행 순서 결정
• 중간 결과를 다음 Worker로 전달
• 필요 시 반복(loop) 또는 분기(branch) 실행
4. 예외 처리 / Fallback
• Worker 실패 시 다른 Worker로 재시도
• 오류 메시지 생성, 로깅
5. 최종 응답 생성
• Worker들의 결과를 종합·후처리
• 포맷 변환, 정리, 사용자 친화적 응답 생성
대부분 케이스에서 Supervisor 의 모든 역할이 필요하진 않다.
필요에 따라 모델, 벡터 DB 등을 유연하게 선택하고, supervisor 의 역할을 추가할 수 있다.
Supervisor 가장 중요한 역할은 의사결정과 흐름 제어이다. (decision making & orchestration)
https://langchain-ai.github.io/langgraph/concepts/multi_agent/
다음으로, supervisor 패턴의 장단점에는 어떤게 있을까?