Qwen 3.5, 3.6 및 신규 3.8 릴리스를 위한 수정된 Jinja 챗 템플릿
Fixed Jinja chat template for Qwen 3.5, 3.6, and the new 3.8 release
핵심 요약
Qwen 3.8 공식 템플릿의 버그를 해결하고 추론 제어 기능을 개선한 통합 Jinja 템플릿 공유.
- 템플릿 수정 — 공식 Qwen 3.8 템플릿의 추론 토글 및 도구 호출 오류 해결함.
- 추론 제어 — reasoning_effort 설정을 통해 모델의 사고 깊이를 자유롭게 조절 가능함.
- 호환성 확보 — llama.cpp, vLLM 등 주요 로컬 LLM 환경에서 원활하게 작동함.
- 성능 최적화 — KV 캐시 효율을 높이고 도구 호출 시 발생하는 충돌을 방지함.
Qwen에서 드디어 첫 3.8 모델을 내놨음.
이번 3.8 버전의 핵심은 프롬프트로 추론 강도를 조절할 수 있다는 거임. reasoning_effort 값을 xhigh, medium, low로 설정해서 모델이 얼마나 깊게 생각할지 직접 정할 수 있음.
근데 공식 템플릿에 심각한 문제들이 좀 있음:
- 생각하기 기능을 끌 수가 없음.
enable_thinking=false를 넣으면 3.8 모델이 하드 익셉션 뿜으면서 뻗어버림. - 채팅 기록이 오염됨. 멀티턴 대화에서 공식 템플릿이 실제 생각 과정 앞에 빈
<think></think>태그를 멋대로 집어넣음. - 툴 호출 시 크래시 발생. 클라이언트가 인자를 JSON 문자열(OpenAI API 표준 형식)로 넘기면 공식 템플릿이 바로 뻗음.
- 에이전트 먹통. 공식 템플릿이 대화 중간에 시스템 메시지를 날려 먹어서 다단계 툴 루프가 꼬이는 경우가 허다함.
그래서 내가 Qwen 3.5, 3.6, 3.8 모델 전부 다 호환되는, 그냥 갖다 쓰기만 하면 되는 Jinja 템플릿을 만들어서 유지 중임:
https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates
이 템플릿의 특징:
- 3.8 추론 강도 완벽 지원:
reasoning_effort(xhigh,high,low,medium)로 추론 깊이 조절 가능. - 생각하기 토글 기능 복구: 빠른 답변이 필요할 때 kwargs나 프롬프트에
<|think_off|>를 입력해서 추론 기능을 언제든 끌 수 있음. - KV 캐시 히트 100%: 이전 생각 과정을 기본적으로 유지해서 턴이 넘어가도 프리픽스 캐시가 계속 살아있음.
- llama.cpp 지원: 새로운
--reasoning-preserve플래그를 기본적으로 지원함. - 범용 툴 파싱: 파이썬 딕셔너리랑 JSON 문자열 둘 다 처리 가능. llama.cpp, vLLM, LM Studio, MLX에서 전부 잘 돌아감.
권장 llama-server 실행 명령어:
llama-server -m your_model.gguf --jinja --chat-template-file chat_template.jinja --reasoning-format deepseek
(참고로 --reasoning-format deepseek 플래그를 쓰면 추론 과정을 OpenAI의 reasoning_content 필드로 분리해주기 때문에 OpenCode나 Claude Code 같은 툴들이 생토큰 때문에 멈추는 현상을 방지할 수 있음).


