Oxlo.ai

Reasoning Models

Access models that show their thinking process via reasoning_content, with full control over whether reasoning is included in responses.


Overview

Reasoning models generate a chain-of-thought before producing their final answer. Oxlo standardizes this across all providers - whether the model uses a native reasoning_content field or <think> tags, you always receive a consistent reasoning_content field in the API response.

Key Feature: Oxlo automatically extracts <think>...</think> tags from model outputs and normalizes them into the reasoning_content field. The content field always contains only the final answer with thinking tags stripped.

Supported Models

ModelReasoningTool CallingNotes
deepseek-r1-70bUses <think> tags
deepseek-r1-8bLightweight reasoning
kimi-k2.6Native reasoning_content + tools
gpt-oss-120bOpen source agentic reasoning
kimi-k2.5Balanced reasoning
qwen-3-32bUses <think> tags in thinking mode
qwen-3-coder-30bCode-specialized reasoning
minimax-m2.5Coding and agentic tool use

The include_reasoning Parameter

Control whether the model's thinking process is included in responses. This parameter is available on all models - it has no effect on non-reasoning models.

ValueBehavior
trueDefault. The response includes both content (final answer) and reasoning_content (thinking process).
falseOnly content is populated. reasoning_content is null. Use this for cleaner output when you don't need the thinking chain.

Examples

With Reasoning (Default)

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.oxlo.ai/v1",
    api_key="YOUR_API_KEY"
)

response = client.chat.completions.create(
    model="deepseek-r1-70b",
    messages=[{"role": "user", "content": "What is 25 * 37?"}],
    max_tokens=1024,
    # include_reasoning=True  # This is the default
)

msg = response.choices[0].message
print("Thinking:", msg.reasoning_content)
# "Let me calculate 25 * 37.
#  25 * 37 = 25 * (40 - 3) = 1000 - 75 = 925"

print("Answer:", msg.content)
# "25 × 37 = 925"

Without Reasoning (Clean Output)

python
response = client.chat.completions.create(
    model="deepseek-r1-70b",
    messages=[{"role": "user", "content": "What is 25 * 37?"}],
    max_tokens=1024,
    include_reasoning=False  # Omit thinking content
)

msg = response.choices[0].message
print(msg.reasoning_content)  # None
print(msg.content)            # "25 × 37 = 925"

cURL Example

bash
# Without reasoning - cleaner JSON response
curl https://api.oxlo.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k2.6",
    "messages": [{"role": "user", "content": "Explain quantum entanglement"}],
    "include_reasoning": false,
    "max_tokens": 1024
  }'

How It Works

Different models express their reasoning in different ways. Oxlo normalizes all of them into a consistent format:

Model FormatOxlo Normalization
Native reasoning_content field (Kimi K2.6)Passed through as-is
<think>...</think> tags in content (DeepSeek R1, Qwen 3)Tags extracted → reasoning_content. Clean text → content.

Streaming: When streaming is enabled, reasoning_content is delivered in delta.reasoning_content chunks before the main content begins. Set include_reasoning: false to skip these chunks entirely.