에이전트 기능을 만들 때 모든 것을 도구로 넣으면 컨텍스트와 tool selection이 복잡해지고, 모든 것을 서브에이전트로 나누면 비용·지연·디버깅 비용이 커진다. 기준은 “실행(execution)인가, 독립적 추론(reasoning)인가”다.
도구와 서브에이전트의 차이
| 항목 | 도구 | 서브에이전트 |
|---|---|---|
| 실행 주체 | 코드, API, DB 쿼리 | 별도 LLM 루프 |
| 컨텍스트 | 오케스트레이터와 공유 | 별도 컨텍스트 |
| 비용/지연 | 낮음 | 추가 LLM 호출로 높음 |
| 적합한 작업 | 계산, 조회, 변환, 파일 작업 | 조사, 분석, 작성, 독립적 다단계 작업 |
| 관찰성 | 호출 인자와 반환값이 명확 | 중간 추론은 요약되어 돌아옴 |
도구는 결정론적이어야 한다. 정규식 검사, DB 조회, API 호출, 파일 읽기, 단위 변환은 Python 함수처럼 타입이 있는 입출력으로 만들 수 있다. 이런 작업에 서브에이전트를 붙이면 불필요한 추론 비용만 늘어난다.
서브에이전트는 자체 계획이 필요한 경우에 쓴다. 예를 들어 “이 시장의 경쟁사를 조사하고 요약하라”는 검색어 선택, 결과 읽기, 후속 검색, 종합이 필요하다. 이 중간 작업을 메인 에이전트 컨텍스트에 모두 넣으면 오히려 방해가 된다.
세 가지 질문
- 이 작업은 주로 실행인가, 추론인가?
- 중간 작업 내용이 오케스트레이터에게 계속 필요한가?
- 독립적으로 실행하거나 병렬화할 수 있는가?
세 질문에 대한 답이 “정해진 입력을 처리하는 실행”, “중간 내용이 작고 바로 필요”, “메인 흐름 일부”라면 도구가 맞다. 답이 “탐색·분석·종합”, “중간 내용이 크고 노이즈가 됨”, “독립 작업으로 위임 가능”이라면 서브에이전트가 맞다.
과설계를 피하는 규칙
- 함수로 명확히 쓸 수 있으면 먼저 도구로 만든다.
- 서브에이전트는 자체 목표, 자체 도구, 자체 종료 조건이 있을 때만 만든다.
- 서브에이전트 결과는 원문 로그가 아니라 검토 가능한 구조화 요약으로 받는다.
- 병렬 처리 목적이라면 각 서브에이전트 입력이 서로 독립적인지 확인한다.
- 보안·비용·권한은 서브에이전트별로 더 좁게 제한한다.
관련 문서
- ai-agent-tips-tool-design — 실패를 줄이는 도구 설계 원칙
- ai-agent-tips-tool-selection — 도구가 많아질 때 정확도를 지키는 선택 구조
- ms-agent-framework — 오케스트레이션 패턴을 SDK 수준에서 제공하는 프레임워크
참고 자료
- Tools vs. Subagents: Building Effective AI Agents Without Over-Engineering — MachineLearningMastery.com (2026-07-07)