문법 기반의 토큰 마스크(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
- Constraint Tax in Open-Weight LLMs: An Empirical Study of Tool Calling Suppression Under Structured Output Constraints