Skip to content

Send the room's reasoning setting as OpenRouter's unified parameter, with an explicit off value - #6124

Draft
jurgenwerk wants to merge 1 commit into
mainfrom
ai-bot-reasoning-off-value
Draft

jurgenwerk wants to merge 1 commit into
mainfrom
ai-bot-reasoning-off-value

Conversation

@jurgenwerk

Copy link
Copy Markdown
Contributor

Kimi K2.7 Code thought for ten minutes before writing anything, and setting its ModelConfiguration card to medium effort changed nothing. The room carried the setting and the bot sent it, as the OpenAI-style reasoning_effort field. OpenRouter lists reasoning and include_reasoning among the parameters that model accepts, not reasoning_effort, so the setting never reached the provider.

card.reasoningEffort ──► active-llm event ──► bot request
  ''  / null (unset)                          (no parameter: provider default)
  'none'                                      reasoning: { enabled: false }
  'low' | 'medium' | ...                      reasoning: { effort }
  • The bot sends the unified reasoning parameter, which OpenRouter translates per provider: an effort level where the model grades its thinking, a budget where it budgets it, on or off where that is all it has.
  • A card with no setting serializes as null, so every unset model already carried null and it could not mean "off". Null and undefined both leave the parameter out, which is what the old field did in effect.
  • The field gains none, labelled "Off (no thinking)", as the explicit off switch, and the empty option is relabelled "Not specified". The bot accepts none alongside the levels.

The boxel-catalog side, the labels and the Kimi card set to none, is a separate PR there. A one-run smoke on Kimi after both land tells whether the provider honors the switch.

🤖 Generated with Claude Code

…with an explicit off value

A Kimi K2.7 Code card set to medium effort changed nothing: the bot sent
the OpenAI-style `reasoning_effort` field, which that provider does not
list among its parameters, and the model kept thinking for minutes per
turn. The unified `reasoning` parameter is the one OpenRouter translates
for every provider, so the setting now goes out as `reasoning: { effort }`.

A card with no setting serializes as null, so null was never a usable
"off": every unset model carried it. The field gains 'none' as the
explicit off switch, sent as `reasoning: { enabled: false }`, for models
whose thinking is on or off with no levels in between. Null and undefined
both leave the parameter out, as before in effect.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Host Test Results

    1 files      1 suites   2h 7m 50s ⏱️
4 803 tests 4 788 ✅ 14 💤 0 ❌ 1 🔥
4 818 runs  4 802 ✅ 14 💤 1 ❌ 1 🔥

Results for commit 9662abb.

For more details on these errors, see this check.

Realm Server Test Results

    1 files    223 suites   1h 19m 14s ⏱️
3 002 tests 3 002 ✅ 0 💤 0 ❌
3 041 runs  3 041 ✅ 0 💤 0 ❌

Results for commit 9662abb.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant