Home / Strands 멀티에이전트 개발 / Strands Agents-as-Tools
Note

Strands Agents-as-Tools

계층적 위임, 컨텍스트 전달, Supervisor

⏱ 35분 110 / 189

Strands Agents-as-Tools

계층적 위임, 컨텍스트 전달, Supervisor

에이전트가 에이전트를 부른다

4가지 멀티에이전트 패턴 — 위임에서 오케스트레이션까지

Agents-as-Tools

Supervisor 위임 패턴

PART 2 · Agents-as-Tools

Agents-as-Tools

가장 단순한 멀티에이전트 — Supervisor가 하위 에이전트를 도구처럼 부리는 구조

Agents-as-Tools

Supervisor Agent가 하위 에이전트를 tool로 호출하는 위임 모델입니다

  • @tool — 하위 에이전트를 도구로 정의
  • Supervisor — 태스크 분해와 위임
  • 제어 흐름 명확 — 디버깅 용이
  • 단일 책임 에이전트 조합
takeaway

하위 에이전트는 수동적 도구입니다 — 결정은 전부 Supervisor에 집중되고, 흐름은 예측 가능해집니다.

PART 2 · Agents-as-Tools

Agents-as-Tools 구조도

하위 에이전트끼리는 서로를 모르는 별형 구조 — 위임과 결과 반환이 전부 Supervisor를 경유

PART 2 · Agents-as-Tools

Agents-as-Tools 구현

@tool로 감싼 하위 에이전트를 Supervisor의 tools=에 장착 — str(agent(query))로 텍스트 결과만 반환

핵심 포인트

@tool
함수로 감싼 하위 에이전트를 Supervisor의 도구로 노출
system_prompt
하위 에이전트마다 전문 역할을 별도 지정 — 단일 책임
str(agent(query))
AgentResult에서 텍스트만 추출해 도구 결과로 반환
tools=[...]
Supervisor에 하위 에이전트들을 도구 목록으로 장착

코드

python
from strands import Agent, tool

@tool
def research_agent(query: str) -> str:
    """리서치 전담 에이전트"""
    return str(Agent(system_prompt="You are a research specialist.")(query))

@tool
def writer_agent(content: str) -> str:
    """작문 전담 에이전트"""
    return str(Agent(system_prompt="You are a technical writer.")(content))

supervisor = Agent(  # 하위 에이전트를 도구로 장착
    system_prompt="Delegate tasks to specialists.",
    tools=[research_agent, writer_agent],
)
result = supervisor("AI 트렌드 리포트를 작성해줘")
PART 2 · Agents-as-Tools

Supervisor 위임 흐름

Supervisor가 태스크를 분해하고 하위 에이전트에 순차 위임하는 과정

  1. 1
    태스크 수신

    Supervisor가 사용자 요청을 분석

  2. 2
    태스크 분해

    하위 작업으로 분할 후 적합한 에이전트 선택

  3. 3
    Tool 호출

    하위 에이전트를 tool()로 실행

  4. 4
    결과 통합

    각 에이전트 응답을 취합하여 최종 답변 생성

takeaway

분해·위임·통합이 전부 Supervisor 한 곳에서 일어납니다 — 흐름이 명확한 대신 병목도 여기서 생깁니다.

PART 2 · Agents-as-Tools

Supervisor와 하위 에이전트 — 컨텍스트·상태 경계

넘어가는 것은 도구 인자와 결과 텍스트뿐 — 격리가 이 패턴의 장점이자 제약

넘어가는 것

도구 호출의 입출력

  • 지시 — Supervisor가 재구성한 query 인자 한 줄
  • 결과 — str(AgentResult) 텍스트만 반환
  • 기록 — 왕복이 Supervisor의 messages[]에 toolUse·toolResult로 남음

하위 에이전트에게 맥락을 주려면 query 문자열에 담아 보내야 합니다 — Supervisor의 지시 구성이 곧 컨텍스트 설계입니다.

넘어가지 않는 것

각자의 독립 상태

  • Supervisor의 대화 이력과 system prompt
  • 하위 에이전트의 중간 추론·도구 호출 내역
  • 하위 messages[] — 호출마다 새로 생성 (기본 무상태)

컨텍스트 포화를 막는 격리 — 하위가 이력을 유지해야 한다면 세션 관리(상태 관리 모듈)를 별도로 설계합니다.

PART 2 · Agents-as-Tools

Agents-as-Tools 활용 사례

Supervisor 위임 패턴이 빛나는 시나리오

리서치 파이프라인

검색 → 요약 → 보고서

코드 리뷰 봇

분석 → 보안 검사 → 피드백

고객 지원 라우터

분류 → 전문가 배정 → 응답

takeaway

세 사례의 공통 구조는 단일 책임 에이전트의 조합입니다 — 각자 독립된 system_prompt와 도구를 갖습니다.

복잡한 문제는 여러 에이전트가 나눠 해결합니다.

Agents-as-Tools · Swarm · Graph · Workflow — 협업의 4가지 패턴