정의 하나에는 세 필드가 필요해
도구 정의는 snake_case 식별자인 name, 무엇을 언제 하는지 적는 description, 인자 모양을 정하는 input_schema로 이뤄져. 모델은 이름만 보고 결정하지 않아. 설명으로 도구의 쓰임을 고르고 스키마로 호출 인자를 구성하므로 셋 모두 계약의 일부야.
설명은 작은 선택 프롬프트야
“Get the weather”처럼 기능 이름만 반복하면 언제 호출해야 하는지 알 수 없어. 현재 날씨와 24시간 예보를 돌려주며 온도·비·옷차림 질문에 쓰라고 적으면 선택 기준이 생겨. 설명에는 결과 범위와 사용 조건을 넣되 내부 경로나 비밀은 넣지 마.
스키마에는 실제 제약을 써
필수값은 required, 고정된 후보는 enum, 자료형은 type으로 드러내. 스키마가 구체적일수록 유효한 입력이 나올 가능성이 커져. 다만 정의 전체가 매 요청의 입력 토큰이 되므로 쓰지 않는 세부까지 과하게 늘리지는 마.
원칙: 이름과 설명은 도구 선택을, JSON Schema는 입력 제약을 맡아. 둘 다 프롬프트처럼 다듬어.