📚 Agentic AI - 기업용 자율 에이전트 개발 8장 · 멀티에이전트 아키텍처 Agentic AI란

한 종류로는 답이 안 나오는 질문

한 줄 요약

"승승 스마트워치 Fit 5, 지금 어떻게 대응해야 할까요?" — 이 질문 하나에 CSV·문서·웹이 모두 필요합니다. 한 곳만 봐서는 판단이 안 나옵니다. 이것이 멀티에이전트가 필요한 이유입니다.


1. 질문 하나를 던져 봅시다

담당자가 실제로 던질 법한 질문입니다.

"승승 스마트워치 Fit 5(P0003), 지금 어떻게 대응해야 할까요?"

무엇을 알아야 답할 수 있을까요? 지금까지 만든 에이전트에게 하나씩 질문해 봅시다.

CSV 데이터분석 에이전트 (5장)

재고 3개 / 재주문 기준 30개
2026년 5월 판매 12개 (직전 3개월은 2·3·1개)
리뷰 15건, 평균 3.8점, 3점 이하 5건
부정 리뷰: "GPS를 켜면 하루도 못 갑니다. 일주일 간다는 설명과 너무 달라요"

여기서 멈춥니다. "평점이 낮고 재고가 없다"까지는 알겠는데, 왜 평점이 낮은지, 무엇을 고쳐야 하는지는 모릅니다.

RAG 문서검색 에이전트 (6장)

제품매뉴얼 SWF-5 — 배터리 일반 7일 / GPS 사용 시 18시간
환불교환정책 — 단순 변심 7일, 불량·하자 30일 이내

여기서 멈춥니다. "사양은 이렇다"까지는 알겠는데, 고객이 무엇에 불만인지는 모릅니다.

웹검색 에이전트 (4장)

스마트워치 시장은 성장세, 배터리 지속시간이 주요 경쟁 요소

여기서 멈춥니다. 우리 상품이 어떤 상태인지를 모릅니다.


2. 나란히 놓으면 보입니다

[CSV]  고객 불만: "GPS를 켜면 하루도 못 갑니다. 일주일 간다는 설명과 너무 달라요"
                                      ↕
[RAG]  제품 사양: 일반 사용 7일 / GPS 사용 18시간

두 줄을 붙여 놓으면 무엇이 보이나요?

  • GPS 켜면 18시간 → 하루가 안 됩니다
  • 고객 말이 맞습니다. "하루도 못 간다"는 사실입니다
  • 그런데 매뉴얼에도 그렇게 적혀 있습니다. 제품은 사양대로 동작합니다
  • 고객은 "일주일"만 보고 샀습니다

결론: 제품 결함이 아니라 표기 문제입니다.

CSV · reviews.csv"GPS를 켜면 하루도 못 갑니다"RAG · 제품매뉴얼.pdf"GPS 사용 시 약 18시간"여기서 멈춤: 평점이 낮다이 자료만으로는 판단 불가여기서 멈춤: 사양은 정상이 자료만으로는 판단 불가18시간 ≈ 하루 미만고객 말이 맞다 + 매뉴얼대로다제품 결함이 아니라 표기 문제권고: 상세페이지에 GPS 18시간 명시한 종류의 자료만으로는 판단하기 어렵습니다. 두 자료를 함께 봐야 '결함이 아니다'라는 판단이 나옵니다.
혼자서는 각자 회색 상자에서 멈추고, 두 사실이 만나야 결론이 나온다

여기에 나머지 사실들이 붙습니다.

[CSV] 5월 판매가 6배로 뛰었다        → 지금 팔리고 있다
[CSV] 재고가 3개뿐이다              → 곧 품절이다
[웹]  시장에서 배터리가 경쟁 요소다   → 이 불만은 계속 나올 것이다
[RAG] 불량은 30일 이내 반품 가능      → 불만 고객 응대 기준이 있다

대응 방안이 나옵니다.

  1. 상세페이지에 GPS 사용 시 18시간을 명시한다
  2. 27개를 발주한다 (재주문 기준 30 - 재고 3)
  3. 불만 고객은 불량 기준(30일) 으로 안내한다

