ChatGPTNextWeb / ChatGPTNextWeb/NextChat
NextChat sends both temperature and top_p to Anthropic — Claude 4.x rejects with 400
- Dominant language
- TypeScript
- Stars
- 88.8k
- Forks
- 59.1k
- PR merge metrics
- No merged PRs in 30d
Description
## 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](https://docs.anthropic.com/en/api/messages):
> 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](https://github.com/lumetra-io/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](https://lumetra.io)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.