실무 Multi-Agent 오케스트레이션 20장 · 복합 요청 분해 처리 2 / 7 ← 이전목차다음 → TechLead Cro

20장. 복합 요청 분해 처리

Planner-Worker — 계획하고, 실행하고, 합친다

한 줄 요약

Planner-Worker는 일을 세 단계로 나누는 구조입니다. Planner(계획 담당)가 문의를 작업 목록으로 쪼개고, Worker(실행 담당)가 작업을 하나씩 처리하고, 마지막에 결과를 취합해 답 하나로 만듭니다. 핵심은 실행하기 전에 계획이 데이터로 먼저 나온다는 점입니다.


1. 세 단계

Planner-Worker 3단계

단계 입력 출력 LLM 호출
계획 (Planner) 고객 문의 작업 목록 1번
실행 (Worker) 작업 하나 + 지금까지의 결과 그 작업의 보고 작업 수만큼
취합 문의 + 모든 보고 고객에게 보낼 답변 1번

작업이 세 개인 문의라면 LLM을 적어도 다섯 번 부릅니다. 19장의 라우터는 같은 문의에 두 번(분류 1번, 답변 1번)이었습니다. 복합 요청을 제대로 처리하는 데 드는 비용입니다.


2. 9장의 에이전트 루프와 무엇이 다른가

9장에서 만든 ReAct 루프도 여러 단계를 거쳐 문제를 풉니다. 도구를 전부 주면 이 복합 문의도 풀 수 있습니다. 둘의 차이는 계획이 어디에 있는가입니다.

ReAct 루프 (9장) Planner-Worker (이번 장)
계획 따로 없다. 매번 "다음에 무엇을 할지"를 그때그때 정한다 먼저 세운다. 실행 전에 작업 목록이 나온다
좋은 점 중간 결과를 보고 방향을 바꿀 수 있다 무엇을 할지 실행 전에 볼 수 있다. 몇 번 호출할지 미리 안다
약한 점 몇 번 돌지 미리 알 수 없다 계획을 세울 때 몰랐던 상황에 대응하지 못한다
어울리는 일 해 봐야 다음 단계를 알 수 있는 일 할 일을 미리 셀 수 있는 일

"운동화 주문 찾기, 배송비 규정 찾기, 재고 보기"는 문의만 읽어도 할 일을 셀 수 있습니다. Planner-Worker가 어울리는 경우입니다.


3. 계획이 데이터로 있으면 할 수 있는 것

ReAct 루프에서 모델이 "다음엔 이걸 하자"고 정한 것은 지나가면 흔적이 흩어집니다. Planner-Worker의 계획은 실행 전에 코드가 손에 쥐는 데이터입니다. 그래서 이런 일을 할 수 있습니다.

  • 출력한다. 이 문의에 무엇을 하려는지 실행 전에 눈으로 봅니다. 이번 장의 코드가 [Plan]을 먼저 찍는 이유입니다.
  • 검사한다. 작업 수가 너무 많으면 멈추거나, 특정 작업이 들어 있으면 사람의 승인을 받게 할 수 있습니다.
  • 기록한다. "이 문의에 왜 이 작업들이 실행됐는가"를 나중에 확인할 수 있습니다.

계획을 먼저 받는다는 것은, 모델이 하려는 일을 실행하기 전에 한 번 들여다볼 자리를 만든다는 뜻입니다.


4. 누가 무엇을 정하는가

정하는 것 누가
이 문의를 어떤 작업들로 쪼갤 것인가 모델 (Planner)
작업의 종류로 무엇이 가능한가 개발자 (작업 유형 네 가지를 코드로 정해 둔다)
각 작업을 어느 함수가 맡는가 개발자 (유형과 함수를 잇는 표)
작업을 어떤 순서로, 어떻게 이어서 실행하는가 개발자 (반복문)
각 작업 안에서 어떤 도구를 부르는가 모델 (Worker 안의 호출)
보고들을 어떤 문장으로 합치는가 모델 (취합)

모델이 정하는 것은 셋, 개발자가 정하는 것도 셋입니다. 모델이 자유롭게 정하는 것처럼 보이는 자리마다 개발자가 그어 둔 테두리가 있습니다. 그 테두리를 어떻게 긋는지가 다음 두 절의 내용입니다.


핵심 정리

  • Planner-Worker는 계획 → 실행 → 취합 세 단계입니다.
  • LLM 호출은 계획 1번 + 작업 수만큼 + 취합 1번입니다.
  • ReAct 루프는 다음 행동을 그때그때 정하고, Planner-Worker는 미리 정합니다.
  • 계획이 데이터로 있으면 실행 전에 출력하고, 검사하고, 기록할 수 있습니다.
  • 할 일을 미리 셀 수 있는 복합 요청에 어울립니다.
← 이전 절왜 복합 요청 분해가 필요한가 — 한 문장에 일이 세 개다다음 절 →계획도 구조화 출력이다 — 작업 목록을 정해진 모양으로 받는다
오명운 · macro@prag-ai.com