Skip to content

Support for reasoning=ReasoningEffort(effort="none") to explicitly disable reasoning for non-openAI models #1764

@okdolly

Description

@okdolly

Please read this first

Currently, when using models that differ from OpenAI's reasoning format (like Qwen3 etc.) through custom providers like LiteLLM, there's no way to explicitly pass reasoning_effort="none" to the underlying API. Setting ModelSettings(reasoning=None) is treated as a default/unset value rather than an explicit instruction to disable reasoning.

See Qwen API doc:

Image

Feature Request

Could you add "none" to the enum?
https://github.com/openai/openai-python/blob/main/src/openai/types/shared_params/reasoning_effort.py

class Reasoning(BaseModel):
    effort: Optional[ReasoningEffort] = None

ReasoningEffort: TypeAlias = Optional[Literal["minimal", "low", "medium", "high"]]

Describe the question

When integrating non-OpenAI models through LiteLLM or other providers, some models require an explicit reasoning_effort="none" parameter to indicate that reasoning should be disabled. However:

  1. ModelSettings(reasoning=None) doesn't pass any reasoning parameter to the provider
  2. Reasoning(effort="none") is not a valid option (only "minimal", "low", "medium", "high" are allowed)
  3. Using extra_body or extra_args to pass reasoning_effort can cause conflicts with LiteLLM's own parameter handling

Current Behavior

# This doesn't pass reasoning_effort to the provider at all
ModelSettings(reasoning=None)  # Treated as unset/default

# This raises a validation error
ModelSettings(reasoning=Reasoning(effort="none"))  # "none" is not a valid effort level

# This causes duplicate parameter errors in LiteLLM
ModelSettings(extra_body={"reasoning_effort": "none"})  # Conflicts with LiteLLM's reasoning_effort parameter

Expected Behavior

# Should explicitly pass reasoning_effort="none" to the provider
ModelSettings(reasoning=Reasoning(effort="none"))

Debug information

  • Agents SDK version: (e.g. v0.0.3)
  • Python version (e.g. Python 3.10)

Repro steps

Ideally provide a minimal python script that can be run to reproduce the issue.

Expected behavior

A clear and concise description of what you expected to happen.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions