본문 바로가기

인공지능

에이전트를 위한 효과적인 툴 설계: LLM 시대의 새로운 개발 패러다임

728x90
반응형
728x170

AI 에이전트가 툴을 더 똑똑하게 쓰게 만드는 법

AI 기술이 빠르게 발전하면서, 이제는 단순히 답을 생성하는 수준을 넘어 **‘에이전트(Agent)’**라는 형태로 다양한 도구를 활용해 실제 업무를 수행하는 시대가 되었다. 그러나 아무리 뛰어난 LLM(Large Language Model)을 사용하더라도, 그 모델이 사용하는 툴(tool)이 제대로 설계되지 않으면 성능은 쉽게 한계에 부딪힌다.

에이전트는 사람처럼 추론하고 선택하지만, 결국 자신이 사용할 수 있는 도구의 품질과 구조에 따라 효율이 달라진다. 이 글에서는 Anthropic의 Claude 팀이 연구한 내용을 기반으로, 에이전트 시대에 툴을 어떻게 설계하고 평가하며 개선할 수 있는지를 구체적으로 살펴본다.


1. 에이전트를 위한 툴이란 무엇인가?

결정론적 시스템 vs 비결정론적 시스템

기존 소프트웨어 개발은 **결정론적 시스템(deterministic system)**을 다룬다. 동일한 입력에는 항상 동일한 결과가 출력된다. 예를 들어 getWeather("Seoul")이라는 함수는 언제 호출하든 동일한 방식으로 날씨 정보를 반환한다.

하지만 **LLM 기반 에이전트는 비결정론적(non-deterministic)**이다. 같은 질문이라도 그때의 맥락이나 내부 추론에 따라 다른 행동을 보인다.
예를 들어 사용자가 “오늘 우산을 가져가야 할까?”라고 물으면, 에이전트는 단순히 날씨 API를 호출할 수도 있고, 사용자 위치를 먼저 확인할 수도 있으며, 심지어 잘못된 가정을 할 수도 있다.

이 차이 때문에, 에이전트용 툴은 기존의 API처럼 단순히 함수를 노출하는 수준을 넘어, **‘에이전트가 직관적으로 이해하고 사용할 수 있도록 설계된 소프트웨어’**로 다시 정의해야 한다.


2. 툴 설계의 첫 단계: 프로토타입 구축과 테스트

에이전트가 툴을 잘 사용하도록 만들기 위해서는 직접 실험하고 평가하는 과정이 필수적이다.
먼저 간단한 프로토타입을 구축해보고, Claude Code 같은 환경에서 실제로 툴을 호출해보며 사용성을 점검해야 한다.

MCP 서버 기반 테스트

MCP(Model Context Protocol)는 에이전트가 여러 개의 툴을 동시에 사용할 수 있게 하는 프로토콜이다.
로컬 환경에서 MCP 서버를 띄우고 Claude Code나 데스크톱 앱과 연결하면, 실제 사용 상황을 재현할 수 있다.

명령 예시:

claude mcp add <name> <command> [args...]

테스트를 통해 에이전트가 툴을 어떻게 호출하고, 어떤 부분에서 혼란을 겪는지를 관찰하는 것이 핵심이다.
초기 단계에서는 완벽한 툴보다 ‘직관적인 인터페이스’를 가진 프로토타입을 만드는 것이 더 중요하다.


3. 툴 성능을 체계적으로 평가하는 방법

평가 데이터셋 설계

효율적인 툴을 설계하려면, 에이전트가 실제로 툴을 얼마나 잘 사용하는지를 정량적으로 측정해야 한다.
이를 위해 **실제 사용 시나리오 기반의 평가 작업(evaluation tasks)**을 만들어야 한다.

예를 들어 다음과 같은 테스트가 가능하다.

  • “다음 주 Jane과 Acme 프로젝트 회의를 잡고, 지난 회의록을 첨부해 회의실을 예약하라.”
  • “고객 ID 9182가 세 번 결제된 이슈를 분석하고, 동일한 문제가 발생한 다른 고객이 있는지 찾아라.”

이런 테스트는 단순한 기능 확인을 넘어서, 에이전트가 여러 툴을 연속적으로 활용할 수 있는지를 검증한다.

평가 수행

각 테스트에는 기대되는 출력(ground truth)을 정의하고, 에이전트의 실제 출력과 비교한다.
정확도뿐 아니라, 다음과 같은 추가 지표를 함께 측정해야 한다.

  • 총 실행 시간
  • 툴 호출 횟수
  • 토큰 사용량
  • 오류 발생 빈도

이러한 메트릭은 툴의 효율성뿐 아니라 에이전트의 행동 패턴을 파악하는 데에도 도움을 준다.


4. 에이전트와 함께 툴을 개선하기

흥미로운 점은, 툴을 개선하는 과정에서 에이전트 자체를 파트너로 활용할 수 있다는 것이다.
에이전트가 남긴 평가 로그와 추론 과정을 Claude Code에 입력하면, Claude가 직접 툴의 문제점을 분석하고 개선 방향을 제시할 수 있다.

이런 협업형 개발 프로세스는 사람이 직접 코드를 수정하는 전통적인 방식보다 훨씬 빠르고 정확하다.
Anthropic 내부에서는 이 과정을 반복적으로 수행하면서 사람이 작성한 툴보다 Claude가 최적화한 툴이 더 높은 정확도를 보인 사례도 있었다.


5. 좋은 툴을 위한 핵심 설계 원칙

(1) 올바른 툴을 선택하라

툴의 개수가 많다고 성능이 좋아지지 않는다.
중복되거나 불필요한 기능을 가진 툴은 에이전트를 혼란스럽게 만든다.
대신 핵심 워크플로우에 집중한 소수의 툴이 훨씬 효과적이다.

예를 들어 다음과 같은 접근이 바람직하다.

  • list_contacts 대신 search_contacts
  • read_logs 대신 search_logs
  • list_users 대신 get_user_context

이처럼 목표 지향적이며 문맥 친화적인 툴이 에이전트에게 더 적합하다.


(2) 명확한 네임스페이스로 구분하라

에이전트는 수십, 수백 개의 툴을 사용할 수 있다.
이때 기능이 겹치거나 이름이 모호한 툴은 잘못 호출될 위험이 있다.
따라서 서비스나 리소스 단위로 네임스페이스를 명확히 구분해야 한다.

예시:

  • asana_search, jira_search
  • asana_projects_search, asana_users_search

명확한 이름은 에이전트가 올바른 툴을 선택하도록 돕는다.


(3) 의미 있는 컨텍스트를 반환하라

툴의 응답에는 불필요한 기술적 정보(UUID, MIME 타입 등) 대신,
**의미 있는 자연어 기반 필드(name, file_type, image_url 등)**을 포함하는 것이 좋다.

또한, 필요에 따라 응답 형식을 제어할 수 있도록
ResponseFormat 같은 파라미터를 제공하면 유연성을 높일 수 있다.

enum ResponseFormat {
   DETAILED = "detailed",
   CONCISE = "concise"
}

에이전트는 상황에 따라 간결한 응답을 원하거나, 세부 정보를 포함한 응답을 원할 수 있다.
이런 설계는 토큰 효율을 높이면서도 사용성을 개선한다.


(4) 토큰 효율성을 고려하라

에이전트는 한 번에 처리할 수 있는 문맥(Context) 용량이 제한되어 있다.
따라서 툴 응답은 필요한 정보만 간결하게 반환해야 한다.

이를 위해 다음과 같은 방식을 추천한다.

  • 페이지네이션(Pagination)
  • 필터링(Filter)
  • 응답 길이 제한(Truncation)

또한 오류 발생 시 단순한 에러 코드 대신 개선 방향을 안내하는 메시지를 포함하면,
에이전트가 스스로 입력 형식을 교정할 수 있다.


(5) 툴 설명(Prompt)을 정교하게 설계하라

툴의 설명은 곧 에이전트의 ‘매뉴얼’이다.
입출력 파라미터를 명확히 정의하고, **모호한 변수명(user → user_id)**을 피해야 한다.
작은 수정이라도 에이전트의 툴 사용 정확도를 극적으로 높일 수 있다.

Anthropic은 Claude의 툴 설명을 세밀히 조정한 뒤, SWE-bench Verified 평가에서 오류율을 크게 낮추며 성능을 개선했다.
이처럼 프롬프트 엔지니어링은 툴 품질 개선의 핵심 도구다.


728x90

에이전트 시대의 툴 설계 철학

에이전트를 위한 툴 설계는 단순한 API 개발이 아니다.
그것은 비결정적 시스템과 상호작용하는 새로운 소프트웨어 개발 패러다임이다.

효과적인 툴은 다음의 특징을 갖는다.

  • 명확한 목적과 경계를 가진다.
  • 에이전트의 문맥을 낭비하지 않는다.
  • 직관적이고 자연어 친화적이다.
  • 평가와 피드백을 통해 지속적으로 개선된다.

결국 좋은 툴은 사람이 아니라 에이전트가 ‘잘 이해하고 쓸 수 있는’ 툴이다.
AI가 발전할수록, 개발자의 역할은 기능을 구현하는 것을 넘어 **‘에이전트가 세상을 이해할 수 있도록 돕는 구조를 만드는 것’**으로 변화하고 있다.


  • LLM 기반 에이전트는 기존 소프트웨어와 달리 비결정적이므로, 툴 설계 방식도 달라져야 한다.
  • 명확한 네임스페이스, 간결한 응답, 효율적인 컨텍스트 관리가 핵심이다.
  • 평가 루프를 구축해 에이전트와 함께 툴을 개선하는 과정이 중요하다.
  • 프롬프트 엔지니어링은 툴 성능을 극대화하는 결정적 요인이다.

이제 AI 개발의 초점은 단순한 모델 성능이 아니라, 그 모델이 사용하는 툴의 품질로 옮겨가고 있다.
즉, “좋은 에이전트는 결국 좋은 툴 위에서 만들어진다.”

https://www.anthropic.com/engineering/writing-tools-for-agents

 

Writing effective tools for AI agents—using AI agents

Writing effective tools for AI agents—using AI agents

www.anthropic.com

728x90
반응형
그리드형