Rozwiązywanie problemówPrzewodnik
Błąd 400 w Claude API przy temperature, top_p, top_k: jak go naprawić
Twoje żądanie do Claude zaczęło zwracać 400 na wersji API 2026-10-21? Usuń temperature, top_p i top_k albo przypnij starą wersję. Kroki w środku.

Na tej stronie
Twoje żądanie do Claude działało wczoraj, przeniosłeś je na wersję API 2026-10-21 (nagłówek anthropic- lub wydanie SDK dla niej zbudowane) i teraz wraca z kodem 400. Spójrz na treść żądania: jeśli zawiera temperature, top_p lub top_k, to jest przyczyna. Usuń te trzy pola, a żądanie przejdzie.
Zgodnie z przewodnikiem migracji Anthropic dla wersji 2026-10-21 (https://platform.claude.com/docs/en/api/migration-2026-10-21, sprawdzone 24 października 2026), żądanie Messages lub Message Batches, które wysyła którykolwiek z tych trzech, zwraca błąd 400. Dzieje się tak nawet wtedy, gdy wartość jest domyślna dla danego parametru. Szukaj statusu 400 i tych nazw pól w swoim żądaniu.
Jak wygląda nieudane żądanie#
Załóżmy, że masz mały skrypt, który prosi Claude o podsumowanie zgłoszenia i utrzymuje odpowiedź stabilną dzięki niskiej temperaturze:
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: ..."}],
)To samo przez zwykły HTTP. Jeśli sam ustawiasz nagłówek wersji, to jest linia, która przenosi cię na nowe zachowanie:
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"}]}'Poprawka: usuń trzy parametry#
Usuń temperature, top_p i top_k z każdego żądania Messages i Message Batches. Bez nich model próbkuje z wartościami domyślnymi (temperatura 1.0), dokładnie tak, jak robiło to żądanie z 2023-06-01, które je pomija.
reply = client.messages.create(
model="<your Claude model>",
max_tokens=500,
messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
Najnowsze główne wersje SDK i CLI ant (2.0.0) nie mają już tych parametrów w ogóle, więc po aktualizacji musisz usunąć je ze swojego kodu. Błąd 400 pochodzi z żądań, które wychodzą z anthropic- i nadal niosą jedno z tych trzech pól. Adaptery .NET IChatClient obierają łagodniejszą drogę: teraz ignorują ChatOptions., TopK i TopP. Dokładne numery wersji SDK dla każdego języka znajdują się w zakładkach kroków aktualizacji w przewodniku.
Jeśli wywołujesz API bez SDK, wersją jest nagłówek anthropic-, a 2026-10-21 to wartość, która włącza nową regułę.
Czy odpowiedzi zmienią się po ich usunięciu?#
To zależy od modelu, a przewodnik jest tu konkretny.
- Claude 4.7 i nowsze już przyjmują tylko domyślne wartości próbkowania. Nic się dla ciebie nie zmienia: próbkowały z wartościami domyślnymi wcześniej i robią to nadal.
- Modele, które przyjmują inne wartości, takie jak Claude Sonnet 4.6: jeśli obniżyłeś
temperature, aby uzyskać bardziej spójne wyniki, ten efekt znika i żadne inne ustawienie go nie zastąpi.
Jeśli konkretne żądanie naprawdę opiera się na wartości innej niż domyślna, masz dwie opcje z przewodnika: przestać wysyłać parametr i zaakceptować domyślne próbkowanie albo pozostawić to jedno żądanie na anthropic-.
Jeśli twoje odpowiedzi muszą być ściśle spójne, przenieś spójność do promptu: stały format wyjściowy, krótki przykład odpowiedzi, której oczekujesz, oraz sprawdzenie w kodzie, które odrzuca wszystko poza formatem. To więcej pracy niż jedna liczba, ale nie zależy od pokrętła próbkowania.
Szybka lista kontrolna, gdy widzisz błąd 400#
- Przeszukaj projekt pod kątem
temperature,top_p,top_k, w tym wrapperów i współdzielonych plików konfiguracyjnych. - Sprawdź zadania wsadowe: reguła dotyczy każdego żądania wewnątrz Message Batch utworzonego z 2026-10-21, więc sprawdź parametry każdego żądania w partii.
- Sprawdź, co się zmieniło: główna wersja SDK, wersja CLI lub nagłówek
anthropic-.version - Usuń pola albo przypnij to żądanie do
2023-06-01, jeśli potrzebuje wartości innej niż domyślna. - Uruchom jedno żądanie, zanim ponownie uruchomisz dużą partię.
Jedna ścieżka kodu dla Claude i API w stylu OpenAI#
Częsta konfiguracja: pojedynczy helper, który buduje żądanie i wysyła je albo do Anthropic Messages, albo do endpointu Chat Completions w stylu OpenAI. Najprostsza poprawka to rozdzielenie parametrów. Zachowaj temperature tylko w gałęzi w stylu OpenAI i nie dodawaj go do gałęzi Messages.
W formacie Chat Completions to ustawienie jest zwykłym polem żądania. W CheapTokens działa przez adres zgodny z OpenAI https:/. Oto żądanie do DeepSeek-V4-Flash (kontekst 380K, do 32 768 tokenów wyjściowych na odpowiedź), z pełnym identyfikatorem modelu z dokumentacji 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: ..."}]
}'Takie żądanie, z 1000 tokenów wejściowych i 300 tokenów wyjściowych, kosztuje $0.000045 przy obecnej cenie. DeepSeek-V4-Flash ma jedną cenę o każdej porze dnia, bez godzin szczytu, a jedno saldo obejmuje wszystkie modele. Dla tej samej ścieżki kodu z oknem kontekstu 390K jest też GLM-5.3-Flash (zai-, do 8192 tokenów wyjściowych). Aktualne ceny wszystkich modeli znajdują się na stronie z cennikiem.
Aby zobaczyć, jak zachowuje się to ustawienie, przeczytaj System prompt i temperature: co robią i jak je ustawić. Aby wywoływać Messages w formacie Claude z Pythona, zobacz Anthropic Python SDK z CheapTokens. Konfiguracja adresu bazowego i klucza znajduje się w dokumentacji CheapTokens.



