여러 AI 에이전트가 누가, 언제, 어떤 순서로 일할지 정하는 설계 방식으로, 실행 순서와 중간 결과를 넘기는 방법, 실패했을 때의 처리까지 미리 정해 둔다. 한 에이전트로는 감당하기 어려운 큰 작업이나 단계가 뚜렷하게 나뉘는 일을 역할별로 나눠 처리할 때 쓴다.
| 패턴 | 흐름 | 이럴 때 쓴다 |
|---|---|---|
| 순차 | A → B → C 차례로 | 앞 단계 결과가 다음 단계의 입력일 때 |
| 병렬 | 동시에 실행한 뒤 결과를 합침 | 서로 상관없는 검사를 빨리 끝낼 때 |
| 조건 분기·넘겨주기 | 상황에 맞는 에이전트로 넘김 | 질문 종류마다 맡을 에이전트가 다를 때 |
| 관리자형 | 총괄 에이전트가 계획을 세우고 일을 나눠 줌 | 할 일이 미리 정해져 있지 않을 때 |
에이전트를 여러 개 띄우기만 하면 서로의 결과를 모르니 같은 일을 반복하거나 결과가 부딪힌다. 오케스트레이션은 그 사이에 규칙을 둔다. 핵심은 어떤 결과를 다음 에이전트에 넘길지, 한 단계가 실패하면 다시 할지 멈출지를 정하는 것이다.
PR이 올라오면 세 에이전트가 차례로 일하는 순차 패턴의 예다. 앞 단계의 결과가 다음 단계의 범위를 좁혀 주기 때문에 뒤 단계는 꼭 필요한 곳만 본다.
| 순서 | 에이전트 | 하는 일 |
|---|---|---|
| 1 | 정적 분석 | 코드 전체를 검사해 문제 후보를 찾는다 |
| 2 | 보안 점검 | 1단계에서 걸린 파일만 집중해서 본다 |
| 3 | 리뷰 요약 | 결과를 모아 PR 코멘트를 쓴다 |
스타일 검사와 보안 검사처럼 서로 결과가 필요 없는 단계는 병렬로 돌리면 전체 시간이 줄어든다.
LangGraph에서는 각 단계를 노드로, 단계 사이의 흐름을 연결선으로 그려 그래프로 정의한다. 조건에 따라 갈라지는 길이나 다시 돌아가는 고리도 같은 방식으로 만든다. AutoGen은 에이전트끼리 대화를 주고받으며 일하는 구성에 많이 쓰고, Claude Code에서는 메인 에이전트가 서브에이전트에게 일을 나눠 맡기는 식으로 쓸 수 있다.
처음에는 순차 패턴 하나로 시작하고, 느리거나 자주 막히는 지점에만 병렬이나 분기를 더하는 게 안전하다.
에이전트가 늘수록 모델 호출이 많아져 비용과 대기 시간이 늘고, 어디서 잘못됐는지 찾기도 어려워진다. 한 에이전트가 도구 몇 개로 해결할 수 있는 일이라면 그쪽이 낫다. 오케스트레이션을 쓴다면 단계마다 입력과 출력을 기록하고, 에이전트끼리 끝없이 주고받지 않도록 최대 반복 횟수를 정해 둔다.
가장 흔한 건 단계가 정해진 반복 작업을 순차·병렬 파이프라인으로 묶는 방식이다. 할 일이 그때그때 달라지는 작업은 관리자형으로 총괄 에이전트가 계획을 세워 나눠 맡긴다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 메인 에이전트가 계획을 세우고 코드 탐색·테스트 실행을 서브에이전트에 나눠 맡긴다 |
| PR 코드 리뷰 | 정적 분석 → 보안 점검 → 요약은 순차로, 서로 무관한 검사는 병렬로 돌린다 |
| 고객 문의 응대 | 질문 종류를 먼저 가려 환불·기술 지원 등 맡을 에이전트로 넘긴다 |
| 리서치·보고서 작성 | 여러 에이전트가 자료를 동시에 찾고, 마지막 에이전트가 모아 정리한다 |