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

Open Beginner friendly
#6,782 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
68/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
nextjs, typescript
Domain
api, backend

Research direction

Start in app/api/anthropic/route.ts, or locate the Anthropic request builder, and inspect how temperature and top_p are added to the outgoing payload. Reproduce the failure with a Claude 4.x model, then verify the request no longer sends both parameters and succeeds against Anthropic; the issue does not name an existing repository test.

Written by the indexing model from the issue text.

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:

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

Dominant language
TypeScript
Stars
88.8k
Forks
59k
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ChatGPTNextWeb/NextChat

All issues in ChatGPTNextWeb/NextChat

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.