Tool Interface Design
이 문서는 CCAF Domain 2를 이해하기 위한 개념 설명용 노트다.
여기서는 개별 도구 하나가 모델에게 어떻게 보이는지를 다룬다. 즉 tool interface를 단순한 함수 시그니처가 아니라, 모델이 도구를 이해하는 표면(surface) 으로 이해하는 데 초점을 둔다.
Tool interface란 무엇인가
Agent Loop에서 에이전트에게 도구는 내부 구현보다 먼저 이름, 설명, 입력 스키마로 보인다.
즉 모델은 보통 도구의 소스코드를 읽고 판단하는 것이 아니라, 런타임이 노출한 인터페이스를 보고:
- 이 도구가 무엇을 하는지
- 어떤 입력이 필요한지
- 어떤 결과를 기대해야 하는지
- 어떤 상황에서 적절한지
를 추론한다.
즉 tool interface는 단순한 개발자 문서가 아니라,
모델이 도구를 이해하는 방식 자체를 형성하는 실행 인터페이스
다.
왜 interface design이 중요한가
도구 구현이 아무리 좋아도, 인터페이스가 모호하면 모델은 도구를 안정적으로 이해할 수 없다.
예를 들어:
- 이름이 지나치게 추상적이거나
- 설명이 짧고 뭉뚱그려져 있거나
- 입력 필드 이름이 애매하거나
- 필수 조건이 설명에 빠져 있으면
모델은:
- 도구의 용도를 넓거나 잘못되게 해석하거나
- 입력을 부정확하게 채우거나
- 가능한 호출과 적절한 호출을 구분하지 못할 수 있다
즉 도구 실패는 구현 버그 때문만이 아니라,
모델이 읽는 인터페이스 자체가 애매해서 생기는 이해 실패
일 수도 있다.
모델은 무엇을 보고 도구를 이해하는가
개별 도구 관점에서 핵심은 세 가지다.
1. 이름
도구 이름은 가장 압축된 의미 신호다.
이름만 보고도 대략적인 기능과 대상이 드러나야 한다.
예:
get_customer_profilelookup_order_statusprocess_refund
반대로:
handle_datarun_taskdo_action
같은 이름은 지나치게 추상적이라 도구 이해를 흐린다.
2. 설명(description)
설명은 “무엇을 하는가”를 넘어서, 어떤 입력을 기대하며 어떤 맥락에서 쓰이는가를 알려줘야 한다.
즉 좋은 설명은:
- 기능
- 입력 기대값
- 사용 맥락
- 제한 조건
을 함께 드러낸다.
3. 입력 스키마(schema)
입력 필드의 이름과 구조는 모델이 실제 호출을 조립하는 데 직접 영향을 준다. Schema Design for Reliability에서 더 깊이 다룬다.
즉 schema는 단순 validation 장치가 아니라,
모델의 호출 조립 행동을 유도하는 구조
다.
좋은 도구 설명은 어떤 설명인가
좋은 설명은 짧기만 한 설명이 아니다.
핵심은 도구의 사용 맥락이 드러나는 설명이다.
예를 들어 좋지 않은 설명:
“고객 정보를 조회합니다.”
이 설명은 기능은 말하지만,
- 어떤 고객 식별자를 기대하는지
- 어떤 상황에서 쓰는지
- 무엇을 돌려주는지
가 불분명하다.
더 좋은 설명은 예를 들면:
“검증된 customer ID를 사용해 고객 프로필과 계정 상태를 조회합니다. 환불, 계정 검증, 주문 이슈 조사 전에 사용합니다.”
이 설명은:
- 무엇을 하는지
- 어떤 입력을 기대하는지
- 어떤 업무 맥락에서 쓰는지
를 함께 알려준다.
즉 좋은 description은 기능 요약이 아니라,
도구를 올바르게 이해하게 만드는 사용 가이드
에 가깝다.
입력 스키마는 왜 중요한가
모델은 입력 필드를 채울 때 필드 이름과 구조에 강하게 의존한다.
예를 들어:
idcustomercustomerIdverifiedCustomerId
는 비슷해 보여도 의미가 다르다.
특히 위험한 경우는:
- 너무 짧거나
- 지나치게 일반적이거나
- 서로 다른 개념을 한 필드에 섞어 두는 것
이다.
좋은 필드 설계의 특징은:
- 의미가 분명하고
- 서로 다른 개념이 분리되어 있고
- required field가 선명하고
- 형식 기대값이 드러난다는 점이다.
즉 schema 품질은 validation만이 아니라, 모델의 오해 가능성을 줄이는 설계다.
추상적 설명보다 구체적 affordance가 낫다
도구 설명은 “이 도구는 강력합니다” 같은 추상적 문장보다,
이 도구가 어떤 상황에서 무엇을 해주는지를 구체적으로 드러내는 편이 좋다.
예:
- “환불 전에 고객 상태를 확인할 때 사용”
- “외부 공개 웹 검색 전용”
- “내부 문서 저장소에서 문서 제목과 본문을 검색”
- “파일 내용을 수정하지 않고 읽기만 함”
이런 affordance가 선명할수록, 모델은 도구의 성격을 더 안정적으로 이해한다.
즉 좋은 interface design은 멋진 문장을 쓰는 것이 아니라,
모델이 오해하기 어려운 이해 표면을 만드는 일
이다.
흔한 오해
“설명은 짧을수록 좋다”
아니다. 너무 짧으면 사용 맥락과 입력 기대값이 사라진다.
“이름만 명확하면 설명은 대충 써도 된다”
그렇지 않다. 실제 이해 품질은 이름 + 설명 + schema가 함께 결정한다.
“스키마는 validation만 통과하면 된다”
아니다. 스키마는 모델이 호출을 조립하는 인터페이스이기도 하다.
한 문장 요약
Tool interface design은 도구 구현을 설명하는 작업이 아니라, 모델이 개별 도구를 올바르게 이해하도록 만드는 설계 작업이다.
관련 개념
- Tool Selection & Disambiguation — 도구 집합 전체의 경계 설계
- Schema Design for Reliability — 스키마 설계의 신뢰성
- MCP Integration — 표준화된 도구 인터페이스 프로토콜
- Structured Outputs & Error Design — 도구 결과의 구조화