Skip to content

Reasoning Levels

Some Orchard model profiles support native thinking. For those models, reasoning effort controls how much work the model can spend before answering.

Effort Values

Effort Use it for
minimal Fast classification, extraction, or routing
low Simple Q&A and short transformations
medium Normal analysis and planning
high Difficult reasoning, code, math, or tool plans

Passing reasoning=True uses medium.

Responses API

from orchard.engine.inference_engine import InferenceEngine

MODEL = "google/gemma-4-E2B-it"

with InferenceEngine(load_models=[MODEL]) as engine:
    client = engine.client()
    response = client.responses(
        MODEL,
        input="Solve this carefully: if a train leaves at noon...",
        reasoning={"effort": "high"},
        temperature=0.0,
        max_output_tokens=256,
    )
    print(response.output_text)

You can also pass an effort string:

response = client.responses(
    MODEL,
    input="Classify this message.",
    reasoning="minimal",
    max_output_tokens=32,
)

Direct Chat Client

For direct chat calls, pass reasoning_effort.

response = client.chat(
    MODEL,
    [{"role": "user", "content": "Plan a small database migration."}],
    reasoning_effort="medium",
    temperature=0.0,
    max_generated_tokens=256,
)

HTTP

curl http://127.0.0.1:8000/v1/responses \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemma-4-E2B-it",
    "input": "Plan a small database migration.",
    "reasoning": {"effort": "medium"},
    "temperature": 0.0,
    "max_output_tokens": 256
  }'

Streaming Reasoning Events

Responses streams can include reasoning events when the model emits reasoning content.

events = client.responses(
    MODEL,
    input="Think through a migration plan.",
    reasoning={"effort": "high"},
    stream=True,
    max_output_tokens=256,
)

for event in events:
    if event.type == "response.reasoning.delta":
        print("[reasoning]", event.delta)
    elif event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

If a model profile does not support native thinking, Orchard runs the request as a normal generation request.