3. 왜 한 에이전트로는 안 되나

"도구를 다 주면 되지 않나요?"

아래는 개념 설명용 코드입니다 — 실습 파일에 넣지 않습니다.

agent = create_agent(llm, tools=[run_pandas, policy_tool, search_web], ...)

됩니다. 실제로 6장 8절 「스스로 해 보기」에서 도구 두 개를 붙여 봤죠.

그런데 문제가 생깁니다. 4장 4절에서 짚은 그대로입니다.

문제 무슨 일이
도구 선택이 부정확해진다 도구가 많아질수록 헷갈린다
어디서 틀렸는지 모른다 답 하나만 나오니 추적이 안 된다
한 번에 하나씩만 순차적으로 도구를 쓰므로 느리다
역할이 뒤섞인다 "재주문 기준"을 문서에서 찾으려 한다

마지막 것이 실제로 일어난 사고입니다. 6장 9절에서 본 그것이죠.


4. 나누면 어떻게 되나

한 명에게 도구 4개에이전트get_order_statusrun_pandaspolicy_searchsearch_web"어느 걸 써야 하지?"넷에게 하나씩팀장도구 없음 · 계획만 세운다주문담당get_order_status데이터분석가run_pandas규정담당policy_search시장조사원search_web종합받은 보고를 합친다 · 도구 없음도구 선택지를 줄이면 잘못 고를 가능성도 줄어듭니다. 멀티에이전트로 역할을 나누는 이유 중 하나입니다.
도구 넷을 한 명에게 몰아 주는 것과 넷에게 하나씩 주는 것의 차이

담당은 넷입니다. 각 담당은 도구가 하나뿐이라 고를 것이 없습니다.

이 장에서 쓰는 세 낱말

앞으로 계속 나올 이름을 여기서 못 박아 둡니다.

이름 무엇 이 교재의 표기
플래너(Planner) 질문을 읽고 누구에게 무엇을 물을지 계획만 세우는 에이전트. 도구가 없다 코드에서는 planner, 설명에서는 팀장
워커(Worker) 도구를 하나만 가진 전문가 에이전트. 다른 일은 모른다 코드에서는 WORKERS, 설명에서는 담당
종합(Synthesis) 워커들의 보고를 모아 하나의 답으로 정리하는 마지막 단계 코드·설명 모두 종합

"워커"와 "담당"은 같은 것입니다. 코드 변수 이름이 WORKERS 라서 코드를 볼 때는 워커, 사람에게 설명할 때는 담당이라고 씁니다. 모델에게 주는 시스템 지시 안에서는 "팀원" 이라는 말을 쓰는데, 그것도 같은 뜻입니다.

그리고 화면에 이렇게 찍힙니다.

  [계획]
    → 데이터분석가: 최근 판매 추이, 재고 수량, 리뷰 평점과 부정 리뷰 내용을 분석해주세요.
    → 규정담당    : 제품 사양(배터리·방수 등)을 알려주세요.
    → 시장조사원  : 경쟁 제품 동향과 외부 사용자 반응을 조사해주세요.

  [데이터분석가 보고] 재고 3개 / 평균 3.8점 / 부정 리뷰: "GPS를 켜면 하루도 못..."
  [규정담당 보고]    배터리 일반 7일 / GPS 18시간
  [시장조사원 보고]  스마트워치 시장은 성장세, 배터리가 주요 경쟁 요소

담당은 넷인데 셋만 불렸습니다. 이 질문에는 주문번호가 없어서 주문담당을 부를 이유가 없기 때문입니다. 필요한 담당만 부르는 것이 플래너의 일입니다. 주문담당은 8절의 이어 묻기("주문 O001203은 지금 어떤 상태인가요?")에서 등장합니다.

누가 무엇을 보고했는지 보입니다. 답이 이상하면 어느 담당이 잘못했는지 짚을 수 있습니다.


5. 이것이 멀티에이전트입니다

거창한 게 아닙니다.

