Qwen3-Coder-Next — Opus 4.6 Reasoning Distilled (GGUF)
GGUF quantizations of the full fine-tuned Qwen/Qwen3-Coder-Next (~80B total / ~3B active, MoE) with Claude Opus 4.6 reasoning distillation. Trained on 8x H100 80GB SXM with DeepSpeed ZeRO-3, all parameters.
Tool Calling: Largest improvement (+3.8). Base model outputs only the first tool call and stops. Opus Distilled plans full multi-step tool chains with reasoning between steps.
Bug Detection: Opus Distilled provides more structured analysis with severity tables, timeline diagrams, and catches more edge cases (+0.6).
Coding: Opus Distilled favors class-based architectures with better design patterns. Caught a SQL bug (window function in WHERE clause) that Base missed.
Probability: Base is more concise and made fewer computation errors. Opus Distilled made an error on a Markov Chain steady-state calculation.
Logic: Base makes better progress within token budgets — Opus Distilled spends more tokens on preamble.
Instruction Following: Base adheres more strictly to output format constraints (e.g., "output ONLY valid JSON").
Verdict
Opus-Distilled wins overall driven by massively better tool calling and slightly better bug detection and coding. Base wins on math/probability (fewer errors), logic (better token efficiency), and instruction following (better constraint adherence). For coding assistant use cases where tool calling matters, Opus-Distilled is clearly superior.
Performance
Both models run at comparable speeds on RTX PRO 6000 Blackwell (96GB) with Q8_0:
The model produces <think>...</think> reasoning blocks. To properly separate these from the visible output, use a custom chat template with --reasoning-format deepseek:
This puts the thinking in message.reasoning_content and keeps message.content clean.
Chat Template
The base Qwen3-Coder-Next chat template does not include <think> tag support. You need a merged template that supports both thinking and tool calling. Save this as qwen3-think.jinja:
Click to expand chat template
jinja
1{%- if messages[0]["role"] == "system" %}
2 {%- set system_message = messages[0]["content"] %}
3 {%- set loop_messages = messages[1:] %}
4{%- else %}
5 {%- set loop_messages = messages %}
6{%- endif %}
78{%- if not tools is defined %}
9 {%- set tools = [] %}
10{%- endif %}
1112{%- if system_message is defined %}
13 {{- "<|im_start|>system\n" + system_message }}
14{%- else %}
15 {%- if tools is iterable and tools | length > 0 %}
16 {{- "<|im_start|>system\nYou are a helpful AI assistant." }}
17 {%- endif %}
18{%- endif %}
19{%- if tools is iterable and tools | length > 0 %}
20 {{- "\n\n# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
21 {%- for tool in tools %}
22 {%- if tool.function is defined %}
23 {%- set tool = tool.function %}
24 {%- endif %}
25 {{- "\n<function>\n<name>" ~ tool.name ~ "</name>" }}
26 {%- if tool.description is defined %}
27 {{- "\n<description>" ~ tool.description ~ "</description>" }}
28 {%- endif %}
29 {{- "\n<parameters>" ~ (tool.parameters | tojson) ~ "</parameters>" }}
30 {{- "\n</function>" }}
31 {%- endfor %}
32 {{- "\n</tools>" }}
33{%- endif %}
34{%- if system_message is defined or (tools is iterable and tools | length > 0) %}
35 {{- "<|im_end|>\n" }}
36{%- endif %}
3738{%- for message in loop_messages %}
39 {%- if message.role == "assistant" %}
40 {{- "<|im_start|>assistant\n" }}
41 {%- if message.reasoning_content is defined and message.reasoning_content %}
42 {{- "<think>\n" + message.reasoning_content + "\n</think>\n\n" }}
43 {%- endif %}
44 {{- message.content + "<|im_end|>\n" }}
45 {%- elif message.role == "tool" %}
46 {{- "<|im_start|>user\n<tool_response>\n" + message.content + "\n</tool_response><|im_end|>\n" }}
47 {%- else %}
48 {{- "<|im_start|>" + message.role + "\n" + message.content + "<|im_end|>\n" }}
49 {%- endif %}
50{%- endfor %}
51{%- if add_generation_prompt %}
52 {{- "<|im_start|>assistant\n<think>\n" }}
53{%- endif %}
OpenAI-Compatible API
The model serves an OpenAI-compatible API. Example request:
At least one assistant message containing <think> tags
Assistant content longer than 200 characters
This removed low-quality or non-reasoning examples from the combined dataset.
Reasoning Format
The model produces reasoning inside <think>...</think> tags:
<think>
Let me analyze this step by step...
1. First consideration
2. Second consideration
3. Conclusion
</think>
Here is the final answer based on my analysis.