실무 Multi-Agent 오케스트레이션 21장 · 전문 에이전트 구현 8 / 9 ← 이전목차다음 → TechLead Cro

21장. 전문 에이전트 구현

정리와 체크리스트

21장에서 배운 것

  • 전문 에이전트 — 한 가지 일을 맡아, 그 일에 필요한 도구와 규칙만 가진 에이전트입니다.
  • 나누는 기준 — 도구, 프롬프트, 책임. 하나라도 뚜렷하게 다르면 나누고, 셋이 같으면 나누지 않습니다.
  • 읽는 에이전트와 처리하는 에이전트 — 주문조회·정책안내는 읽기만 하고, 무언가를 바꾸는 도구는 요청처리 에이전트 하나에게만 줍니다.
  • 처리의 세 갈래 — 되돌릴 수 있는 일은 직접 처리(배송지 변경, 교환 접수), 돈이 나가는 일은 승인 요청까지만(환불, 주문 취소), 처리할 수 없는 일은 상담원에게(티켓).
  • 코드의 판정 — 출고 여부, 기간, 재고는 도구 안의 코드가 판정합니다. 통과하지 못하면 ok=False와 이유를 돌려줍니다.
  • 입출력 약속과 경계 규칙 — 자연어 요청을 받아 자연어 보고를 돌려주고, 자기 일이 아닌 질문에는 답을 지어내지 않고 물러섭니다.
  • 에이전틱 RAG — 검색을 도구로 주어, 검색어와 횟수를 에이전트가 정하게 하는 구조입니다.
  • haru_actions.py, haru_agents.py — 처리 도구와 전문 에이전트 셋을 담은 재사용 모듈입니다.

한눈에 보는 핵심

from haru_agents import build_agents, run_agent
from haru_tools import CustomerSession

agents = build_agents(CustomerSession("C003"))        # 세션에 묶인 에이전트 셋
report = run_agent(agents["action"],                  # 글이 들어가고 글이 나온다
                   "주문 HR20260726004 배송지를 '서울 중구 세종대로 110'으로 바꿔 주세요.")
주문조회 정책안내 요청처리
꺼내는 이름 agents["order"] agents["policy"] agents["action"]
도구 조회 5개 search_policy 1개 처리 4개 + get_my_orders + create_ticket
성격 읽기 읽기 쓰기
핵심 규칙 조회한 데이터로만 보고 검색 결과에 근거, 조항 표기 되묻지 않고 처리, 못 했으면 못 했다고 보고
물러서는 경우 정책 질문 검색 결과에 없는 내용 도구가 ok=False를 돌려준 요청, 도구로 처리할 수 없는 일(상담원에게)
처리의 갈래 도구 기록의 상태
직접 처리 change_shipping_address, request_exchange 완료
승인 요청까지만 request_refund 승인대기 → 사람이 승인하면 승인완료
상담원에게 create_ticket 티켓 접수
개발자(코드)가 정한 것 모델이 정한 것
에이전트를 몇으로, 어디서 나눌지 주어진 도구 가운데 무엇을 부를지
에이전트마다 줄 도구. 처리 도구는 한 에이전트에게만 검색어, 도구 인자(새 주소·새 옵션·사유)
출고 여부·기간·재고의 판정, 처리번호, 기록 보고의 문장
환불을 승인대기에서 멈추는 것 검색을 몇 번 할지
누구의 데이터를 보고 누구의 주문을 처리하는지 (세션)

체크리스트

  • [ ] 도구와 규칙을 한 에이전트에 모두 넣으면 무엇이 나빠지는지 말할 수 있다.
  • [ ] 에이전트를 나누는 세 가지 기준을 말할 수 있다.
  • [ ] 배송 추적을 주문조회 에이전트에서 따로 떼어 내지 않는 이유를 세 기준으로 설명할 수 있다.
  • [ ] 읽기 도구를 잘못 불렀을 때와 처리 도구를 잘못 불렀을 때의 차이를 말할 수 있다.
  • [ ] 처리 도구를 요청처리 에이전트 하나에게만 준 이유를 설명할 수 있다.
  • [ ] 배송지 변경은 직접 처리하고 환불은 승인 요청까지만 하는 기준을 한 문장으로 말할 수 있다.
  • [ ] 출고 여부와 반품 기간을 모델이 아니라 코드가 판정하게 한 이유를 설명할 수 있다.
  • [ ] 실습 기준일 TODAY가 왜 필요한지 말할 수 있다.
  • [ ] check21_actions.py로 LLM 없이 도구를 불러, 배송중인 주문의 배송지 변경이 거절되는 것을 확인했다.
  • [ ] lesson21_specialist_agents.py의 시험 3·4·5 뒤에 memory_store/actions.json에 두 건(완료, 승인대기)이 남은 것을 확인했다.
  • [ ] 시험 6에서 [도구] 줄이 없고 금액도 없다는 것을 실행 결과로 확인했다.
  • [ ] 코드가 먼저 검색하는 방식과 검색을 도구로 주는 방식의 차이를 말할 수 있다.

한 줄 핵심

읽는 일은 넓게 나눠 주고, 바꾸는 일은 한 에이전트에게만 줍니다. 그 에이전트가 처리해도 되는지는 코드가 판정하고, 되돌릴 수 없는 일은 사람의 승인 앞에서 멈춥니다.

← 이전 절따라하기 2 — 전문 에이전트 만들고 하나씩 시험하기다음 절 →실습문제와 해답
오명운 · macro@prag-ai.com