Назад до блогу

Вирішення проблемПосібник

Помилка 400 у Claude API на temperature, top_p, top_k: як виправити

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

Автор: CheapTokens TeamОпубліковано 4 хв читання

Картка в стилі термінала: помилка 400 для temperature, top_p і top_k у Claude API
На цій сторінці
  1. Як виглядає запит, що не проходить
  2. Виправлення: видаліть три параметри
  3. Чи зміняться відповіді після їх видалення?
  4. Швидкий контрольний список, коли ви бачите 400
  5. Один шлях коду для Claude та API у стилі OpenAI

Ваш запит до Claude працював учора, ви перевели його на версію API 2026-10-21 (заголовок anthropic-version або випуск 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 підсумувати тікет і утримує відповідь стабільною за допомогою низької температури:

python
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. Якщо ви самі встановлюєте заголовок версії, це рядок, який переводить вас на нову поведінку:

bash
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, який їх не містить.

python
reply = client.messages.create(
    model="<your Claude model>",
    max_tokens=500,
    messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
До і після: запит із temperature повертає 400, той самий запит без нього проходить
Той самий запит до і після видалення temperature

Останні мажорні версії SDK і CLI ant (2.0.0) більше не мають цих параметрів взагалі, тому після оновлення вам доведеться видалити їх зі свого коду. Помилка 400 виникає через запити, які надсилаються з anthropic-version: 2026-10-21 і все ще містять одне з трьох полів. Адаптери .NET IChatClient обрали м'якший шлях: тепер вони ігнорують ChatOptions.Temperature, TopK і TopP. Точні номери версій SDK для кожної мови наведено на вкладках кроків оновлення в посібнику.

Якщо ви викликаєте API без SDK, версія — це заголовок anthropic-version, а 2026-10-21 — значення, яке вмикає нове правило.

Чи зміняться відповіді після їх видалення?#

Залежить від моделі, і посібник тут конкретний.

  • Claude 4.7 і новіші вже приймають лише типові значення семплювання. Для вас нічого не змінюється: вони семплювали за типовими значеннями раніше і роблять це досі.
  • Моделі, які приймають інші значення, як-от Claude Sonnet 4.6: якщо ви знижували temperature, щоб отримати більш узгоджений вивід, цей ефект зникає, і жодне інше налаштування його не замінює.

Якщо конкретний запит справді покладається на нетипове значення, у посібнику є два варіанти: припинити надсилати параметр і прийняти типове семплювання або залишити цей один запит на anthropic-version: 2023-06-01.

Якщо ваші відповіді мають бути строго узгодженими, закладіть узгодженість у промпт: фіксований формат виводу, короткий приклад бажаної відповіді та перевірку у вашому коді, яка відхиляє все, що не відповідає формату. Це більше роботи, ніж одне число, але це не залежить від регулятора семплювання.

Швидкий контрольний список, коли ви бачите 400#

  1. Пошукайте в проєкті temperature, top_p, top_k, включно з обгортками та спільними файлами конфігурації.
  2. Перевірте пакетні завдання: правило застосовується до кожного запиту всередині Message Batch, створеного з 2026-10-21, тому перегляньте параметри кожного запиту в пакеті.
  3. Перевірте, що змінилося: мажорна версія SDK, версія CLI або заголовок anthropic-version.
  4. Видаліть поля або закріпіть цей запит за 2023-06-01, якщо йому потрібне нетипове значення.
  5. Виконайте один запит, перш ніж перезапускати великий пакет.

Один шлях коду для Claude та API у стилі OpenAI#

Поширена конфігурація: один хелпер, який будує запит і надсилає його або до Anthropic Messages, або до ендпоінта Chat Completions у стилі OpenAI. Найпростіше виправлення — розділити параметри. Залиште temperature лише у гілці в стилі OpenAI і не додавайте його до гілки Messages.

У форматі Chat Completions це налаштування є звичайним полем запиту. На CheapTokens воно працює через адресу, сумісну з OpenAI, https://api.cheaptokens.dev/v1. Ось запит до DeepSeek-V4-Flash (контекст 380K, до 32 768 вихідних токенів на відповідь), з повним ідентифікатором моделі з документації CheapTokens:

bash
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-org/GLM-5.3-Flash, до 8 192 вихідних токенів). Поточні ціни для всіх моделей на сторінці цін.

Щоб побачити, як поводиться це налаштування, прочитайте Системний промпт і температура: що вони роблять і як їх встановлювати. Щоб викликати Messages у форматі Claude з Python, дивіться Anthropic Python SDK з CheapTokens. Базова адреса та налаштування ключа — у документації CheapTokens.