Chat templates in KoboldCpp: get the format right and control thinking
For the OpenAI-style chat API, KoboldCpp detects the chat template from the model with its AutoGuess adapter, which is the default. If replies look broken, try --jinja so the model's own template is used. In KoboldAI Lite and SillyTavern text completion you choose the instruct preset yourself, and it must match the model family. To turn thinking off on a model that thinks, use --jinja --jinjathink false or a NoThink adapter: on Qwen3-0.6B that cut a reply from 288 tokens to 12.
Checked against KoboldCpp 1.124.2 · updated 13 Nov 2026
- lab-lnx: Linux test VM · 4 vCPU · 15 GB · no GPU
On this page
Chat template and thinking finder
Find the format and the thinking switch for your model.
Qwen 2.5 and Qwen 3
- AutoGuess rule
- ChatML (Qwen 2.5 based)
- Bundled adapter
- ChatML
- Thinking
- Qwen 3 models think by default; Qwen 2.5 does not. No-think adapter: ChatML-NoThink.
- Tools / vision
- tools · text only (per the family's usual releases)
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "ChatML (Qwen 2.5 based)".
- To force it: --chatcompletionsadapter ChatML
- Or use the model's own template: --jinja
- Thinking off: --chatcompletionsadapter ChatML-NoThink, or --jinja --jinjathink false
Llama 3, 3.1, 3.2, 3.3
- AutoGuess rule
- Llama 3.x
- Bundled adapter
- Llama-3
- Thinking
- No thinking.
- Tools / vision
- tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Llama 3.x".
- To force it: --chatcompletionsadapter Llama-3
- Or use the model's own template: --jinja
Llama 4
- AutoGuess rule
- Llama 4
- Bundled adapter
- Llama-4
- Thinking
- No thinking.
- Tools / vision
- tools · vision (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Llama 4".
- To force it: --chatcompletionsadapter Llama-4
- Or use the model's own template: --jinja
Llama 2 Chat
- AutoGuess rule
- none named for this family: choose the adapter yourself
- Bundled adapter
- Llama-2-Chat
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick nothing named for this family, so choose the adapter yourself.
- To force it: --chatcompletionsadapter Llama-2-Chat
- Or use the model's own template: --jinja
Mistral Nemo, Small, Large, Ministral, Magistral
- AutoGuess rule
- Mistral Tekken
- Bundled adapter
- Mistral-Tekken
- Thinking
- Magistral reasons; the others do not.
- Tools / vision
- tools · vision (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Mistral Tekken".
- To force it: --chatcompletionsadapter Mistral-Tekken
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
Mistral 7B and Mixtral (older)
- AutoGuess rule
- Mistral Non-Tekken
- Bundled adapter
- Mistral-NonTekken
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Mistral Non-Tekken".
- To force it: --chatcompletionsadapter Mistral-NonTekken
- Or use the model's own template: --jinja
Gemma 2
- AutoGuess rule
- Google Gemma 2
- Bundled adapter
- Gemma-3
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Google Gemma 2".
- To force it: --chatcompletionsadapter Gemma-3
- Or use the model's own template: --jinja
Gemma 3
- AutoGuess rule
- Google Gemma 3
- Bundled adapter
- Gemma-3
- Thinking
- No thinking.
- Tools / vision
- no tools · vision (per the family's usual releases)
- Our tests
- : Gemma 3 270M was detected as Google Gemma 3 F79
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Google Gemma 3".
- To force it: --chatcompletionsadapter Gemma-3
- Or use the model's own template: --jinja
Gemma 3n
- AutoGuess rule
- Google Gemma 3n
- Bundled adapter
- Gemma-3
- Thinking
- No thinking.
- Tools / vision
- no tools · vision (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Google Gemma 3n".
- To force it: --chatcompletionsadapter Gemma-3
- Or use the model's own template: --jinja
Gemma 4 (26B and 31B)
- AutoGuess rule
- Google Gemma 4 (26B and 31B)
- Bundled adapter
- Gemma-4-26B-31B
- Thinking
- Can think; a Gemma-4-Thinking adapter is bundled. Thinking adapter: Gemma-4-Thinking.
- Tools / vision
- tools · vision (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Google Gemma 4 (26B and 31B)".
- To force it: --chatcompletionsadapter Gemma-4-26B-31B
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
Gemma 4 (E2B and E4B)
- AutoGuess rule
- Google Gemma 4 (E2B and E4B)
- Bundled adapter
- Gemma-4-E2B-E4B
- Thinking
- Can think; a Gemma-4-Thinking adapter is bundled. Thinking adapter: Gemma-4-Thinking.
- Tools / vision
- tools · vision (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Google Gemma 4 (E2B and E4B)".
- To force it: --chatcompletionsadapter Gemma-4-E2B-E4B
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
GPT-OSS
- AutoGuess rule
- OpenAI Harmony
- Bundled adapter
- OpenAI-Harmony
- Thinking
- Reasons; set the effort with --reasoningeffort.
- Tools / vision
- tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "OpenAI Harmony".
- To force it: --chatcompletionsadapter OpenAI-Harmony
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
DeepSeek
- AutoGuess rule
- DeepSeek V2.5
- Bundled adapter
- DeepSeek
- Thinking
- R1 style models think. Distills on a Qwen or Llama base may use that base's format instead: look at the file's own template.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "DeepSeek V2.5".
- To force it: --chatcompletionsadapter DeepSeek
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
GLM 4 and GLM 4.7
- AutoGuess rule
- GLM-4
- Bundled adapter
- GLM-4
- Thinking
- GLM 4.7 thinks by default; NoThink adapters are bundled. No-think adapter: GLM-4-NoThink.
- Tools / vision
- tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "GLM-4".
- To force it: --chatcompletionsadapter GLM-4
- Or use the model's own template: --jinja
- Thinking off: --chatcompletionsadapter GLM-4-NoThink, or --jinja --jinjathink false
Phi 3 and 3.5
- AutoGuess rule
- Phi 3.5
- Bundled adapter
- Phi-3
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Phi 3.5".
- To force it: --chatcompletionsadapter Phi-3
- Or use the model's own template: --jinja
Phi 4
- AutoGuess rule
- ChatML (Phi 4)
- Bundled adapter
- ChatML
- Thinking
- Phi 4 reasoning variants think.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "ChatML (Phi 4)".
- To force it: --chatcompletionsadapter ChatML
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
Command R
- AutoGuess rule
- Cohere
- Bundled adapter
- Command-R
- Thinking
- No thinking.
- Tools / vision
- tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Cohere".
- To force it: --chatcompletionsadapter Command-R
- Or use the model's own template: --jinja
Granite 4
- AutoGuess rule
- Granite 4
- Bundled adapter
- Granite-4
- Thinking
- No thinking.
- Tools / vision
- tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Granite 4".
- To force it: --chatcompletionsadapter Granite-4
- Or use the model's own template: --jinja
Jamba
- AutoGuess rule
- Jamba
- Bundled adapter
- Jamba
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Jamba".
- To force it: --chatcompletionsadapter Jamba
- Or use the model's own template: --jinja
MiniMax
- AutoGuess rule
- MiniMax
- Bundled adapter
- MiniMax
- Thinking
- See the model card.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "MiniMax".
- To force it: --chatcompletionsadapter MiniMax
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
Seed-OSS
- AutoGuess rule
- Seed OSS
- Bundled adapter
- Seed-OSS
- Thinking
- Thinks; a NoThink adapter is bundled. No-think adapter: Seed-OSS-NoThink.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Seed OSS".
- To force it: --chatcompletionsadapter Seed-OSS
- Or use the model's own template: --jinja
- Thinking off: --chatcompletionsadapter Seed-OSS-NoThink, or --jinja --jinjathink false
RWKV World
- AutoGuess rule
- RWKV World
- Bundled adapter
- RWKV-World
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "RWKV World".
- To force it: --chatcompletionsadapter RWKV-World
- Or use the model's own template: --jinja
Kimi
- AutoGuess rule
- ChatML (Kimi)
- Bundled adapter
- none
- Thinking
- See the model card.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "ChatML (Kimi)".
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
Vicuna
- AutoGuess rule
- none named for this family: choose the adapter yourself
- Bundled adapter
- Vicuna
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick nothing named for this family, so choose the adapter yourself.
- To force it: --chatcompletionsadapter Vicuna
- Or use the model's own template: --jinja
Alpaca style (older fine-tunes)
- AutoGuess rule
- none named for this family: choose the adapter yourself
- Bundled adapter
- Alpaca
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick nothing named for this family, so choose the adapter yourself.
- To force it: --chatcompletionsadapter Alpaca
- Or use the model's own template: --jinja
Metharme and Pygmalion
- AutoGuess rule
- none named for this family: choose the adapter yourself
- Bundled adapter
- Metharme
- Thinking
- No thinking.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick nothing named for this family, so choose the adapter yourself.
- To force it: --chatcompletionsadapter Metharme
- Or use the model's own template: --jinja
Muse Glimmer
- AutoGuess rule
- Muse Glimmer
- Bundled adapter
- Muse-Glimmer
- Thinking
- See the model card.
- Tools / vision
- no tools · text only (per the family's usual releases)
- Our tests
Settings for the API and chat apps
- Default: Leave --chatcompletionsadapter on AutoGuess: it should pick "Muse Glimmer".
- To force it: --chatcompletionsadapter Muse-Glimmer
- Or use the model's own template: --jinja
- Thinking off: --jinja --jinjathink false
27 families from KoboldCpp's own rule list. Type a name to narrow it down.
What a KoboldCpp chat template does
A chat is a list of messages: a system message, then user and assistant turns. A model does not read a list. It reads one long string of text in which special markers show where each turn starts and ends. The chat template is the recipe that turns the list into that string, and every model family was trained on its own recipe. If the recipe is wrong the model sees markers it does not know, and it continues the pattern in odd ways: it rambles, writes the user’s next turn, or stops after a few words.
AutoGuess: what KoboldCpp does by default
For the chat API (/v1/chat/completions), the default adapter is AutoGuess (Instruct-template adapter (JSON file or bundled name such as ChatML, Llama-3) used to format /v1/chat/completions prompts. Default AutoGuess detects it from the model.Default AutoGuessLauncher Loaded Files tab: Chat Adapter + "Pick Premade"Since v1.62All details, the default since 1.81). It looks for marker text in the template that is stored inside the model file and compares it with a list of 33 rules in 1.124.2, from several ChatML variants to Gemma 4, GPT-OSS and Ling. Text-completion clients such as SillyTavern’s Text Completion mode build the prompt themselves, so AutoGuess does not apply to them.
To see what it chose, send one chat request and read the log: KoboldCpp prints the rule name then, not at load time F79.
Loading Chat Completions Adapter: …/kcpp_adapters/AutoGuess.json1print_info: general.name = Gemma-3-270M-It2Chat completion heuristic: Google Gemma 33- Loading Chat Completions Adapter: …/kcpp_adapters/AutoGuess.json: At start-up only the adapter list is loaded.
- print_info: general.name = Gemma-3-270M-It: The model.
- Chat completion heuristic: Google Gemma 3: Printed when the first chat request arrives: the rule it picked.
The same test with Qwen2.5-0.5B printed Chat completion heuristic: ChatML (Qwen 2.5 based). These are the rules:
| ChatML (Phi 4) | <|im_start|>assistant <|im_end|> | <|im_start|>assistant<|im_sep|> |
| ChatML (Qwen 2.5 based) | <|im_start|>assistant <|im_end|> | <|im_start|>assistant\n |
| ChatML (Kimi) | <|im_user|>{{role_name}}<|im_middle|> <|im_assistant|>{{role_name}}<|im_middle|> | <|im_assistant|>assistant<|im_middle|> |
| ChatML (Kimi Alternate) | <|im_user|> <|im_system|>system<|im_middle|> | <|im_assistant|>assistant<|im_middle|> |
| Google Gemma 2 | System role not supported <start_of_turn> | <start_of_turn>model\n |
| Google Gemma 3 | <start_of_image> <start_of_turn> | <start_of_turn>model\n |
| Google Gemma 3n | <image_soft_token> <start_of_turn>model | <start_of_turn>model\n |
| Google Gemma 4 (26B and 31B) | <|turn>model <|think|> | <|turn>model\n |
| Google Gemma 4 (E2B and E4B) | <|turn>model <|think|> | <|turn>model\n |
| Llama 3.x | <|start_header_id|>assistant<|end_header_id|> | <|start_header_id|>assistant<|end_header_id|>\n\n |
| Llama 4 | <|header_start|>assistant<|header_end|> | <|header_start|>assistant<|header_end|>\n\n |
| Granite 4 | <|start_of_role|>system<|end_of_role|> | <|start_of_role|>assistant<|end_of_role|> |
| Mistral Tekken | [/INST] [SYSTEM_PROMPT] | [/INST] |
| Mistral Non-Tekken | [/INST] "[INST] " + system_message | [/INST] |
| GLM-4.7 | [gMASK]<sop> content.split('</think>') | <|assistant|>\n<think> |
| GLM-4 | [gMASK]<sop> | <|assistant|>\n |
| Phi 3.5 | <|system|> <|user|> | <|assistant|>\n |
| Phi 4 (mini) | '<|' + message['role'] + '|>' | <|assistant|> |
| Cohere | <|START_OF_TURN_TOKEN|> | <|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|> |
| Spark X2.5 | <|start▁of▁sentence|> <|end▁of▁sentence|> | <|start▁of▁sentence|><|Bot|></think> |
| DeepSeek V2.5 | <|User|> | <|Assistant|> |
| Jamba | <|bom|> is_last_checked_defined | <|bom|><|assistant|> |
| Dots | <|userprompt|> <|endofuserprompt|> | <|response|> |
| OpenAI Harmony | <|start|>user<|message|> <|channel|> | <|start|>assistant<|channel|>analysis<|message|>We can answer immediately.<|end|><|start|>assistant<|channel|>final<|message|> |
| Seed OSS | <seed:bos> <seed:eos> | <seed:bos>assistant\n |
| RWKV World | rwkv_ 'User: ' | Assistant: |
| Mistral (Generic) | [/INST] | [/INST] |
| ChatML (Generic) | <|im_start|>assistant <|im_end|> | <|im_start|>assistant\n |
| Apriel 1.6 | [BEGIN FINAL RESPONSE] <|begin_user|> | <|begin_assistant|>\n |
| Apertus | <|developer_end|> <|assistant_start|> | <|assistant_start|> |
| MiniMax | [e~[ ]~b]user | ]~b]ai\n |
| Muse Glimmer | <|start|>assistant to= <|start|>system<|message|> | <|start|>assistant to=user<|message|> |
| Ling 3.0 Flash | <role>SYSTEM</role> <|role_end|> | <role>ASSISTANT</role> |
A second detection list, AutoGuess-NoThink, is used when thinking is switched off.
The adapters bundled with KoboldCpp
KoboldCpp 1.124.2 ships 30 JSON files in its kcpp_adapters folder: one detection list and the adapters below. Pick one in the launcher (Loaded Files tab, Chat Adapter) or with Instruct-template adapter (JSON file or bundled name such as ChatML, Llama-3) used to format /v1/chat/completions prompts. Default AutoGuess detects it from the model.Default AutoGuessLauncher Loaded Files tab: Chat Adapter + "Pick Premade"Since v1.62All details and a name such as ChatML or Llama-3.
Alpaca.json | Alpaca style (older fine-tunes) | – | no named rule | not tested |
AutoGuess-NoThink.json | Detection list (30 rules) used when thinking is off | NoThink | it is the list | not tested |
ChatML-NoThink.json | Qwen 2.5 and Qwen 3 | NoThink | no named rule | tested (see the family) |
ChatML.json | Qwen 2.5 and Qwen 3, Phi 4 | – | yes, by a named rule | tested (see the family) |
Command-R.json | Command R | – | yes, by a named rule | not tested |
DeepSeek.json | DeepSeek | – | yes, by a named rule | not tested |
GLM-4-NoThink.json | GLM 4 and GLM 4.7 | NoThink | no named rule | not tested |
GLM-4.7-NoThink.json | GLM 4 and GLM 4.7 | NoThink | no named rule | not tested |
GLM-4.json | GLM 4 and GLM 4.7 | – | yes, by a named rule | not tested |
Gemma-3.json | Gemma 2, Gemma 3, Gemma 3n | – | yes, by a named rule | tested (see the family) |
Gemma-4-26B-31B.json | Gemma 4 (26B and 31B) | – | yes, by a named rule | not tested |
Gemma-4-E2B-E4B.json | Gemma 4 (E2B and E4B) | – | yes, by a named rule | not tested |
Gemma-4-Thinking.json | Gemma 4 (26B and 31B), Gemma 4 (E2B and E4B) | Thinking | no named rule | not tested |
Granite-4.json | Granite 4 | – | yes, by a named rule | not tested |
Jamba.json | Jamba | – | yes, by a named rule | not tested |
Llama-2-Chat.json | Llama 2 Chat | – | no named rule | not tested |
Llama-3.json | Llama 3, 3.1, 3.2, 3.3 | – | yes, by a named rule | not tested |
Llama-4.json | Llama 4 | – | yes, by a named rule | not tested |
Metharme.json | Metharme and Pygmalion | – | no named rule | not tested |
MiniMax.json | MiniMax | – | yes, by a named rule | not tested |
Mistral-NonTekken.json | Mistral 7B and Mixtral (older) | – | yes, by a named rule | not tested |
Mistral-Tekken.json | Mistral Nemo, Small, Large, Ministral, Magistral | – | yes, by a named rule | not tested |
Muse-Glimmer.json | Muse Glimmer | – | yes, by a named rule | not tested |
OpenAI-Harmony.json | GPT-OSS | – | yes, by a named rule | not tested |
Phi-3.json | Phi 3 and 3.5 | – | yes, by a named rule | not tested |
RWKV-World.json | RWKV World | – | yes, by a named rule | not tested |
Seed-OSS-NoThink.json | Seed-OSS | NoThink | no named rule | not tested |
Seed-OSS.json | Seed-OSS | – | yes, by a named rule | not tested |
Vicuna.json | Vicuna | – | no named rule | not tested |
When to use Jinja
Uses the model's embedded Jinja chat template (including tool calls) for chat completions, falling back to KoboldCpp's universal formatting if it fails. Since 1.123 also covers the former --jinjatools.Default falseLauncher Quick Launch tab: Use JinjaSince v1.102All details (since 1.102) makes KoboldCpp use the model’s own template, including how it writes tool calls, and fall back to its universal formatting if the template fails. Path to a custom .jinja chat template that replaces the model's own.Default Launcher Loaded Files tab: Jinja TemplateSince v1.112All details replaces the model’s template with a file, and Extra JSON variables passed into the Jinja template renderer (llama.cpp's --chat-template-kwargs).Default Since v1.111All details passes variables to it. The launcher has “Use Jinja” on Quick Launch F30, and the server reports jinja in its capabilities F24. Try Jinja when replies look wrong with the default, or when you need tool calls to follow the model’s format. In our SDK test, tool calls came back parsed with AutoGuess and as plain text with --jinja on a 0.5B model, so it is not always the better choice F72: change one thing at a time and restart between changes.
Thinking models: turn thinking on or off
Some models write their reasoning before the answer. KoboldCpp returns it in its own field, reasoning_content, separate from the reply text (since 1.111). We ran Qwen3-0.6B with each switch and one question F80:
| Defaults | 794 characters | 288 | 10.2 |
--jinja | 794 characters | 288 | 10.8 |
--jinja --jinjathink true | 794 characters | 288 | 10.6 |
--jinja --jinjathink false | none | 12 | 0.7 |
--reasoningeffort none | 50 characters | 27 | 0.9 |
--chatcompletionsadapter ChatML-NoThink | none | 12 | 0.7 |
- Command line: Quick switch for thinking/reasoning in Jinja templates: default, true or false. Setting it enables Jinja.Default defaultLauncher Context tab: Jinja Thinking (default/true/false)Since v1.114All details takes
default,trueorfalseand switches Jinja on; Default reasoning effort for thinking models (none/low/medium/high/xhigh); API requests can override it.Default defaultLauncher Context tab: Think EffortSince v1.115All details takesnone,low,medium,highorxhigh, and API requests can override it. NoThink adapters exist for ChatML, GLM 4, GLM 4.7 and Seed-OSS. - Launcher: the Context tab has Jinja Thinking and Think Effort boxes (launcher).
- KoboldAI Lite and SillyTavern: we have not tested their thinking settings, so we do not describe them here.
Thinking costs time: in our test the reply took 14 times longer with it on. We did not measure whether answers get worse with it off, so we cannot say it is free. Per-family thinking facts are in the finder above.
Instruct mode in KoboldAI Lite and SillyTavern
Instruct mode means the app wraps your text in the model’s instruction format. Lite says “Instruct Mode Selected” when it first loads F31. In Lite the preset is the Instruct tag preset box in Settings, General. Lite 353 (inside 1.124.2) offers 29 presets, read from its source: KoboldCppAutomatic, Alpaca, ChatML, ChatML Non-Thinking, CommandR, Deepseek v2.5 & v3, Deepseek v3.1 Non-Thinking, Gemma 2 & 3, Gemma 4 E2B & E4B NoThink, Gemma 4 26B & 31B NoThink, Gemma 4 Thinking, GLM-4 & 4.5, GLM-4.5 Non-Thinking, GLM-4.7 Non-Thinking, Granite 4, Kimi ChatML, Llama 2 Chat, Llama 3 Chat, Llama 4 Chat, Metharme, Mistral Non-Tekken, Mistral Tekken, Muse Glimmer, Phi-3 Mini, Seed OSS, Seed OSS Non-Thinking, Vicuna, OpenAI Harmony and OpenAI Harmony Non-Thinking, plus [Custom] F104. The default, KoboldCppAutomatic, uses placeholders ({{[INPUT]}}, {{[OUTPUT]}}) that the server fills in with the model’s own template, and in our run Lite sent its instruct turns to the native /api/extra/generate/stream with a text-only model, and to /v1/chat/completions only when a vision model had a picture attached F105. Pick a named preset only when the default gives odd output; the finder above names the preset for each family. In SillyTavern’s Text Completion mode the app builds the prompt, so its instruct template must match the model; we have not checked SillyTavern’s preset names. See Kobold Lite and SillyTavern.
Symptoms of a wrong template
| The model writes "User:" turns or your lines | The prompt format does not match the model | Choose the right instruct preset (Lite, SillyTavern) or check AutoGuess for the chat API. |
| It never stops | The end-of-turn marker is wrong | Pick the adapter or preset of the right family. |
| It stops after a few words | A wrong marker, or a reply length that is too low | Check the template, then the response length: context and length. |
| <code><think></code> text or long reasoning | A thinking model | Turn thinking off: above. |
| Gibberish | May not be the template: a backend or sampler problem is more likely | See the error list and speed; try the default adapter first. |
Frequently asked questions
What is Jinja in KoboldCpp?
Jinja is the small template language that models carry inside their file to describe their chat format. With --jinja (since 1.102) KoboldCpp uses the model's own template for chat requests, including tool calls, and falls back to its universal formatting if that fails.
How do I disable thinking in KoboldCpp?
Start with --jinja --jinjathink false, or pick a NoThink adapter such as ChatML-NoThink with --chatcompletionsadapter. On Qwen3-0.6B both removed the reasoning completely and cut the reply from 288 tokens to 12. --reasoningeffort none shrank it but left a few words of reasoning.
How do I enable thinking?
A model that can think does by default. If it does not, use --jinja --jinjathink true, or --reasoningeffort low, medium or high on models that support an effort level. Reasoning comes back in its own field, reasoning_content, not in the reply text.
Which chat template should I use for Qwen3, Gemma 4 or Mistral?
Type the model name into the finder above. KoboldCpp's AutoGuess picks ChatML for Qwen, a Gemma rule for Gemma, and a Mistral rule for Mistral, and for most models you do not need to set anything.
Why does the model write my lines?
The prompt format does not match what the model was trained on, so it continues the pattern instead of stopping at its own turn. Check the template: AutoGuess for chat requests, or the instruct preset in Lite and SillyTavern.
Do I need to set a template for SillyTavern?
In Text Completion mode, yes: SillyTavern builds the prompt, so its instruct template must match the model. In Chat Completion mode KoboldCpp applies the model's template, as AutoGuess or Jinja.
What is AutoGuess?
The default chat adapter. It looks for marker text in the model's embedded template and compares it with a list of 33 rules in 1.124.2. The first chat request prints the rule it chose in the log.