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
- Run NextChat with
ENABLE_MCP=true (or without, doesn't matter — the bug is in the base Anthropic adapter).
- Pick
claude-sonnet-4-5 (or any Claude 4 model).
- Send any message.
- 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
- Use Claude 3.x (works, accepts both)
- Use a non-Anthropic provider (OpenAI / Gemini / etc.)
- 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
Summary
NextChat's Anthropic adapter sends both
temperatureandtop_pon every request. Claude 4.x (Sonnet 4.5, Haiku 4.5, Opus 4) explicitly rejects this combination: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
ENABLE_MCP=true(or without, doesn't matter — the bug is in the base Anthropic adapter).claude-sonnet-4-5(or any Claude 4 model).Confirmed via Playwright-driven smoke test on
yidadaa/chatgpt-next-web:latest(NextChat v2.16.1) againsthttps://api.anthropic.com/v1/messages2026-05-20.Fix
Per Anthropic's docs:
For the Anthropic adapter specifically, the safest fix is:
temperature(the more commonly-used param)top_pentirely from outgoing Anthropic requests unless the user has explicitly customized it AND set temperature to the model defaultOr 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
app/api/anthropic/route.ts(or wherever the payload is built) and droptop_pbefore the fetchFiling 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:latestas of 2026-05-20)— Lumetra