Qwen-3의 채팅 템플릿이 우리에게 가르쳐 주는 4 가지
요약
본 기사는 Alibaba Cloud의 최신 Qwen-3 모델이 이전 버전에 비해 얼마나 정교하고 지능적인 채팅 템플릿을 갖추었는지 분석합니다. Qwen-3는 `enable_thinking` 플래그를 통해 사고(Chain-of-Thought) 과정을 선택적으로 활성화/비활성화할 수 있게 했으며, 'rolling checkpoint' 시스템을 도입하여 다단계 도구 호출 시 관련 컨텍스트를 효율적으로 유지하고 토큰 낭비를 줄입니다. 또한, 타입 검사를 강화하여 JSON 직렬화 오류 위험을 낮추고, 기본 시스템 프롬프트 없이도 정확한 역할을 수행하는 등 에이전트 워크플로의 신뢰성과 유연성을 크게 향상시켰습니다.
핵심 포인트
- Qwen-3는 `enable_thinking` 플래그를 통해 CoT(Chain-of-Thought) 추론 과정을 선택적으로 제어할 수 있어, 필요에 따라 사고 단계를 건너뛰거나 강제할 수 있습니다.
- 새로운 'rolling checkpoint' 시스템은 다단계 도구 호출 시 최신 사용자 턴을 기준으로 컨텍스트를 역순 탐색하여 관련 정보를 유지하고 불필요한 과거 추론 블록을 제거합니다.
- Qwen-3는 타입 검사를 강화하여 `tool_call.arguments`와 같은 필드의 JSON 직렬화 오류 위험(이중 이스케이프)을 방지했습니다.
- 기본 시스템 프롬프트에 의존하지 않고도 모델이 정확한 역할을 식별하고 응답할 수 있는 높은 유연성을 보여줍니다.
**단조로운 Jinja 스니펫이 새로운 Qwen-3 모델에 대해 우리에게 무엇을 알려주는지.**Alibaba Cloud 의 새로운 Qwen-3 모델은 이전 모델인 Qwen-2.5 와 QwQ 보다 훨씬 더 정교한 채팅 템플릿을 탑재했습니다. Jinja 템플릿의 차이를 살펴보면 새로운 모델에 대한 흥미로운 통찰력을 찾을 수 있습니다.
채팅 템플릿
채팅 템플릿은 사용자와 모델 간의 대화 구조와 형식을 정의합니다. 이 템플릿은 번역자 역할을 하여 인간이 읽을 수 있는 대화를 다음과 같이 변환합니다:
[
{ role: "user", content: "Hi there!" },
{ role: "assistant", content: "Hi there, how can I help you today?" },
...
모델 친화적 형식으로:
\u201c\u2014user\u201d\nHi there!
...\n```
주어진 모델의 채팅 템플릿은 Hugging Face 모델 페이지에서 쉽게 확인할 수 있습니다.
Qwen/Qwen3-235B-A22B 의 채팅 템플릿
Qwen-3 채팅 템플릿을 살펴보고 무엇을 배울 수 있는지 확인해 보겠습니다!
**그리고 간단한 prefill 를 통해 선택할 수 있습니다...**
Qwen-3 는 `enable_thinking` 플래그를 통해 추론을 토글하는 능력으로 독특합니다. false 로 설정되면 템플릿은 모델이 단계별 사고를 건너뛰도록 하는 빈 `\u201c\u2014think\u201d\n\n\u201c\u2014end_think\u201d` 쌍을 삽입합니다. 이전 모델은 모든 생성에 `\u201c\u2014think\u201d` 태그를 내장하여 원하는지 여부와 상관없이 체인 오브 스코프 (chain-of-thought) 를 강요했습니다.
{# Qwen-3 #}{%- if enable_thinking is defined and enable_thinking is false %} {{- '\u201c\u2014think\n\n\u201c\u2014end_think\n\n' }}{%- endif %}
QwQ 는 모든 대화에서 추론을 강제합니다.
{# QwQ #}{%- if add_generation_prompt %} {{- '\u201c\u2014assistant\n\u2014think\n' }}{%- endif %}
`enable_thinking` 이 true 인 경우 모델은 사고할지 말지 결정할 수 있습니다.
다음 코드로 템플릿을 테스트해 볼 수 있습니다:
import { Template } from "@huggingface/jinja";
import { downloadFile } from "@huggingface/hub";
const HF_TOKEN = process.env.HF_TOKEN;
...
*Qwen-3 는 체크포인트 시스템을 사용하여 추론 블록을 지능적으로 보존하거나 제거하여 관련 컨텍스트를 유지합니다. 이전 모델은 토큰을 절약하기 위해 추론을 조기 폐기했습니다.*
Qwen-3 는 메시지 목록을 역순으로 탐색하여 도구가 호출되지 않은 최신 사용자 턴을 찾아 **rolling checkpoint** 를 도입합니다. 그 인덱스 이후의 모든 어시스턴트 응답은 전체 `\u201c\u2014think\u201d` 블록을 유지하고, 이전에는 모두 제거됩니다.**왜 이것이 중요한지**:
- 다단계 도구 호출 동안 활성 계획을 가시적으로 유지합니다.
- 컨텍스트를 잃지 않고 네스TED 도구를 지원합니다.
- 더 이상 필요하지 않은 사고를 제거하여 토큰을 절약합니다.
- "stale" 추론이 새로운 작업으로 유입되는 것을 방지합니다.
Qwen-3 와 QwQ 의 도구 호출을 통한 체인 오브 스코프 보존의 예입니다.
채팅 템플릿을 테스트하기 위해 @huggingface/jinja 를 확인해 보세요.
이전에는 모든 `tool_call.arguments` 필드가 `| tojson` 을 통해 파이프라인에 전달되었지만, 이미 JSON 인코딩된 문자열인 경우에도 이는 이중 이스케이프의 위험을 초래했습니다. Qwen-3 는 타입을 먼저 확인하고 필요할 때만 직렬화합니다.
{# Qwen3 #}{%- if tool_call.arguments is string %} {{- tool_call.arguments }}{%- else %} {{- tool_call.arguments | tojson }}{%- endif %}
많은 모델과 마찬가지로 Qwen-2.5 시리즈에는 기본 시스템 프롬프트가 있습니다.
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.
이는 "Who are you?" 같은 사용자 질문에 모델을 응답하도록 도와주는 매우 일반적인 것입니다.
Qwen-3 와 QwQ 는 이 기본 시스템 프롬프트를 탑재하지 않습니다. 그럼에도 불구하고 모델은 요청을 받으면 정확하게 생성자를 식별할 수 있습니다.
Qwen-3 는 `chat_template` 을 통해 더 나은 유연성, 지능형 컨텍스트 처리, 그리고 개선된 도구 상호작용을 보여줍니다. 이러한 개선은 능력 향상뿐만 아니라 에이전트 워크플로의 신뢰성과 효율성을 높입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기