Вирішення проблемПосібник
Помилка 400 у Claude API на temperature, top_p, top_k: як виправити
Ваш запит до Claude почав повертати 400 на версії API 2026-10-21? Видаліть temperature, top_p і top_k або закріпіть стару версію. Кроки всередині.

На цій сторінці
Ваш запит до Claude працював учора, ви перевели його на версію API 2026-10-21 (заголовок anthropic- або випуск SDK, зібраний для неї), і тепер він повертається з 400. Подивіться на тіло запиту: якщо в ньому є temperature, top_p або top_k, це і є причина. Видаліть ці три поля, і запит пройде.
Згідно з посібником з міграції Anthropic для версії 2026-10-21 (https://platform.claude.com/docs/en/api/migration-2026-10-21, перевірено 24 жовтня 2026 року), запит Messages або Message Batches, який надсилає будь-який із цих трьох, повертає помилку 400. Це трапляється навіть якщо значення є типовим для параметра. Шукайте статус 400 і ці назви полів у своєму запиті.
Як виглядає запит, що не проходить#
Припустімо, у вас є невеликий скрипт, який просить Claude підсумувати тікет і утримує відповідь стабільною за допомогою низької температури:
import anthropic
client = anthropic.Anthropic()
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
temperature=0.2, # <- this line now causes the 400
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)Те саме стосується звичайного HTTP. Якщо ви самі встановлюєте заголовок версії, це рядок, який переводить вас на нову поведінку:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2026-10-21" \
-H "content-type: application/json" \
-d '{"model": "<your Claude model>", "max_tokens": 500, "top_p": 0.9,
"messages": [{"role": "user", "content": "Hello"}]}'Виправлення: видаліть три параметри#
Видаліть temperature, top_p і top_k з кожного запиту Messages і Message Batches. Без них модель семплює зі своїми типовими значеннями (температура 1.0), точно так само, як це робив запит 2023-06-01, який їх не містить.
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
Останні мажорні версії SDK і CLI ant (2.0.0) більше не мають цих параметрів взагалі, тому після оновлення вам доведеться видалити їх зі свого коду. Помилка 400 виникає через запити, які надсилаються з anthropic- і все ще містять одне з трьох полів. Адаптери .NET IChatClient обрали м'якший шлях: тепер вони ігнорують ChatOptions., TopK і TopP. Точні номери версій SDK для кожної мови наведено на вкладках кроків оновлення в посібнику.
Якщо ви викликаєте API без SDK, версія — це заголовок anthropic-, а 2026-10-21 — значення, яке вмикає нове правило.
Чи зміняться відповіді після їх видалення?#
Залежить від моделі, і посібник тут конкретний.
- Claude 4.7 і новіші вже приймають лише типові значення семплювання. Для вас нічого не змінюється: вони семплювали за типовими значеннями раніше і роблять це досі.
- Моделі, які приймають інші значення, як-от Claude Sonnet 4.6: якщо ви знижували
temperature, щоб отримати більш узгоджений вивід, цей ефект зникає, і жодне інше налаштування його не замінює.
Якщо конкретний запит справді покладається на нетипове значення, у посібнику є два варіанти: припинити надсилати параметр і прийняти типове семплювання або залишити цей один запит на anthropic-.
Якщо ваші відповіді мають бути строго узгодженими, закладіть узгодженість у промпт: фіксований формат виводу, короткий приклад бажаної відповіді та перевірку у вашому коді, яка відхиляє все, що не відповідає формату. Це більше роботи, ніж одне число, але це не залежить від регулятора семплювання.
Швидкий контрольний список, коли ви бачите 400#
- Пошукайте в проєкті
temperature,top_p,top_k, включно з обгортками та спільними файлами конфігурації. - Перевірте пакетні завдання: правило застосовується до кожного запиту всередині Message Batch, створеного з 2026-10-21, тому перегляньте параметри кожного запиту в пакеті.
- Перевірте, що змінилося: мажорна версія SDK, версія CLI або заголовок
anthropic-.version - Видаліть поля або закріпіть цей запит за
2023-06-01, якщо йому потрібне нетипове значення. - Виконайте один запит, перш ніж перезапускати великий пакет.
Один шлях коду для Claude та API у стилі OpenAI#
Поширена конфігурація: один хелпер, який будує запит і надсилає його або до Anthropic Messages, або до ендпоінта Chat Completions у стилі OpenAI. Найпростіше виправлення — розділити параметри. Залиште temperature лише у гілці в стилі OpenAI і не додавайте його до гілки Messages.
У форматі Chat Completions це налаштування є звичайним полем запиту. На CheapTokens воно працює через адресу, сумісну з OpenAI, https:/. Ось запит до DeepSeek-V4-Flash (контекст 380K, до 32 768 вихідних токенів на відповідь), з повним ідентифікатором моделі з документації CheapTokens:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"temperature": 0.2,
"max_tokens": 300,
"messages": [{"role": "user", "content": "Summarise this ticket in two lines: ..."}]
}'Такий запит із 1 000 вхідних токенів і 300 вихідних токенів коштує $0.000045 за поточною ціною. DeepSeek-V4-Flash має одну ціну в будь-який час доби, без пікових годин, і один баланс покриває всі моделі. Для того самого шляху коду з вікном контексту 390K також є GLM-5.3-Flash (zai-, до 8 192 вихідних токенів). Поточні ціни для всіх моделей на сторінці цін.
Щоб побачити, як поводиться це налаштування, прочитайте Системний промпт і температура: що вони роблять і як їх встановлювати. Щоб викликати Messages у форматі Claude з Python, дивіться Anthropic Python SDK з CheapTokens. Базова адреса та налаштування ключа — у документації CheapTokens.



