Bedrock Converse: skip sampling params for Opus 4.7/4.8

NousResearch/hermes-agent · cluster 36151 · agent

Data as of

Nothing open on GitHub. Fix merged in #45675. Check it covers your case.

The short answer

0open issues
0open PRs
6items grouped
Known?
Yes. 6 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #45675. Check it covers your case. No release data is tracked.
Tracker
The maintainers' tracker marks this resolved, deciding PR #45675. That is separate from the fix event.
Still open
Nothing open on GitHub.

Multiple fixes and a bug report addressing that temperature and top_p must be omitted for Claude Opus 4.7 and 4.8 on the AWS Bedrock Converse API, which rejects those parameters with a 400 error.

Open issues0

No open issues.

Open PRs0

No open pull requests.

Fixes on record

Merged to main. A stamp counts the issues a fix is linked to.

  • #45675 fix(bedrock): omit sampling params for restricted Claude models

    merged to main

    files: agent/bedrock_adapter.py, tests/agent/test_bedrock_adapter.py

    Show the diff
    • agent/bedrock_adapter.py
      @@ -935,11 +935,14 @@ def build_converse_kwargs(
           if system_prompt:
               kwargs["system"] = system_prompt
       
      -    if temperature is not None:
      -        kwargs["inferenceConfig"]["temperature"] = temperature
      +    from agent.anthropic_adapter import _forbids_sampling_params
       
      -    if top_p is not None:
      -        kwargs["inferenceConfig"]["topP"] = top_p
      +    if not _forbids_sampling_params(model):
      +        if temperature is not None:
      +            kwargs["inferenceConfig"]["temperature"] = temperature
      +
      +        if top_p is not None:
      +            kwargs["inferenceConfig"]["topP"] = top_p
       
           if stop_sequences:
               kwargs["inferenceConfig"]["stopSequences"] = stop_sequences
    • tests/agent/test_bedrock_adapter.py
      @@ -605,6 +605,74 @@ def test_includes_temperature_and_top_p(self):
               assert kwargs["inferenceConfig"]["temperature"] == 0.7
               assert kwargs["inferenceConfig"]["topP"] == 0.9
       
      +    def test_omits_sampling_params_for_bedrock_opus_4_7(self):
      +        from agent.bedrock_adapter import build_converse_kwargs
      +
      +        for model_id in (
      +            "anthropic.claude-opus-4-7-20260101-v1:0",
      +            "us.anthropic.claude-opus-4-7",
      +        ):
      +            kwargs = build_converse_kwargs(
      +                model=model_id,
      +                messages=[{"role": "user", "content": "Hi"}],
      +                temperature=0.7,
      +                top_p=0.9,
      +            )
      +
      +            assert "temperature" not in kwargs["inferenceConfig"]
      +            assert "topP" not in kwargs["inferenceConfig"]
      +
      +    def test_omits_sampling_params_for_bedrock_opus_4_8_variants(self):
      +        from agent.bedrock_adapter import build_converse_kwargs
      +
      +        for model_id in (
      +            "anthropic.claude-opus-4-8-20270101-v1:0",
      +            "us.anthropic.claude-opus-4-8",
      +            "anthropic.claude-opus-4.8",
      +        ):
      +            kwargs = build_converse_kwargs(
      +                model=model_id,
      +                messages=[{"role": "user", "content": "Hi"}],
      +                temperature=0.5,
      +                top_p=0.95,
      +            )
      +
      +            assert "temperature" not in kwargs["inferenceConfig"]
      +            assert "topP" not in kwargs["inferenceConfig"]
      +
      +    def test_keeps_sampling_params_for_bedrock_non_restricted_models(self):
      +        from agent.bedrock_adapter import build_converse_kwargs
      +
      +        for model_id in (
      +            "anthropic.claude-sonnet-4-6-20250514-v1:0",
      +            "anthropic.claude-haiku-4-5",
      +            "test-model",
      +        ):
      +            kwargs = build_converse_kwargs(
      +                model=model_id,
      +                messages=[{"role": "user", "content": "Hi"}],
      +                temperature=0.7,
      +                top_p=0.9,
      +            )
      +
      +            assert kwargs["inferenceConfig"].get("temperature") == 0.7
      +            assert kwargs["inferenceConfig"].get("topP") == 0.9
      +
      +    def test_bedrock_opus_strips_sampling_params_but_keeps_stop_sequences(self):
      +        from agent.bedrock_adapter import build_converse_kwargs
      +
      +        kwargs = build_converse_kwargs(
      +            model="us.anthropic.claude-opus-4-8",
      +            messages=[{"role": "user", "content": "Hi"}],
      +            temperature=0.7,
      +            top_p=0.9,
      +            stop_sequences=["END"],
      +        )
      +
      +        assert "temperature" not in kwargs["inferenceConfig"]
      +        assert "topP" not in kwargs["inferenceConfig"]
      +        assert kwargs["inferenceConfig"]["stopSequences"] == ["END"]
      +
           def test_includes_guardrail_config(self):
               from agent.bedrock_adapter import build_converse_kwargs
               guardrail = {

4 PRs closed without merging

From the close comments: done elsewhere 2 · merged via another change 2

  • #36175 fix(bedrock): guard temperature/top_p for Opus 4.7/4.8 on Converse · done elsewhere → 957a8ff, #45675
  • #36257 fix(bedrock): guard temperature/top_p for Opus 4.7/4.8 on Converse API (#36151) · merged via another change → #45675, #38717
  • #37912 fix(bedrock): skip temperature/top_p for Opus 4.7+ on Converse API · done elsewhere → 957a8ff, #36151, #45675
  • #38717 fix(agent): skip temperature/topP for Opus 4.7/4.8 on Bedrock (#36151) · merged via another change → 957a8ff, #45675, #36257
Closed issues · 1
  • Closed#36151bedrock_adapter: Opus 4.8 (and 4.7) on Bedrock Converse 400s with "temperature is deprecated" — _forbids_sampling_params guard never applied to Bedrock path
How this cluster was grouped
  • Link evidence (structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
  • Pairwise link density 0.33: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. 1.00 means every pair is linked.

Pick up a Lab task

Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.

Open the Lab

At a glance

Subsystem
agent
Merged PRs
#45675
Closed issues
1
Attempts
4 PRs closed without merging
Fix link checked
13 Jun 2026

For your agent

The same facts, typed.