Docs

Run the models

Prompt format and sampling

Chat template, thinking and non-thinking modes, and the sampling and output limits each model card recommends.

Verified for
Noema 1.5 · Noema 2B
Applies to
Transformers · llama.cpp · MLX · vLLM
Last reviewed
On this page

Use the embedded chat template

Every repository ships the model's chat template: chat_template.jinja beside the Transformers and MLX weights, and embedded in each GGUF file. Let your runtime apply it instead of writing prompt markup by hand: apply_chat_template in Transformers, --jinja in llama.cpp, and the chat endpoints of llama.cpp and vLLM.

  • End-of-sequence token: <|im_end|>. Padding token: <|endoftext|>.
  • Text in, text out. The base model's vision encoder is not included.

Thinking and non-thinking

Noema 1.5 4B thinks by default and switches through the chat template. Noema 1.5 2B is recommended without thinking for instructions, structured output and code. Noema 2B was trained and evaluated without thinking.

ModelModesContext
Noema 1.5 4BThinking (default) · non-thinking, selected through the chat template262,144 tokens (architecture limit); outputs evaluated to 81,920
Noema 1.5 2BNon-thinking (recommended) · thinking262,144 tokens (architecture limit); independently validated to 24,576
Noema 2BNon-thinking (trained and evaluated); thinking mode is not supported262,144 tokens (architecture limit)
inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    enable_thinking=False,
    return_dict=True,
    return_tensors="pt",
)

Read the answer

With thinking on, the reasoning trace comes first and ends at </think>; the answer follows. Split on the last </think>, or let vLLM's qwen3 reasoning parser return the two separately.

Python
reasoning, _, answer = text.rpartition("</think>")
print(answer.strip())

In multi-turn use, keep only the final answers in the conversation history. The Noema 1.5 4B chat template already drops earlier reasoning traces. In the Noema app, Reasoning history controls this for supported GGUF models.

Sampling for Noema 1.5 4B

UseThinkingTemperatureTop-pTop-kPresence penaltyOutput limit
General reasoning (recommended default)On0.60.9520032,768
Competition math and programming (Deep only)On0.60.9520081,920
Qwen's general thinking presetOn1.00.95201.532,768
Direct answers, chat and structured outputOff0.70.8201.58,192 to 16,384

Thinking is on by default; pass enable_thinking=False to the chat template to answer directly. Avoid greedy decoding with thinking on, which makes repetition more likely in any reasoning model. In multi-turn use, keep only final answers in the history.

Sampling for Noema 1.5 2B

UseThinkingTemperatureTop-pTop-kPresence penaltyOutput limit
Instructions, structured output and code (recommended)Off0 (greedy)1Off0Set a limit
Harder reasoningOn1.00.95201.5Set a limit

The packaged defaults are greedy and stop at <|im_end|>. Deployments should enforce output limits and detect repeated spans, especially with thinking on.

Sampling for Noema 2B

UseThinkingTemperatureTop-pTop-kPresence penaltyOutput limit
Non-thinking (trained and evaluated)Off0.70.8201.5Set a limit

Do not use greedy decoding: this model family can enter repetition loops under greedy sampling. The presence penalty applies on engines that support it, such as vLLM and llama.cpp.