등록부를 타입으로 묶어
각 도구의 입력을 Zod 스키마나 TypeScript 인터페이스로 정의하고, 그 타입이 처리기 인자까지 흐르게 만들 수 있어. 이름과 임의 객체만 넘기는 등록부보다 컴파일러가 더 많은 불일치를 잡아 주지. Python에서 실행 중에 드러날 오류 상당수를 빌드할 때 막는 셈이야.
프로토콜은 Python과 같아
도우미 응답의 콘텐츠에는 tool_use 블록이 들어가고, 다음 사용자 턴의 tool_result가 같은 tool_use_id를 돌려줘. 모델이 끝낼 때까지 왕복하는 구조는 같아. TypeScript의 장점은 잘못된 메시지 조립을 타입 단계에서 거부하는 데 있어.
모델 입력도 실행 전에 검증해
도구 정의에는 JSON Schema인 input_schema가 있지만, 모델이 보낸 인자를 곧바로 믿으면 안 돼. 처리기를 부르기 전에 Zod로 해석하고 검증해. 문자열인지 숫자인지 애매한 값을 실제 런타임 계약으로 바꾸는 경계야.
원칙: 검증하지 않은 도구 입력은 모델의 의도를 추측하는 코드야. 스키마를 실행 경계까지 연결해.