Intelligence Architect's Log

에이전트에 도구 30개 달아줬더니 멍청해지는 이유? 툴 과다 주입 해결법

'에이전트 도구가 너무 많다면? 동적 툴 필터링으로 툴 환각 끝내기' 문구가 강조된 카드뉴스 배경에서 20대 한국 여성 지식 분석가 몬이쌤이 에이전트 툴 필터링 아키텍처가 그려진 태블릿을 들고 노하우를 안내하는 대표 썸네일 이미지입니다.

"에이전트를 더 똑똑하게 만들려고 웹 검색, 날씨, 계산기, DB 조회, 이메일 전송까지 도구(Tool)를 20개 넘게 연결해 줬더니, 정작 단순 계산을 시켰을 때 이메일 발송 도구를 만지작거리며 엉뚱한 에러를 내뿜더라고요."

AI 에이전트 시스템을 구축하다 보면 누구나 한 번쯤 "우리 에이전트에게 만능 손발을 달아주자!"라는 생각으로 온갖 API와 도구(Function Calling)들을 한가득 연결해 주는 시기를 겪게 됩니다. 하지만 역설적이게도 에이전트에게 도구가 너무 많아지면, 에이전트는 무엇을 써야 할지 몰라 혼란에 빠지고 만듭니다. 오늘은 제가 실전 서버를 가동하며 겪었던 '도구 과다 주입(Tool Overload) 잔혹사'와 이를 깔끔하게 해결한 '동적 도구 필터링' 경험담을 나눠보려고 합니다.

1. "도구가 30개인데 왜 일을 못하니?" - 툴 환각의 시작

어느 날 저는 사용자의 모든 요청을 한 번에 처리해 주는 만능 업무 에이전트를 기획했습니다. 구글 검색, DB 조회, 날씨 확인, 계산기, PDF 정제, Slack 메시지 전송 등 총 28개의 도구 정의(JSON Schema)를 시스템 프롬프트에 통째로 집어넣었죠.

그런데 실전 테스트를 돌리자마자 황당한 일들이 터지기 시작했습니다. "오늘 날씨 어때?"라는 간단한 질문에 날씨 API 대신 뜬금없이 데이터베이스 쿼리 도구를 호출하질 않나, 숫자를 더해 달라고 했더니 이메일 전송 도구를 집어 들고 인수를 잘못 넣어 에러를 뿜어냈습니다. 대형 언어 모델(LLM)이 수많은 도구 설명서에 묻혀 '도구 선택의 혼란(Function Call Ambiguity)'에 빠져버린 것이었습니다. 도구 명세서가 프롬프트의 절반 이상을 차지하면서 토큰 비용은 비용대로 폭주하고, 답변 정밀도는 바닥을 쳤지요.

2. 시행착오: 프롬프트에 잔소리를 적는 것은 답이 아니다

처음에는 모델이 도구를 잘못 선택할 때마다 프롬프트에 잔소리를 덧붙였습니다. "계산할 때는 절대로 이메일 도구를 쓰지 마!", "날씨 물어볼 때는 날씨 API만 써!"라고 엄격한 지침을 적어둔 것이죠. 하지만 도구가 20개를 넘어가니 이런 지침들은 아무런 소용이 없었습니다. 지침이 늘어날수록 LLM은 핵심 맥락을 놓쳤고, 오히려 환각(Hallucination) 현상만 심해졌습니다.

문제의 본질은 모델의 지능 부족이 아니라 '인간의 욕심으로 인한 정보 과부하'였습니다. 사람도 책상 위에 연구 도구가 30개 펼쳐져 있으면 멍해지듯이, AI 역시 현재 대화 맥락에 꼭 필요한 2~3개의 도구만 깔끔하게 손에 쥐여주어야 정확하게 움직인다는 깨달음을 얻었습니다.

💡 몬이쌤의 아키텍처 인사이트: 에이전트의 성능을 높이는 비밀은 '더 많은 도구를 보여주는 것'이 아니라, '불필요한 도구를 얼마나 정교하게 숨겨주느냐'에 있습니다. 메인 에이전트가 고민할 거리를 줄여주는 것이 지능형 시스템 설계의 핵심입니다.

3. 해결책: 3단계 동적 도구 필터링(Dynamic Tool Filtering)

이 고질적인 툴 오남용 문제를 해결하기 위해 제가 구축한 시스템이 바로 '라우터 노드 기반 동적 도구 필터링'입니다. 전체 워크플로우를 다음 3단계로 분리했습니다.

  • 1단계 [의도 분류 라우터(Intent Router) 세우기]: 사용자의 질문이 들어오면 도구를 전혀 주지 않은 가벼운 초경량 모델이 질문의 의도를 분석합니다. (예: "이 질문은 '계산' 및 '날씨' 관련 질문이다.")
  • 2단계 [동적 툴 주입(Dynamic Tool Injection)]: 분류된 의도에 맞는 필수 도구 2~3개만 선별하여 메인 실행 에이전트의 프롬프트에 실시간으로 주입합니다. 나머지 25개 도구는 프롬프트에서 완전히 삭제해 버립니다.
  • 3단계 [도구 파라미터 샌드박스 검증]: 에이전트가 최종 선별된 도구를 호출할 때, 입력 인수(Arguments)가 규격에 맞는지 1차 검증하고 실행합니다.

4. 결과: 속도는 3배, 툴 선택 오류는 Zero!

동적 도구 필터링 파이프라인을 도입하자마자 놀라운 변화가 일어났습니다. 프롬프트 크기가 70% 이상 줄어들면서 에이전트의 첫 응답 속도가 3배 이상 빨라졌고, 엉뚱한 도구를 집어 들어 에러를 내던 현상이 100% 완벽하게 사라졌습니다.

교육 현장에서 아이들에게 한 번에 수십 가지 과제를 내주면 집중력이 무너지지만, 딱 지금 풀어야 할 문제집 한 장만 짚어주면 놀라운 집중력을 발휘하는 모습과 어쩜 이렇게 똑같은지 모릅니다. 기술도 결국 인간과 아이를 대하는 마음으로 섬세하게 길을 터주어야 비로소 제 성능을 발휘하더군요.

여러분도 운영 중인 AI 에이전트가 자꾸 엉뚱한 짓을 하거나 속도가 느리다면, 지금 에이전트의 손에 너무 많은 도구가 쥐여 있는 것은 아닌지 점검해 보세요. 불필요한 도구를 칼같이 쳐내는 순간, 비로소 살아 움직이는 압도적인 에이전트를 마주하게 되실 겁니다. 몬이쌤이 항상 여러분의 멋진 개발 여정을 마음 깊이 응원하겠습니다!

같이 보면 좋은 글

PREV REPORT 이전 리포트 읽기