Skip to content

NextChat sends both temperature and top_p to Anthropic — Claude 4.x rejects with 400 #6782

@brutus-gr

Description

@brutus-gr

Summary

NextChat's Anthropic adapter sends both temperature and top_p on every request. Claude 4.x (Sonnet 4.5, Haiku 4.5, Opus 4) explicitly rejects this combination:

{"type":"error","error":{"type":"invalid_request_error","message":"temperature and top_p cannot both be specified"}}

Claude 3.x silently accepts both, which is why this hasn't surfaced as a bug before — but the moment a user picks a 4.x model, every message errors out.

Reproduction

  1. Run NextChat with ENABLE_MCP=true (or without, doesn't matter — the bug is in the base Anthropic adapter).
  2. Pick claude-sonnet-4-5 (or any Claude 4 model).
  3. Send any message.
  4. Response: 400 Bad Request from Anthropic with the message above.

Confirmed via Playwright-driven smoke test on yidadaa/chatgpt-next-web:latest (NextChat v2.16.1) against https://api.anthropic.com/v1/messages 2026-05-20.

Fix

Per Anthropic's docs:

You should either alter temperature or top_p, but not both.

For the Anthropic adapter specifically, the safest fix is:

  • Default to sending only temperature (the more commonly-used param)
  • Omit top_p entirely from outgoing Anthropic requests unless the user has explicitly customized it AND set temperature to the model default

Or even simpler: detect the model family at request-build time and drop one of the two params when targeting claude-*-4-*.

Workarounds users hit today

  1. Use Claude 3.x (works, accepts both)
  2. Use a non-Anthropic provider (OpenAI / Gemini / etc.)
  3. Edit app/api/anthropic/route.ts (or wherever the payload is built) and drop top_p before the fetch

Filing because this blocks any third-party integration that pairs NextChat with Claude 4.x — we hit it via our durable-memory recipe (engram-nextchat) and worked around it with a Playwright interceptor to strip top_p.

Version

NextChat v2.16.1 (yidadaa/chatgpt-next-web:latest as of 2026-05-20)

Lumetra

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions