Qwen3.8-Flash-Next chat templates
Jinja chat templates for Qwen3.8-Flash-Next on llama.cpp.
| File | What it is |
|---|---|
Sharp-naze-chat_template_v1.5.jinja |
Recommended. v1.5 plus Sharp's toggleable terseness block |
nazeshinjite-chat_template_v1.5.jinja |
v1.5 without terseness |
Unsloth-chat_template_embedded.jinja |
Unsloth's GGUF template, unchanged (reference) |
llama-server -m <model>.gguf --jinja --chat-template-file Sharp-naze-chat_template_v1.5.jinja
Per-message controls
Put a tag in any user or system message. It is stripped before rendering, stays in effect for the rest of the conversation, and the last one wins.
| Tag | Effect |
|---|---|
<|think_off|> / <|think_on|> |
Thinking off / on |
<|think_low|> |
Low effort (alias minimal) |
<|think_medium|> |
Medium effort |
<|think_xhigh|> |
xhigh effort, the default |
<|terse_off|> / <|terse_on|> |
Terseness off / on (Sharp only) |
Tags override kwargs, except that enable_thinking: false yields only to <|think_on|>. Each change re-processes the prompt once. Kwarg equivalents: enable_thinking, reasoning_effort, terse.
My changes to Unsloth's template
| Area | Change |
|---|---|
| Thinking history | Think-on history no longer replays a blank <think></think> (empty-think poisoning); think-off keeps it so the prompt prefix stays reusable. In-content <think> blocks move into the reasoning, and with thinking on a stray </think> is split out instead of leaking into the answer. Also reads reasoning (vLLM) and thinking (Anthropic) fields. |
| Effort | Never raises; high, max, ultracode and extreme mean xhigh, as tags or reasoning_effort values. |
| Tool calls | JSON-string arguments render instead of failing. Two added rules: literal parameter values only, and never resend a failed call unchanged. |
| Tool failures | A failing step gets a "diagnose first" note; two in a row get a "change course" warning. A parallel batch counts as one step. Tuned on 248 real agent tool results: 100% recall, 88% precision. No regressions. |
| Special tokens | Literal <|im_end|>-style text in user, system or tool content is escaped as <|…, so llama.cpp can't turn it into a real turn boundary. Tool results also escape <tool_response>. |
| Robustness | A conversation that starts with a tool result opens a user turn. "false", "0", "off" and "no" count as false in kwargs. Also accepts video_url parts and preserve_reasoning. |
Normal history is byte-identical to Unsloth's; with tools, the system block adds the two rules. Mid-conversation system messages still raise, as in Unsloth's. Tested with 75 jinja2 checks (98 for Sharp) and cross-checked in llama.cpp's own template engine.
Sharp terseness
Appends the terseness block from Sharp v22.5.0 after your system prompt: no preamble, restating or filler, but every needed step, caveat and uncertainty kept. Its first line follows the thinking mode. On by default, off when the request has tools. With it off, the output is identical to plain v1.5. Default effort stays xhigh.
Unsloth's changes to stock
Changed once (2026-08-26), unchanged since: merges leading system/developer messages, maps high to xhigh, renders conversations with no user turn, and gives readable errors for nameless tool calls and JSON-string arguments (which still fail).
Credit: Unsloth for the base template. Several fixes adapt ideas from froggeric/Qwen-Fixed-Chat-Templates. The terseness block is from peculiar-ragdoll/Qwen-Sharp-Chat-Templates (Apache-2.0).
Model tree for nazeshinjite/Flash-Next-Chat-Templates
Base model
Qwen/Qwen3.8-Flash-Next