tinystruct, LLM을 타입 안전 자연어 진입점으로 감싸는 SDK 공개

V2EX19일 전조회 4

자바 프레임워크 tinystruct에 자연어 입력을 타입 안전하게 연결하는 계층이 추가됐다. 개발자 moverinfo가 V2EX에 소개한 tinystruct-typesafe-sdk가 그것으로, 출발점은 "업무 코드가 이미 확정적이고 타입이 엄격하다면 왜 LLM에게 코드를 다시 짜게 하는가"라는 문제 제기다. 모델이 코드를 생성하거나 워크플로를 동적으로 재설계하는 대신, 사용자 의도를 이해해 이미 존재하는 기능에 매칭하고 필요한 강타입 파라미터만 뽑아내는 역할로 한정한다.

구체적으로 tinystruct에서는 @Action과 @Argument 애너테이션으로 업무 메서드를 정의한다. 예를 들어 이름과 역할을 받는 createUser(String name, Role role) 같은 메서드에 설명과 인자 설명을 붙여 두면, AI는 이 정의를 참조해 최종적으로 createUser("James", Role.ADMIN) 형태의 직접 호출을 만들어낸다. 여기서 쓰이는 TypeSafe/Jev의 특징은 모델이 임의의 문자열을 반환하지 않고, 미리 정의된 선택지(choices) 안에서 결정적인 결정을 내리도록 강제한다는 점이다. 그 결과 백엔드에서 파싱·검증·재시도용 접착 코드를 대량으로 작성해야 하는 부담이 줄어든다고 저자는 설명한다.

배경에는 기존 에이전트 접근법에 대한 반감이 깔려 있다. 모델에 거대한 도구 상자를 쥐여주고 다음에 무엇을 할지 스스로 추론하게 하는 방식 대신, AI를 '프로그래밍 가능한 상식 계층'으로 규정한다. 기존 애플리케이션의 @Action은 그대로 재사용하고, 새 계층은 자연어 → tinystruct-typesafe → @Action으로 이어지는 상호작용 차원을 하나 더할 뿐이라는 구상이다.

실무적으로 눈에 띄는 부분은 안전장치다. 파괴적 동작, 가령 delete-user 같은 요청을 모델이 정확히 해석해냈다고 해서 곧바로 실행하지 않는다. 해석 결과를 엄격한 정책 체인에 통과시킨 뒤 실행 여부를 결정하는 구조를 둔다. SDK에는 이와 함께 client, semantic dispatcher, question generation, policy, cache, metrics, workflow persistence 등의 핵심 컴포넌트가 내장돼 있다.

다만 프로젝트는 아직 초기 반복 단계다. 저자가 검증하려는 방향은 명확하다. 타입이 잡힌 액션을 이미 갖춘 전통적인 자바 시스템에서, AI가 최소한의 침습으로 고품질 자연어 진입점이 될 수 있는가 하는 질문이다. 소스는 GitHub의 tinystruct-typesafe-sdk 저장소에 공개돼 있으며, Java와 AI·에이전트·MCP·툴 콜링을 함께 다루는 개발자들과의 논의를 저자는 열어 두고 있다.

관련 글