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
How we test
On this page
  1. What a KoboldCpp chat template does
  2. AutoGuess: what KoboldCpp does by default
  3. The adapters bundled with KoboldCpp
  4. When to use Jinja
  5. Thinking models: turn thinking on or off
  6. Instruct mode in KoboldAI Lite and SillyTavern
  7. Symptoms of a wrong template

Chat template and thinking finder

Find the format and the thinking switch for your model.

Runs in your browser. Nothing is uploaded.

  • 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)
    Our tests
    : Qwen2.5-0.5B-Instruct was detected as ChatML (Qwen 2.5 based) F79; : Qwen3-0.6B thinking switches F80

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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
    not tested by us yet

    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.

How this works

The finder matches the name you type against a table of model families that we built on KoboldCpp’s real rule list and adapter files for 1.124.2. A family marked as tested is one we really ran; for the others the rule and adapter names are real, but we have not run the model.

Data: KoboldCpp 1.124.2 · 13 Nov 2026 · methodology

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 (, 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.

AutoGuess at worktest-data/r2-lnx-2026-11-14/thinking/autoguess-gemma-3-270m-it-Q8_0.txt · KoboldCpp 1.124.2 (F79)
Loading Chat Completions Adapter: …/kcpp_adapters/AutoGuess.json1print_info: general.name          = Gemma-3-270M-It2Chat completion heuristic: Google Gemma 33
  1. Loading Chat Completions Adapter: …/kcpp_adapters/AutoGuess.json: At start-up only the adapter list is loaded.
  2. print_info: general.name = Gemma-3-270M-It: The model.
  3. 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:

AutoGuess rules in 1.124.2
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 2System 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 Worldrwkv_ '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 and a name such as ChatML or Llama-3.

Adapter files bundled with KoboldCpp 1.124.2
Alpaca.jsonAlpaca style (older fine-tunes)–no named rulenot tested
AutoGuess-NoThink.jsonDetection list (30 rules) used when thinking is offNoThinkit is the listnot tested
ChatML-NoThink.jsonQwen 2.5 and Qwen 3NoThinkno named ruletested (see the family)
ChatML.jsonQwen 2.5 and Qwen 3, Phi 4–yes, by a named ruletested (see the family)
Command-R.jsonCommand R–yes, by a named rulenot tested
DeepSeek.jsonDeepSeek–yes, by a named rulenot tested
GLM-4-NoThink.jsonGLM 4 and GLM 4.7NoThinkno named rulenot tested
GLM-4.7-NoThink.jsonGLM 4 and GLM 4.7NoThinkno named rulenot tested
GLM-4.jsonGLM 4 and GLM 4.7–yes, by a named rulenot tested
Gemma-3.jsonGemma 2, Gemma 3, Gemma 3n–yes, by a named ruletested (see the family)
Gemma-4-26B-31B.jsonGemma 4 (26B and 31B)–yes, by a named rulenot tested
Gemma-4-E2B-E4B.jsonGemma 4 (E2B and E4B)–yes, by a named rulenot tested
Gemma-4-Thinking.jsonGemma 4 (26B and 31B), Gemma 4 (E2B and E4B)Thinkingno named rulenot tested
Granite-4.jsonGranite 4–yes, by a named rulenot tested
Jamba.jsonJamba–yes, by a named rulenot tested
Llama-2-Chat.jsonLlama 2 Chat–no named rulenot tested
Llama-3.jsonLlama 3, 3.1, 3.2, 3.3–yes, by a named rulenot tested
Llama-4.jsonLlama 4–yes, by a named rulenot tested
Metharme.jsonMetharme and Pygmalion–no named rulenot tested
MiniMax.jsonMiniMax–yes, by a named rulenot tested
Mistral-NonTekken.jsonMistral 7B and Mixtral (older)–yes, by a named rulenot tested
Mistral-Tekken.jsonMistral Nemo, Small, Large, Ministral, Magistral–yes, by a named rulenot tested
Muse-Glimmer.jsonMuse Glimmer–yes, by a named rulenot tested
OpenAI-Harmony.jsonGPT-OSS–yes, by a named rulenot tested
Phi-3.jsonPhi 3 and 3.5–yes, by a named rulenot tested
RWKV-World.jsonRWKV World–yes, by a named rulenot tested
Seed-OSS-NoThink.jsonSeed-OSSNoThinkno named rulenot tested
Seed-OSS.jsonSeed-OSS–yes, by a named rulenot tested
Vicuna.jsonVicuna–no named rulenot tested

When to use Jinja

(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. replaces the model’s template with a file, and 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:

Qwen3-0.6B Q4_K_M, one question, KoboldCpp 1.124.2, CPU
Defaults794 characters28810.2
--jinja794 characters28810.8
--jinja --jinjathink true794 characters28810.6
--jinja --jinjathink falsenone120.7
--reasoningeffort none50 characters270.9
--chatcompletionsadapter ChatML-NoThinknone120.7
  • Command line: takes default, true or false and switches Jinja on; takes none, low, medium, high or xhigh, 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

Symptoms and their usual cause
The model writes "User:" turns or your linesThe prompt format does not match the modelChoose the right instruct preset (Lite, SillyTavern) or check AutoGuess for the chat API.
It never stopsThe end-of-turn marker is wrongPick the adapter or preset of the right family.
It stops after a few wordsA wrong marker, or a reply length that is too lowCheck the template, then the response length: context and length.
<code>&lt;think&gt;</code> text or long reasoningA thinking modelTurn thinking off: above.
GibberishMay not be the template: a backend or sampler problem is more likelySee 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.