Skip to content

fix(beam): reject unsupported reasoning-off requests - #16785

Merged
luckyq merged 5 commits into
ai-dynamo:luckyq/beam-1.0-releasefrom
neilkg:neil/beam-reasoning-validation-20261019
Oct 19, 2026
Merged

luckyq merged 5 commits into
ai-dynamo:luckyq/beam-1.0-releasefrom
neilkg:neil/beam-reasoning-validation-20261019

Conversation

@neilkg

@neilkg neilkg commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Beam does not support non-thinking generation, but a request with chat_template_kwargs: {"enable_thinking": false} currently makes Dynamo move the model's analysis into answer content and report zero reasoning tokens. thinking: false has the same effect.

Reject an effective client request to disable Beam reasoning with an actionable HTTP 400 before prompt rendering or backend dispatch. Reuse the existing alias normalization, including top-level thinking and reasoning_effort: "none", without introducing another switch or changing precedence. Validate before deployment defaults so the error describes the client's request. Omitted effort and reasoning_effort: null remain accepted; the string "none" requests reasoning off.

Use a shared reasoning_is_mandatory model policy for both request validation and response reconstruction; Beam is the only family registered by this change. The generic validator reuses the existing family selection and thinking-alias normalization. Reconstructed Beam responses retain their analysis/content split and reasoning-token accounting even if an older request bypassed admission validation.

Other model families and Beam's existing history behavior remain unchanged: supplied reasoning is preserved, preserve_thinking=false retains its compatibility behavior, and the default for allow_missing_thinking is unchanged. Requiring reasoning in every historical assistant message is a separate serving policy from rejecting an explicit request to disable future reasoning.

Targets luckyq/beam-1.0-release, the Beam integration branch used by #16702. This is a frontend fix and does not require changes to the inference engines or parser crate.

Closes #16783.

Validation

  • cargo test -p dynamo-llm --no-default-features --lib beam: 24 passed.
  • cargo test -p dynamo-llm --no-default-features --lib reasoning_effort: 5 passed.
  • cargo test -p dynamo-llm --no-default-features --lib reasoning_usage: 4 passed.
  • Two focused regressions cover streaming/non-streaming admission, reasoning-off aliases, the HTTP 400 mapping and public error message, response-policy selection, history preservation, omitted/null effort, and another model's supported non-thinking mode. Existing Beam parser and shared reasoning-token accounting tests provide the parser/usage coverage.
  • cargo fmt --all -- --check, changed-file pre-commit hooks, and git diff --check: passed.
  • GPU/container end-to-end validation was not rerun; these checks exercise the real frontend preprocessor, parser, response policies, and local mock model metadata without loading model weights.

Signed-off-by: neilkg <33635204+neilkg@users.noreply.github.com>
@neilkg
neilkg requested a review from a team as a code owner October 19, 2026 14:27
@copy-pr-bot

copy-pr-bot Bot commented Oct 19, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 14:27 — with GitHub Actions Inactive
@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 14:27 — with GitHub Actions Inactive
@github-actions github-actions Bot added the fix label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

👋 Hi neilkg! Thank you for contributing to ai-dynamo/dynamo.

Just a reminder: The NVIDIA Test Github Validation CI runs an essential subset of the testing framework to quickly catch errors.Your PR reviewers may elect to test the changes comprehensively before approving your changes.

🚀

@github-actions github-actions Bot added external-contribution Pull request is from an external contributor frontend `python -m dynamo.frontend` and `dynamo-run in=http|text|grpc` labels Oct 19, 2026
Signed-off-by: neilkg <33635204+neilkg@users.noreply.github.com>
@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 15:04 — with GitHub Actions Inactive
Signed-off-by: neilkg <33635204+neilkg@users.noreply.github.com>
@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 15:17 — with GitHub Actions Inactive
Signed-off-by: neilkg <33635204+neilkg@users.noreply.github.com>
@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 15:37 — with GitHub Actions Inactive
@neilkg neilkg closed this Oct 19, 2026
@neilkg neilkg reopened this Oct 19, 2026
@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 17:02 — with GitHub Actions Inactive
Signed-off-by: neilkg <33635204+neilkg@users.noreply.github.com>
@neilkg
neilkg temporarily deployed to external_collaborator October 19, 2026 18:23 — with GitHub Actions Inactive
@luckyq
luckyq merged commit d4b73de into ai-dynamo:luckyq/beam-1.0-release Oct 19, 2026
29 checks passed
@neilkg
neilkg deleted the neil/beam-reasoning-validation-20261019 branch October 19, 2026 19:18

This branch was previously deployed

1 inactive deployment
external_collaborator — 30c74fae Deployed Oct 19, 2026 by neilkg via ok-to-test #35260
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external-contribution Pull request is from an external contributor fix frontend `python -m dynamo.frontend` and `dynamo-run in=http|text|grpc` size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants