TL;DR
프로덕션 Agent는 외부 도구 호출과 JSON Schema 기반 구조화 출력을 동시에 요구하는 경우가 많다. 이 논문은 두 제약을 동시에 활성화하면 디코딩 수준의 문법 마스크가 도구 호출 토큰을 차단해 도구 실행이 완전히 사라질 수 있음을 실험적으로 확인한다.
왜 중요한가
프로덕션 Agent는 외부 도구 호출과 JSON Schema 기반 구조화 출력을 동시에 요구하는 경우가 많다. 이 논문은 두 제약을 동시에 활성화하면 디코딩 수준의 문법 마스크가 도구 호출 토큰을 차단해 도구 실행이 완전히 사라질 수 있음을 실험적으로 확인한다.
핵심 기여
Tool Suppression 현상 식별 및 특성화
Tool Calling과 Structured Output(응답 포맷) 제약을 동시에 활성화하면 여러 오픈-웨이트 모델에서 도구 호출이 재현성 있게 사라지는 현상을 보고하고, 이를 Tool Suppression으로 정의해 관찰 가능한 특성을 정량적으로 제시했다.
문법 기반 제약(Grammar)에서의 구현 수준 근인 규명
response_format(JSON Schema) 경로가 xgrammar로 컴파일되어 FSM 기반 어휘 마스크를 생성하고, 디코딩 시 특정 토큰(logits)이 −∞로 설정되어 <tool_call> 계열 토큰이 모든 상태에서 차단되는 것을 inference stack 추적으로 확인했다.
Constraint Priority Inversion(CPI) 행동 가설 제시
제약 간 목표 경쟁으로 인해 모델이 형식 준수를 우선시해 행동(도구 호출)을 포기할 가능성을 CPI로 정형화해, 관찰된 TS-C(의도 표출 후 미실행) 등 현상을 해석하는 행동적 프레임워크를 제안했다.
Transparent Two-Pass Execution: 추론-시 완화책 제안·검증
도구 실행을 제약 적용 이전에 완료하는 두 단계 추론(1st pass: tools ON, schema OFF → 도구 실행 수집; 2nd pass: tools OFF, schema ON → 스키마 준수 응답 생성)으로 도구 호출을 복원하고 JSON 준수율을 유지함을 실험적으로 확인했다.
도구 억제 행동 분류(TS-A ~ TS-E) 제공
도구 억제 현상을 관측 가능한 출력 패턴 다섯 유형으로 분류해(빈 준수, 모사 검색, 의도 표출 무행동 등) 서로 다른 위험도와 탐지 용이성을 구분하는 분석 도구를 제공했다.
핵심 아이디어 이해하기
Transformer 기반 생성기는 각 디코딩 스텝에서 모델이 산출한 logits에 대해 softmax를 적용해 다음 토큰을 샘플링한다. softmax는 각 토큰의 logit z_i에 대해 e^{z_i}/Σ_j e^{z_j}를 계산해 확률분포를 만든다. 디코딩 제약을 적용하는 프레임워크는 이 단계 이전 또는 직후에 특정 토큰들의 logits를 수동으로 −∞로 설정해 샘플링 확률을 0으로 만든다. 결과적으로 모델이 내부적으로 높은 선호도를 보이더라도 해당 토큰은 최종 생성에서 절대 선택되지 않는다.
방법론
전체 접근은 제약의 상호작용을 분리해 원인을 찾는 것과 구현 수준(프레임워크-디코더 연쇄)을 추적하는 두 축으로 구성된다. 실험 설계는 동일 프롬프트·도구·스키마를 유지한 채 세 조건(T1: tools ON, schema OFF / T2: tools ON, schema ON / T3: tools OFF, schema ON)을 비교해 도구 억제가 공동 제약에서만 발생하는지를 확인했다. 모델군으로는 다양한 파라미터 규모와 아키텍처(Qwen 계열, GPT-OSS 등) 및 두 가지 추론 프레임워크(SGLang, vLLM)를 포함해 범용성 검증을 수행했다. 근인 분석은 SGLang 추적을 통해 response_format→grammar_manager→xgrammar.compile_grammar→sampling_batch_info→apply_token_bitmask_inplace_triton로 이어지는 호출 체인을 검토하고 FSM 상태별 토큰 도달 가능성을 검사해 '<' 문자가 모든 상태에서 마스킹되어 XML형식 도구 호출 토큰이 차단되는 것을 확인했다. 완화 실험은 Transparent Two-Pass Execution을 시스템 수준에서 도입해 1차에서 자유롭게 도구를 호출하고 2차에서 수집 결과를 주입해 스키마 준수 출력을 생성하는 방식으로 수행됐다.
관련 Figure

이 그림은 제안된 완화책(Transparent Two‑Pass Execution)의 핵심 논리를 요약한다. 첫 패스에서 tools=ON, schema=OFF로 자유롭게 도구를 실행하고 결과를 수집한 뒤, 두 번째 패스에서 schema를 복원해 최종 JSON을 생성함으로써 도구 호출을 복원하고 스키마 준수를 유지한 실험 결과를 시각적으로 뒷받침한다.
단일-패스 실행에서 도구 호출이 실패하는 사례와 투명한 두-패스 실행으로 도구 호출이 복원되는 플로우를 비교한 그림이다.
주요 결과
메인 결과는 T1에서 모든 평가된 오픈-웨이트 모델의 Tool Invocation Rate(TIR)가 100%였으나 T2에서는 해당 모델군의 TIR이 0%로 완전 소실된 점이다(논문 표 7). 반면 T3에서는 JSON Compliance Rate(JCR)가 높게 유지되어 스키마 준수 능력 자체는 보존되었다. SGLang과 vLLM 양 프레임워크에서 동일한 패턴이 관찰되어 프레임워크 의존성은 배제되었다. 스키마 복잡도(간단→중간→생산급)와 도구 강제옵션(tool_choice="required"), 다양한 SFT/GRPO 파인튜닝 실험에서도 억제는 해소되지 않았다. 근인 분석에서 FSM 기반 어휘 마스크가 '<' 토큰을 모든 상태에서 차단함이 확인되어 디코딩 단계의 토큰 제외가 직접적 원인으로 식별되었다. 완화 결과에서 Transparent Two-Pass Execution은 TIR을 0%에서 100%로 복원했고 JCR은 100%로 유지되었다. 평균 도구 호출 수는 세션당 5–8회로 보고되었다.
기술 상세
아키텍처 수준에서 문제는 API-layer의 response_format(JSON Schema) 파라미터가 프레임워크의 grammar 엔진(xgrammar)에 의해 FSM으로 컴파일되고, FSM 상태에 기반해 각 디코딩 스텝에서 어휘 비트마스크(bitmask)가 생성되어 logits에 적용되는 흐름에 있다. 구현 체인 예시는 다음과 같다: API response_format -> serving_chat.get_json_schema_constraint() -> grammar_manager -> xgrammar.compile_grammar() -> sampling_batch_info.update_regex_vocab_mask() -> GrammarMatcher.fill_next_token_bitmask() -> apply_token_bitmask_inplace_triton() -> logits[mask==0] = -inf. 수학적 관점에서, 모델이 산출한 logits z_i는 softmax 전 상태이며 e^{z_i}가 token 선택 가중치로 작용한다. 마스크 적용은 (mask_i==0)인 항목에 대해 z_i := -∞를 수행함으로써 softmax 확률을 0으로 만든다. 이 연산은 decoding-time 조작으로서 weight-space의 변화(예: SFT, GRPO)가 영향을 미칠 수 없는 비가역적 단계이다. 실험적 차별점은 동일한 프롬프트·스키마·도구 정의 하에서 T1/T2/T3를 비교해 제약의 상호작용을 분리한 점이다. 또한 도메인별 억제 패턴을 TS-A~TS-E로 분류해 억제 현상을 출력 패턴 수준에서 세분화했다. 구현적 권고로는 FSM 설계 시 도구 호출 형식(예: XML 태그, function-call 스타일)과 충돌하지 않도록 grammar를 확장하거나, 스키마 적용을 두 단계로 분리하는 오케스트레이션 논리가 요구된다.
관련 Figure
![API response_format에서 시작해 grammar 엔진이 FSM을 생성하고 디코딩 단계에서 어휘 마스크(logits[mask==0] = -inf)를 적용해 <tool_call> 토큰이 차단되는 전체 파이프라인을 도식화한 그림이다.](/api/image-proxy?url=https%3A%2F%2Farxiv.org%2Fhtml%2F2606.25605v1%2Ffigures%2FCT.png&articleId=68157)
이 다이어그램은 논문의 핵심 근거인 'FSM→어휘 마스크→토큰 차단' 경로를 시각적으로 요약한다. API 레이어의 response_format 설정이 grammar_manager와 xgrammar를 통해 bitmask로 변환되고, 해당 bitmask가 logits에 적용되어 도구 호출 토큰이 디코딩에서 제거되는 구현 수준 메커니즘을 직접 연결한다. 논문에서 제시한 근인 분석과 완전히 일치한다.
API response_format에서 시작해 grammar 엔진이 FSM을 생성하고 디코딩 단계에서 어휘 마스크(logits[mask==0] = -inf)를 적용해 <tool_call> 토큰이 차단되는 전체 파이프라인을 도식화한 그림이다.
한계점
평가 대상 모델군이 제한적이며(논문에 표기된 모델 집합에 한정), 벤치마크 크기가 대규모 학계 표준 수준은 아니다. CPI는 행동적 가설로 제시되며 내부적 인과를 확증하는 증거는 제공되지 않았다. 제안된 Two‑Pass 완화는 지연(latency)과 토큰 비용을 증가시키며 근본적 메커니즘을 제거하지는 못한다. 연구는 주로 도구 호출 워크플로에 집중하였고 MCP나 다중 에이전트 생태계로의 일반화는 추가 검증이 필요하다.
실무 활용
Transparent Two-Pass Execution은 모델 재학습 없이도 프로덕션 파이프라인에 적용 가능한 추론-단계 완화책이다. 첫 단계에서 제약 없이 도구를 호출하고 결과를 수집한 뒤 두 번째 단계에서 스키마 제약을 적용해 최종 응답을 생성해 기능을 복원한다.
- 엔터프라이즈 워크플로에서 외부 검색·데이터베이스 조회를 선행하고 구조화된 JSON 응답을 요구하는 자동화 시스템
- 기업 내부 API와 연동해 실시간 검증 결과를 포함한 스키마 준수 리포트를 생성해야 하는 도구-증강 에이전트
- 멀티스텝 정보 수집(여러 도구 호출) 후 표준화된 형식으로 결과를 반환해야 하는 서비스형 Agent
코드 공개 여부: 미확인
키워드
용어 해설
- Grammar-Constrained Decoding
- — 사용자가 제공한 JSON Schema를 유한상태기계(FSM)로 컴파일해 각 디코딩 스텝에서 허용 가능한 토큰 집합만 허용하도록 토큰 logits에 마스크를 적용하는 기법이다. 이 방식은 형식 준수를 강제하지만 특정 토큰(예: XML형식의 <tool_call> 시작 문자)을 모든 FSM 상태에서 차단할 수 있어 생성 가능한 출력 공간을 구조적으로 변경한다.
- JSON Schema
- — 출력의 구조적 형식을 정의하는 명세로, 필수 필드·타입·중첩 구조 등 형식 제약을 기술한다. 본 논문에서는 이 스키마가 xgrammar를 통해 FSM으로 컴파일되어 디코딩 시 어휘 마스크를 산출하는 역할을 한다.
- Finite-State Machine (FSM)
- — JSON Schema로부터 파생된 상태 전이 규칙을 표현하는 계산 모델로, 현재 생성 상태에 따라 다음에 허용되는 토큰 집합을 결정한다. FSM의 허용 집합이 디코딩 마스크로 변환되어 logits에 적용된다.
- Token Mask / Vocabulary Mask
- — 디코더에서 특정 토큰의 logits를 −∞로 설정해 샘플링 불가능하게 만드는 비가역적 조치이다. 본 연구에서는 JSON Schema에서 유도된 FSM이 이 마스크를 생성해 tool-call 토큰을 모든 상태에서 차단했다.
- Constraint Priority Inversion (CPI)
- — 여러 제약이 동시에 존재할 때 모델이 구조적 형식 준수를 실행 우선순위로 삼아 행동 선택(예: 도구 호출)을 포기하는 행동 가설이다. 본 논문에서는 CPI를 관찰된 행동을 해석하기 위한 가설로 제시했다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.