Reasoning efforts this model accepts
{% for value in efforts %}
{% endfor %}
{% if detected %}
{{ icon('sparkle' if detected == 'success' else 'warning', 'alert__icon') }}
{{ detected_message }}
{% endif %}
{#
Reading the answer rather than asking somebody to know it. llama-server
publishes the loaded model's Jinja chat template on `/props`, and that
template is the thing that rejects an effort it does not recognise --
so the accepted set is written down in the one authoritative place.
Endpoints without that route (OpenAI, vLLM) say so rather than
pretending the model accepts nothing.
Its own form, because this page's main form is a PUT of everything and
a detect must not carry half-edited fields with it.
#}
The vocabulary is not the same for every model, and
sending one a model does not know is not ignored — it is rendered into
the model's chat template, which raises and fails the whole reply.
gpt-oss takes low/medium/high; Bonsai takes
low/medium/xhigh and refuses
high; OpenAI has added
minimal, xhigh and
max at various points.
Tick none and the common three are offered, which is right for almost
everything. If an endpoint ever refuses one anyway, that reply is
retried without it and this list corrects itself — so this is worth
setting by hand only to save that one round trip.
A seed, not a per-request setting: it is copied onto a chat when
the chat is created and when somebody switches to this model, and from
then on the chat's own value is what is sent. Changing it here therefore
does nothing to chats that already exist. The composer's picker shows
whichever level is actually in force, so what somebody sees there is
what goes out. Anyone can change it per chat with
/effort, and the control only appears on a
model marked Reasoning above.
Sent two ways at once, because there is no one field that works: OpenAI
and vLLM read reasoning_effort, while
llama.cpp drops it silently and reads only
chat_template_kwargs — which is the route by
which it reaches gpt-oss. Both go out, and only on a chat that has an
effort set, so an endpoint strict about unknown parameters is untouched
until somebody chooses one.