ChatGPTNextWeb / ChatGPTNextWeb/NextChat

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

Open
#6,782 0 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.