왜 에이전트가 턴마다 모든 툴 스키마를 보내야 하죠??
Why are we sending every tool schema on every agent turn??
핵심 요약
에이전트가 매번 모든 툴 스키마를 전송해 발생하는 비용과 지연 문제를 해결하기 위한 효율적인 툴 라우팅 및 관리 전략을 논의합니다.
- 비효율적 스키마 전송 — 턴마다 모든 툴 스키마를 보내는 방식이 비용과 지연 시간을 증가시킴
- 동적 라우팅의 딜레마 — 툴을 선별하면 recall이 떨어지고, 모두 포함하면 토큰 비용과 캐시 효율이 저하됨
- 모듈형 스킬 설계 — 전체 스키마 대신 경량화된 스킬 설명을 사용해 필요할 때만 툴을 로드하는 방식이 권장됨
- 성공 지표 재정의 — 토큰당 비용보다 작업 완료율과 재시도 비용을 포함한 전체 비용을 측정해야 함
우리 에이전트는 라우터가 진작에 38개는 걸러낼 수 있는 상황인데도, 모델이 토큰 하나 보기도 전에 매번 40개의 툴 스키마를 다 들이밀고 있음. 스키마마다 덩치 큰 JSON 설명에, 중복되는 규칙, 예제, 파라미터 주석까지 달려있는데, 모델이 뭐 하나 제대로 결정하기도 전에 이 텍스트 뭉치들 때문에 돈만 줄줄 새는 중임. 기능은 나오기도 전에 청구서부터 날아왔는데, 뭐 이런 식으로 도입률을 측정하는 방법도 있긴 하겠네.
지금 동적 툴 라우팅이랑 스키마 가지치기 테스트 중인데, 이게 트레이드오프가 진짜 골치 아픔. 게이트를 너무 좁게 잡으면 리콜(recall)이 떨어져서 모델이 정작 필요한 툴을 구경도 못 하고, 너무 넓게 잡으면 입력 토큰만 늘어나서 프리픽스 캐싱(prefix caching) 효율은 떨어지고 첫 토큰 나오는 시간(time to first token)만 뒤로 밀림. 그리고 난 호출당 비용도 안 믿음. 싼 호출이라도 재시도 두 번 하면 결국 비싼 작업이 되는 거니까. (예산 검토하는 놈들은 작업 완료율 물어보기 전까진 평균값만 따지면서 좋아 죽지.)
지금 이 판 자체가 완전 무법지대임. 다들 매번 프롬프트에 어떤 툴을 넣을지 어떻게 결정하고 있고, 라우터가 진짜 도움 된다는 걸 뭘로 증명하고 있음?