멀티에이전트란, 도구를 나눠 가진 에이전트 여러 개가 한 팀으로 움직여 하나의 답을 내게 만든 것입니다.

각 에이전트는 5장에서 만든 것과 똑같은 구조입니다.

아래는 개념 설명용 코드입니다 — 실습 파일에 넣지 않습니다.

create_agent(llm, tools=[one_tool], system_prompt="...")

달라지는 것은 "어떻게 구성하느냐"뿐입니다. 그게 4절의 주제입니다.


6. 그리고 이어서 묻습니다

7장에서 배운 기억도 얹힙니다.

질문 1: "승승 스마트워치 Fit 5(P0003), 지금 어떻게 대응해야 할까요?"
        → 담당 셋이 조사 → 종합 답변

질문 2: "그 상품을 산 주문 O001203은 지금 어떤 상태인가요?
         그리고 재주문 기준을 채우려면 몇 개를 발주해야 하나요?"
        → "그 상품"이 통한다
        → 계획: 주문담당 + 데이터분석가 (넷 중 둘)
        → "배송완료입니다" / "27개를 발주해야 합니다"

두 번째 질문에서는 넷 중 둘만 부릅니다. 규정담당·시장조사원은 물어볼 것이 없으니 빠졌습니다. 계획이 질문에 따라 달라지는 것이죠.

멀티에이전트 + 멀티턴 — 이것이 이 과정의 결승선입니다.


7. 대가도 있습니다

미리 말해 둡니다. 좋기만 한 건 아닙니다.

얻는 것 내주는 것
각자의 판단이 쉬워진다 호출이 몇 배로 는다 (비용·시간)
어디서 틀렸는지 보인다 구조가 복잡해진다
담당별로 개선할 수 있다 계획이 틀리면 전부 틀린다

호출 수를 세어 봅시다.

[플래너]      1번
[작업 N개]   각 작업마다 도구를 쓰며 2번 이상
[종합]        1번
             ─────
   작업 3개 → 8번 · 작업 8개 → 18번

2장 7절에서 예고한 그대로입니다. 작업 수에 따라 질문 하나에 10~20번입니다. 실측 예는 8절의 전체 데모 — 팀장이 작업을 8개로 나눠 18번이 나옵니다.

이 문장을 기준으로 삼으세요"작업 수에 따라 10~20번, 실측 예는 작업 8개에 18번." 8장 곳곳에 호출 수 이야기가 나오는데 전부 이 셈에서 나온 숫자입니다.

그래서 항상 멀티에이전트가 답은 아닙니다. "재고 몇 개?" 같은 질문에는 5장 에이전트 하나면 충분합니다. 한 종류로 답이 안 나오는 질문에만 쓰는 것이죠.


핵심 정리

  • "지금 어떻게 대응해야 할까요?" — 이 질문 하나에 CSV·문서·웹이 모두 필요합니다.
  • 한 곳만 보면 각자 자기 자리에서 멈춥니다. 나란히 놓아야 판단이 나옵니다.
  • 핵심 발견 — 리뷰 불만(CSV)과 매뉴얼 사양(RAG)을 붙이면 "결함이 아니라 표기 문제" 가 보입니다.
  • 도구를 한 명에게 다 주면 — 선택이 부정확해지고, 추적이 안 되고, 역할이 뒤섞입니다.
  • 멀티에이전트란 도구를 나눠 가진 에이전트 여러 개가 한 팀으로 움직여 하나의 답을 내게 만든 것입니다.
  • 각 에이전트는 5장에서 만든 것과 똑같은 구조입니다. 달라지는 건 구성 방식뿐입니다.
  • 대가가 있습니다 — 질문 하나에 호출 10~20번(실측 예: 작업 8개에 18번). 한 종류로 답이 나오는 질문에는 쓰지 않습니다.
  • 플래너(팀장) · 워커(담당) · 종합 — 이 장 내내 쓰는 세 낱말입니다.
  다음 절 →02. 왜 하나에 도구를 다 몰아넣지 않는가 역할 분리