Skip to content

thinking: disabled leaves reasoning on for OpenAI models that reason by default #112

Description

@CMGS

An Anthropic-dialect thinking: {"type": "disabled"} sent to an OpenAI-family upstream maps to no effort at all (openai_engine::reasoning_effort documents that disabled leaves the vendor default). That was harmless while OpenAI models did not reason by default. It no longer is:

  • gpt-6-sol, gpt-6-luna (and gpt-6-astra) reason when no effort is sent; live, temperature: 0.5 without an effort is a 400 on all three.
  • Chat completions refuse function tools while a gpt-5.6 or gpt-6 model reasons: "Function tools with reasoning_effort are not supported for gpt-6-sol in /v1/chat/completions. To use function tools, use /v1/responses or set reasoning_effort to 'none'."

So POST /v1/messages {"model": "gpt-6-sol", "thinking": {"type": "disabled"}, "tools": [...]} against a chat-protocol gpt-6-sol gets a vendor 400. The same request against a Converse id (us.openai.gpt-6-sol) or a Responses-protocol model reasons and bills reasoning tokens the client disabled.

The chat surface's OpenRouter-style reasoning: {enabled: false} already maps to none, so the two ways of saying "no reasoning" behave differently today.

Proposal: map disabled to effort none on the OpenAI wires and Converse reasoning_config. openai_effort then clamps it per model: Astra becomes low, GPT-5.0 becomes minimal. This changes behavior for every OpenAI-family upstream, so it needs a decision before a PR.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions