Anthropic \"Writing effective tools for agents — with agents\" 가이드
TL;DR
Anthropic은 Model Context Protocol(MCP)을 통해 LLM 에이전트용 도구를 만들고 개선하는 방법을 보여주는 단계별 가이드를 발표했습니다. 이 가이드는 Claude Code를 사용하여 도구 구현을 프로토타이핑하고, 평가하며, 자동으로 개선하는 방법을 다룹니다. 이 가이드는 다섯 가지 실용적인 원칙(도구 선택, 네임스페이싱, 의미 있는 컨텍스트 반환, 토큰 효율적인 응답, 프롬프트 엔지니어링 사양)을 정리했으며, 이는 에이전트 성능을 지속적으로 향상시킵니다.
가이드 개요
이 가이드는 개발자가 에이전트와 협력하여 에이전트 AI 시스템의 효과적인 표면적을 확장하는 고품질 도구를 구축하는 방법을 설명합니다. 프로토타입 구축, 종합 평가, 에이전트 지원 개선의 세 가지 작업 흐름 단계를 다루며, Anthropic의 내부 실험에서 도출된 간결한 설계 원칙을 제시합니다.
1. 프로토타입 구축
주요 작업
- 로컬 MCP 서버 또는 Desktop 확장(DXT)을 설정하고 Claude Code(
claude mcp add <name> <command> …) 또는 Claude Desktop 앱의 설정 → 개발자/확장 메뉴를 통해 연결합니다. - 도구가 의존하는 라이브러리, API 또는 MCP SDK에 대한 LLM 친화적인 문서(예:
llms.txt파일)를 제공합니다. - 수동으로 테스트하고 사용자 피드백을 수집하여 공식 평가 전에 거친 부분을 발견합니다.
중요성
실습 기반 프로토타이핑은 에이전트가 어떤 도구 인터페이스를 사용하기 편리하게 느끼는지 보여주며, 개발자가 전체 평가에 착수하기 전에 반복할 수 있게 합니다.
2. 체계적인 평가 실행
현실적인 작업 생성
- Claude Code를 사용하여 실제 시나리오(예: 다단계 회의 일정 조정, 로그 분석, 유지 제안 생성)에 기반한 수십 개의 프롬프트-응답 쌍을 생성합니다.
- 지나치게 단순한 프롬프트는 피하세요. 강력한 작업은 여러 도구 호출과 현실적인 데이터 소스를 요구해야 합니다.
평가 실행
- 각 작업에 대해 LLM API 호출과 도구 호출을 번갈아 수행하는 에이전트 루프(
while루프)를 구현합니다. - 시스템 프롬프트에 추론 및 피드백 블록을 포함하여 에이전트가 도구 호출 전에 체인 오브 thought(CoT)를 생성하도록 합니다.
- Claude에서 인터리브드 사고를 활성화하여 내부 추론을 자동으로 표시합니다.
수집할 지표
- 검증 가능한 실제 데이터에 대한 최상위 정확도.
- 런타임, 도구 호출 수, 총 토큰 소비량, 오류율.
- 중복 호출이나 페이지네이션 필요성을 식별하기 위한 도구 호출 패턴 분포.
에이전트와 결과 분석
- 에이전트의 CoT 및 피드백을 검토하여 모호한 설명, 비효율적인 구현 또는 혼란스러운 스키마를 찾습니다.
- 원시 트랜스크립트(도구 호출 및 응답)를 검토하여 숨겨진 실패 모드를 찾습니다.
- 관찰된 오류 패턴(예: 잘못된 매개변수 값)을 사용하여 도구 사양을 개선합니다.
3. 에이전트와 협력하여 개선
- 평가 트랜스크립트를 연결하여 Claude Code에 제공합니다. Claude는 리팩토링을 제안하고, 불일치를 해결하며, 업데이트된 도구 정의를 생성할 수 있습니다.
- 보류된 테스트 세트에서 성능이 안정될 때까지 수정된 도구에 대해 평가를 반복적으로 다시 실행합니다.
- Anthropic은 Claude가 생성한 개선 사항이 수동으로 작성된 "전문가" 구현을 종종 능가한다는 것을 발견했습니다.
4. 효과적인 도구 작성 원칙
4.1 올바른 도구 선택
- 기존 API의 얇은 래퍼보다 영향력이 크고 작업별 특화된 도구를 우선시합니다.
- 에이전트가 필요한 데이터만 반환하는 도구를 설계합니다(예:
list_contacts대신search_contacts). - 가능하면 관련 작업을 단일 도구로 통합합니다(예:
schedule_event는 가용성을 찾고 이벤트를 생성).
4.2 도구 네임스페이스를 명확히 지정
- 일관된 접두사 또는 접미사(예:
asana_search,jira_search)를 사용하여 기능 도메인을 구분합니다. - 적절한 네임스페이싱은 로드되는 도구 설명 수를 줄이고, 컨텍스트 부하를 낮추며, 우발적인 오용을 최소화합니다.
4.3 의미 있는 컨텍스트 반환
- 불투명한 식별자(
uuid) 대신 신호가 강한 필드(name,image_url,file_type)를 출력합니다. - 기술적 ID가 필요한 경우 사람이 읽을 수 있는 별칭 또는 간단한 숫자 인덱스를 제공합니다.
response_format열거형(예:concisevs.detailed)을 제공하여 에이전트가 필요에 따라 토큰을 적게 사용하거나 더 풍부한 페이로드를 요청할 수 있게 합니다.
4.4 토큰 효율성 최적화
- 페이지네이션, 범위 선택, 필터링 또는 합리적인 기본값으로 잘림을 구현합니다(Claude Code는 도구 응답을 25k 토큰으로 제한).
- 오류 메시지를 난해하게 만들지 말고 실행 가능하게 작성하여 에이전트가 수정된 입력으로 안내되도록 합니다.
- 예: 잘린 응답은 상세한 응답에 비해 약 ⅔의 토큰을 절약하면서도 후속 작업을 가능하게 합니다.
4.5 도구 설명 프롬프트 엔지니어링
- 새 직원에게 브리핑하듯 설명을 작성합니다: 명시적 매개변수 이름, 명확한 입력/출력 계약, 구체적인 예시.
- 모호한 이름(
user) 대신 정확한 이름(user_id)을 사용합니다. - 작은 문구 변경도 큰 성능 향상을 가져올 수 있습니다. Claude Sonnet 3.5는 정밀한 설명 개선 후 SWE-bench에서 최첨단 결과를 달성했습니다.
5. 향후 전망
Anthropic은 에이전트용 도구를 구축하려면 결정론적 소프트웨어 계약에서 비결정론적, 에이전트 중심 설계로 전환해야 한다고 강조합니다. 프로토타입 → 평가 → 에이전트 주도 개선을 반복함으로써 개발자는 LLM 에이전트에게 "사용하기 편리한" 도구가 무엇인지 체계적으로 발견할 수 있습니다. MCP 프로토콜과 기본 LLM이 진화함에 따라, 이 평가 중심 방법론은 점점 더 강력해지는 에이전트와 도구 생태계를 정렬하는 데 필수적으로 유지될 것입니다.
참고 자료 및 리소스
- Model Context Protocol (MCP): https://modelcontextprotocol.io/docs/getting-started/intro
- Claude Code: https://www.anthropic.com/claude-code
- 도구 평가 쿡북: https://platform.claude.com/cookbook/tool-evaluation-tool-evaluation
- Anthropic 개발자 가이드(도구 모범 사례): https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use#best-practices-for-tool-definitions
- MCP 서버 도구 주석 사양: https://modelcontextprotocol.io/specification/2025-06-18/server/tools