JSON-Schema 마스크가 필요한 도구 호출(tool calls)을 차단할 수 있는 이유
요약
JSON-Schema 제약 조건이 문법 기반 토큰 마스킹을 통해 LLM의 도구 호출(tool calls)을 차단하는 현상을 분석한 연구입니다. 2단계 추론(two-pass inference) 방식을 통해 모델 재학습 없이도 스키마 준수와 도구 호출 성능을 모두 확보할 수 있음을 제안합니다.
핵심 포인트
- JSON-Schema 마스킹이 도구 호출 토큰을 차단하여 호출률을 0%로 만들 수 있음
- 2단계 추론 방식을 통해 도구 호출률을 0%에서 100%로 복구 가능
- 추가적인 디코딩 단계로 인한 지연 시간(latency) 발생 가능성 존재
- 구조화된 출력과 도구 사용을 동시에 보장하는 안전망으로서의 활용 가치
문법 기반의 토큰 마스크(Grammar‑based token masks)는 LLM 에이전트가 반드시 생성해야 하는 함수 호출(function calls)을 소리 없이 차단할 수 있습니다. 가벼운 2단계 추론(two‑pass inference) 해킹 방식은 모델을 재학습시키지 않고도 이 문제를 우회합니다.
이 연구 이전에는 엔지니어들이 JSON-Schema 출력 제약 조건과 도구 호출(tool‑calling) API를 결합하여 사용해 왔으며, 두 제약 조건이 해롭지 않게 공존한다고 가정했습니다. 기존의 에이전트들은 단순히 스키마 검증기(schema validator)를 활성화하고 모델이 언제 도구를 호출할지 결정하도록 두었습니다.
이러한 억제 현상은 스키마가 강제되는 방식에서 비롯됩니다: “JSON Schema 제약 조건은 문법 기반의 토큰 마스크(grammar‑based token masks)로 컴파일되며, 이는 디코딩(decoding) 중에 도구 호출(tool‑call) 토큰에 도달할 수 없게 만듭니다” [1]. 이 마스크는 함수 호출을 시작할 수 있는 모든 토큰을 제거(prune)하므로, 응답의 나머지 부분이 스키마를 준수하더라도 디코딩 과정에서 유효한 도구 호출 토큰에 결코 도달하지 못하게 됩니다.
모델을 투명한 2단계(two‑pass) 모드로 실행하면 이러한 막다른 길을 제거할 수 있습니다. 두 번째 단계에서는 마스크를 제거하여 모델이 누락된 호출을 생성할 수 있도록 하며, 논문에서는 “도구 호출률(Tool Invocation Rate)이 0%에서 100%로 증가했다”고 보고합니다 [1]. 이 해결책은 모든 필요한 도구 활성화를 복구하면서도 완전한 스키마 준수를 유지합니다.
이 연구는 프로덕션 파이프라인에서 오픈 웨이트(open‑weight) 모델 제품군을 평가하지만, 폐쇄형 소스(closed‑source) 모델이나 더 복잡한 멀티 도구(multi‑tool) 워크플로우를 평가하지는 않으므로, 이들이 동일한 마스크 유발 교착 상태(mask‑induced deadlock)를 겪는지 여부는 불분명합니다. 또한, 추가적인 디코딩 단계는 추가적인 지연 시간(latency)을 발생시키며, 이는 실시간 에이전트에게 우려 사항이 될 수 있습니다. 이는 모든 호출 접두사(call prefixes)를 무분별하게 차단하기보다, 진정으로 불법적인 토큰만을 제외하는 더 스마트한 마스크 설계가 필요함을 시사합니다.
만약 이러한 2-패스(two-pass) 패턴이 배포 환경 전반에서 유지된다면, 스키마 제약 조건(schema constraints) 하에서의 도구 사용(tool use)을 측정하는 모든 벤치마크는 두 번째 패스에서 마스크를 비활성화한 상태로 재실행되어야 합니다. 더 중요한 점은, 프로덕션 에이전트(production agents)가 투명한 2-패스 전략을 기본 안전망(safety net)으로 채택함으로써, 구조화된 출력(structured output)을 보장하는 동시에 도구 호출(tool calls)이 소리 없이 유실되지 않도록 보장할 수 있다는 것입니다.
References
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기