Integration guides · 2026-10-17
reasoning_effort on Jais 3: the difference between low and high
On ifm/jais-3-mova-36b-a4b, reasoning_effort high reasons first and low answers directly; medium and none are refused. Compare both with one question.
Short answer: high is the default, low turns reasoning off
LLMTR is a gateway that gives access to language models from different providers through one OpenAI-compatible API. You call Jais 3 with the id ifm/jais-3-mova-36b-a4b on the /v1/chat/completions endpoint at https://llmtr.com/v1. This row accepts two values for reasoning_effort: high and low. If you leave the field out, high applies and the model reasons before answering; with low, reasoning is off and the model answers directly.
IFM's model card recommends high as the reasoning level at all times and does not recommend running without reasoning, which is low, except for research on reasoning levels. That recommendation makes it sensible to use low only for short jobs whose answers you can check.
Should you use reasoning_effort low or high on Jais 3?
The Python example below asks the same Arabic question at both levels and prints, for each, the answer, the completion_tokens value and the length of the reasoning. With high, the reasoning comes back separately in the response's reasoning_content field and the answer stays in content. With low, reasoning_content comes back empty.
Use high for questions that need multi-step arithmetic, comparison or applying rules. low reduces token spending on jobs such as classification, short rewrites or a one-line answer in a known format. With low, on a multi-step question the model may write its working straight into the answer or return a wrong result; for such jobs, check the result yourself or use high.
At both levels, the reasoning tokens and the answer are counted in completion_tokens and fall under the max_tokens limit. With high, a short max_tokens cuts reasoning off before the answer is written; if finish_reason is length, raise the limit.
An OpenAI Python SDK example that sends the same Arabic question to ifm/jais-3-mova-36b-a4b with reasoning_effort high and low and prints the answer, the completion_tokens value and the length of the reasoning.
import os
from openai import OpenAI
client = OpenAI(base_url="https://llmtr.com/v1", api_key=os.environ["LLMTR_API_KEY"])
QUESTION = "كم عدداً صحيحاً موجباً أقل من 200 يقبل القسمة على 6 ولا يقبل القسمة على 4؟ أعط الرقم فقط."
for effort in ["high", "low"]:
response = client.chat.completions.create(
model="ifm/jais-3-mova-36b-a4b",
messages=[{"role": "user", "content": QUESTION}],
reasoning_effort=effort,
max_tokens=4096,
)
message = response.choices[0].message
reasoning = getattr(message, "reasoning_content", None) or ""
print(effort, "| answer:", (message.content or "").strip()[:80])
print(" completion_tokens:", response.usage.completion_tokens, "| reasoning chars:", len(reasoning))
Accepted and refused values
The row carries only two levels. Other values return 400 invalid_request before the request reaches the model, and the error message lists the accepted levels. Sending enabled false in the reasoning field is the same as low.
| Value | Result | Suited to |
|---|---|---|
| high (or no field) | The model reasons before answering; the trace is in reasoning_content | Multi-step questions, applying rules, agent loops |
| low | Reasoning off; the model answers directly | Classification, short rewrites |
| reasoning: { enabled: false } | Same as low | Clients that switch reasoning off |
| medium, none, minimal | 400 invalid_request | Not used |
Tying the level to your flow
One application can use both levels. First run a quick classification with low, then reprocess only the messages that turn out to be complex with high. That way the daily allowance goes to the jobs that need reasoning.
You can also pick the level with a slug suffix: sending ifm/jais-3-mova-36b-a4b:low as the model is the same as reasoning_effort low. That helps in clients where you cannot add fields to the request body: you change only the model name.
Showing or keeping the reasoning
The reasoning_content that comes back at the high level shows how the model reached the answer. It helps when you look into why a question was answered wrongly, but it is not text for end users: it is long, it may not be in the answer's language, and it is not the answer itself. Show only the content field in the user interface.
If you log the reasoning, apply the same data rules as to the answer; it can carry information from the user's prompt. You do not need to send it back in later requests of a multi-turn conversation, so you do not have to keep it either.
When you send a request with stream true, the reasoning chunks arrive in the reasoning_content field and the answer chunks in the content field, separately. By writing only the content chunks to the screen, your interface can stream the answer itself to the user.
Free period, daily allowance and the data note
The row is free until 5 November 2026, 23:59 (TRT), and every account has an allowance of 200,000 tokens a day for this model, and new accounts start with a smaller allowance on their first day; input and output are added up. Because reasoning tokens count as output, the same question spends more of the allowance at high than at low. When the allowance is used up the API returns 429, the Retry-After header tells you when you can try again, and the allowance renews at 00:00 (TRT). From 6 November 2026, 00:00 the model returns 410 model_retired.
According to the data note on the LLMTR model page, prompts and completions may be logged by the provider and used to improve the model; do not send sensitive, personal or customer data.
Choose a reasoning level on Jais 3
Send the same question with high and low, compare the completion_tokens values and choose the level that fits your job.
- Pick a question. Pick a typical question from your application; a multi-step question and a short classification question can be tried separately.
- Request at both levels. Send the question to ifm/jais-3-mova-36b-a4b with reasoning_effort high and low, and record the answers and the completion_tokens values.
- Decide. If the answer is accurate enough with low, use low; if not, stay on high and set max_tokens so that it leaves room for reasoning.
Frequently asked questions
How do I turn reasoning off on Jais 3?
Send reasoning_effort low, or write enabled false in the reasoning field. The value none returns 400 on this model.
Does Jais 3 accept the medium level?
No. The row carries only high and low; medium, none and minimal return 400 invalid_request, and the error message lists the accepted levels.
Do reasoning tokens count toward the daily allowance?
Yes. Reasoning tokens count as output, and the daily allowance (200,000 tokens, smaller on a new account's first day) is counted as input plus output. The same question spends more of the allowance at high.