스웜은 지휘하는 오케스트레이터 없이, 역할이 나뉜 여러 에이전트가 자기 담당이 아니면 대화를 다른 에이전트에게 넘기며(핸드오프) 일을 처리하는 멀티에이전트 방식이다. 고객 상담처럼 문의 종류에 따라 담당자가 바뀌는 대화에 잘 맞고, OpenAI가 2024년에 공개한 Swarm 프레임워크가 이 방식을 코드로 보여 줬다.
| 구분 | 오케스트레이터 방식 | 스웜 방식 |
|---|---|---|
| 누가 결정하나 | 중앙 지휘자가 일을 나눠 줌 | 지금 맡은 에이전트가 다음 담당을 정함 |
| 흐름 | 지휘자가 결과를 모아 정리 | 대화가 담당자 사이를 옮겨 다님 |
| 잘 맞는 일 | 큰 작업을 쪼개 동시에 처리 | 상황에 따라 담당이 바뀌는 대화 |
Swarm에서 에이전트는 이름, 지시문(instructions), 쓸 수 있는 함수 목록으로 이뤄진다. 함수가 다른 에이전트를 반환하면 그 순간 대화의 주인이 바뀐다. 이것이 핸드오프다.
예를 들어 고객 상담 스웜에서는 일반 문의 에이전트가 기술 문제를 알아채면 기술지원 에이전트에게 넘긴다. 기술지원 에이전트가 결제 문제를 발견하면 다시 결제 에이전트에게 넘긴다. 사용자는 한 창에서 대화하지만, 뒤에서는 담당자가 바뀌고 있다.
| 단계 | 할 일 |
|---|---|
| 1. 역할 나누기 | 안내·기술·결제처럼 담당을 정하고 에이전트마다 지시문을 짧게 쓴다 |
| 2. 넘기는 함수 만들기 | transfer_to_billing처럼 다른 에이전트를 반환하는 함수를 붙인다 |
| 3. 시작점 정하기 | 첫 에이전트와 메시지를 넣어 client.run()으로 실행한다 |
| 4. 흐름 확인 | 대화 기록을 보며 엉뚱한 곳으로 넘어가지 않는지 점검한다 |
Swarm 라이브러리 기준. 다른 프레임워크도 '핸드오프' 개념은 비슷하다.
담당이 분명히 나뉘고 한 번에 한 에이전트만 일하면 되는 대화형 업무에 잘 맞는다. 지시문이 짧아져 에이전트마다 관리하기도 쉽다.
반대로 여러 결과를 한데 모아야 하거나 동시에 병렬로 돌려야 하는 작업이라면 오케스트레이터 방식이 낫다. 지휘자가 없으니 에이전트끼리 서로 계속 넘기는 핑퐁이 생길 수 있다. 그래서 넘기는 조건을 지시문에 분명히 적어야 한다.
OpenAI는 Swarm을 실험적·교육용 라이브러리로 내놓았고, 이후 이를 발전시킨 Agents SDK를 공개했다. 개념을 익히려면 Swarm 예제가 간단해서 좋지만, 실제 서비스를 만든다면 핸드오프를 지원하는 정식 SDK를 쓰는 편이 안전하다.
가장 흔한 건 하나의 대화창 뒤에 담당 에이전트를 여럿 두는 방식이다. 첫 에이전트가 문의를 받아 분류하고, 담당이 정해지면 그쪽으로 대화를 넘긴다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 고객 상담 챗봇 | 안내 에이전트가 먼저 받고 기술·결제·환불 문의를 담당 에이전트로 넘긴다 |
| 사내 헬프데스크 | IT·인사·총무 문의를 한 창에서 받아 담당 에이전트로 연결한다 |
| 멀티에이전트 공부 | Swarm 예제로 핸드오프 구조를 익힌 뒤 실서비스는 Agents SDK로 옮긴다 |