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
태스크 수신
Supervisor가 사용자 요청을 분석
-
2
태스크 분해
하위 작업으로 분할 후 적합한 에이전트 선택
-
3
Tool 호출
하위 에이전트를 tool()로 실행
-
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가지 패턴