Thinking mode enables the model to reason step by step before producing its final answer. This provides higher quality outputs for complex tasks like math, logic, code generation, and multi-step analysis.
Closed models usually hide their reasoning, returning only a summary or nothing at all. Because Subconscious serves open models, the model’s reasoning is completely visible. You get the full, unaltered chain of thought, giving you total transparency for debugging, auditing, and trust.
When thinking mode is enabled, the model generates internal reasoning tokens (wrapped in <think> tags) before the final response. These reasoning tokens help the model work through complex problems but are included in your output token usage.
Each wire format controls thinking with its own syntax.With the OpenAI format,
pass the Subconscious extension chat_template_kwargs with enable_thinking: true via the
extra_body parameter.With the Anthropic format, use the native thinking parameter
({"type": "enabled", "budget_tokens": ...}):
Both controls enable the same underlying feature. The OpenAI format toggles it with the
enable_thinking extension; the Anthropic format uses the native thinking config and also
lets you cap reasoning with budget_tokens.
With the OpenAI format, the model’s response includes reasoning wrapped in <think> tags
followed by the final answer:
<think>Let me calculate this step by step.127 * 849 = 127 * 800 + 127 * 49127 * 800 = 101,600127 * 49 = 6,223101,600 + 6,223 = 107,823107,823 + 3,621 = 111,444</think>The answer is **111,444**.
With the Anthropic format, the reasoning is returned as a separate thinking content block
before the text block, rather than inline tags:
{ "content": [ {"type": "thinking", "thinking": "Let me calculate this step by step...", "signature": ""}, {"type": "text", "text": "The answer is **111,444**."} ]}
Thinking mode works with streaming. The reasoning tokens stream first, followed by the final answer:
stream = client.chat.completions.create( model="subconscious/tim-qwen3.6-27b", messages=[{"role": "user", "content": "Solve: If 3x + 7 = 22, what is x?"}], stream=True, extra_body={ "chat_template_kwargs": {"enable_thinking": True}, },)for chunk in stream: content = chunk.choices[0].delta.content if content: print(content, end="", flush=True)
with client.messages.stream( model="subconscious/tim-qwen3.6-27b", max_tokens=2048, thinking={"type": "enabled", "budget_tokens": 2000}, messages=[{"role": "user", "content": "Solve: If 3x + 7 = 22, what is x?"}],) as stream: for event in stream: if event.type == "content_block_delta": if event.delta.type == "thinking_delta": print(event.delta.thinking, end="", flush=True) elif event.delta.type == "text_delta": print(event.delta.text, end="", flush=True)