Anthropic SDK i nowa wersja API: co psuje i co zmienić
Anthropic TypeScript SDK 1.0.0 i Python SDK 2.0.0 wysyłają wersję API 2026-10-21: temperature daje błąd 400, a klucz idzie jako Bearer. Co poprawić najpierw.

21 października 2026 Anthropic wydał wersję Claude API 2026-10-21 i nową główną wersję każdego SDK, które wysyła ją domyślnie: TypeScript SDK 1.0.0, Python SDK 2.0.0, pięć innych SDK i CLI ant. Aktualizacja psuje dwie rzeczy naraz. Wersja API odrzuca temperature, top_p i top_k błędem 400, nawet przy wartościach domyślnych, a także bloki document w wiadomościach asystenta i cytowania w wiadomościach użytkownika. SDK wysyłają klucz API jako Authorization: Bearer zamiast X-Api-Key, co psuje każde proxy, bramkę czy zaślepkę w testach, które czytają stary nagłówek. To zmień najpierw: usuń trzy parametry losowania, potem przestaw wszystko, co czyta X-Api-Key, na Authorization. Stare główne wersje SDK dalej wysyłają 2023-06-01, która działa i nie ma ogłoszonej daty końca, więc nic się nie psuje, dopóki nie zaktualizujesz. Każde twierdzenie poniżej sprawdziliśmy 24 października 2026 w przewodniku migracji (otwiera się w nowej karcie), informacjach o wydaniach, na GitHubie oraz w rejestrach npm i PyPI; nowych SDK nie uruchamialiśmy na API.
Co się zmieniło 21 października 2026
Informacje o wydaniach z 21 października 2026 (otwiera się w nowej karcie) wymieniają osiem nowych wersji, które domyślnie wysyłają 2026-10-21, wszystkie na licencji Apache 2.0, gdzie wcześniejsze były na MIT:
| SDK lub narzędzie | Pakiet | Pierwsza wersja na 2026-10-21 |
|---|---|---|
| TypeScript | @anthropic-ai/ | 1.0.0 |
| Python | anthropic | 2.0.0 |
| Go | github.com/ | 2.0.0 |
| Java | com.anthropic:anthropic-java | 3.0.0 |
| C# | Anthropic | 13.0.0 |
| PHP | anthropic-ai/ | 1.0.0 |
| Ruby | gem anthropic | 2.0.0 |
| CLI | ant | 2.0.0 |
W tych samych informacjach o wydaniach 15 października tryb fast dla Claude Opus 5.5 wyszedł z wersji testowej, co opisaliśmy w przeglądzie nowości web dev z 18 października; to wydanie wymaga więcej od twojego kodu. Dla dwóch SDK, których używa większość zespołów webowych, rejestry podają dokładny czas. Dokument rejestru npm (otwiera się w nowej karcie) podaje czas publikacji i licencję każdej wersji; API JSON w PyPI podaje czasy wysłania wszystkich wydań (otwiera się w nowej karcie) i licencję wersji 1.17.0 (otwiera się w nowej karcie) i 2.0.0 (otwiera się w nowej karcie). Oto ostatnia wersja na starej wersji API, pierwsza nowa główna i wersja aktualna 24 października 2026:
| Pakiet | Ostatnia na 2023-06-01 | Pierwsza na 2026-10-21 | Najnowsza 24.10.2026 |
|---|---|---|---|
@anthropic-ai/ | 0.137.0, 20.10, MIT | 1.0.0, 21.10, 16:00 UTC | 1.3.0, 23.10 |
anthropic (PyPI) | 1.17.0, 20.10, MIT | 2.0.0, 21.10, 15:51 UTC | 2.3.0, 23.10 |
Wydania na GitHubie (TypeScript sdk-v1.0.0 (otwiera się w nowej karcie), Python v2.0.0 (otwiera się w nowej karcie)) wymieniają jedną zmianę łamiącą zgodność: „add support for new API version 2026-10-21”. Co to oznacza w praktyce, mówi przewodnik migracji, w dwóch grupach.
Co odrzuca nowa wersja API
Dotyczy to POST /, liczenia tokenów i każdego żądania w Message Batch utworzonym z 2026-10-21, według sekcji breaking changes (otwiera się w nowej karcie):
| Żądanie | 2023-06-01 | 2026-10-21 |
|---|---|---|
temperature, top_p lub top_k, dowolna wartość | Przyjęte | Błąd 400 |
Blok document bezpośrednio w wiadomości assistant | Przyjęte | Błąd 400; dokumenty wysyłaj w wiadomościach user |
Blok text z niepustym citations w wiadomości user | Przyjęte | Błąd 400, także wewnątrz bloków search_result |
Dwie rzeczy dalej przechodzą: cytowania na blokach tekstu w wiadomościach asystenta (wcześniejsze odpowiedzi Claude’a, które odsyłasz) i ustawienie "citations": {"enabled": true} na dokumentach i wynikach wyszukiwania. Dokument zagnieżdżony w innym bloku, np. w wyniku web fetch zwróconym przez Claude’a, też jest w porządku.
Najważniejsza jest zmiana parametrów losowania. Strona wersji (otwiera się w nowej karcie) mówi, że błąd 400 przychodzi „on every model”. Na modelach Claude 4.7 i nowszych, które i tak przyjmują tylko wartości domyślne, usunięcie parametrów niczego nie zmienia. Na modelu, który przyjmuje inne wartości, np. Claude Sonnet 4.6, żądanie z niską temperature dla bardziej powtarzalnych odpowiedzi traci ten efekt, a przewodnik mówi, że żadne inne ustawienie go nie zastępuje.
Admin API i Claude Enterprise Analytics API też tracą stare nazwy pól: roles zmienia się w role_ids, group_id w rbac_group_id, name w rolach RBAC w display_name, group_type w group.type, actor.email w actor.email_address, a summaries w data. Klucze API tracą workspace_id na rzecz scope, które ma inne wartości: klucz przypisany do Default Workspace niesie teraz prawdziwe ID tej przestrzeni, gdzie wcześniej było null.
Co SDK zmieniają same z siebie
Zmiany w SDK i CLI (otwiera się w nowej karcie) nie zależą od wersji API. TypeScript i Python obok siebie:
| Zmiana | TypeScript 1.0.0 | Python 2.0.0 |
|---|---|---|
| Nagłówek klucza API | Authorization: Bearer, z apiKey i ANTHROPIC_API_KEY | Authorization: Bearer, z api_key i ANTHROPIC_API_KEY |
| Dwa poświadczenia w jednym kliencie | Rzuca TypeError | Rzuca ValueError |
MessageParam | Unia UserMessageParam, AssistantMessageParam, SystemMessageParam; tylko typy | Ta sama unia; wywołanie lub dziedziczenie MessageParam rzuca TypeError |
betas w models.list/retrieve | Usunięte z typów parametrów; użyj client.beta.models | Przekazanie to TypeError; użyj client.beta.models |
compactionControl w tool runnerze | Usunięte (przestało działać w 0.129.0); użyj kompakcji po stronie serwera | Nie wymieniono |
| Text Completions | Usunięte | Nie wymieniono |
| Pakiety platform | Pakiety Bedrock, Vertex, Foundry, AWS i Google Cloud potrzebują własnego 1.0.0 | Nie wymieniono |
| Licencja | Apache-2.0 (0.137.0 było na MIT) | Apache-2.0 (1.17.0 było na MIT) |
Zmiana nagłówka najczęściej zepsuje coś poza twoim kodem. Wszystko między aplikacją a API, co czyta X-Api-Key, przestaje widzieć klucz: firmowe proxy, bramka API, middleware, które go sprawdza, filtr logów, który go maskuje, zaślepka w teście, która go oczekuje. Samo API przyjmuje klucz w obu nagłówkach, jak podaje przewodnik migracji. Nie każdy klient się zmienia: w TypeScripcie apiKey w @anthropic-ai/ dalej idzie jako X-Api-Key, a apiKey w @anthropic-ai/ już wcześniej był tokenem Bearer; w Pythonie AnthropicFoundry dalej wysyła x-api-key, a AnthropicBedrockMantle już wcześniej wysyłał token Bearer.
Zasada jednego poświadczenia łapie konfiguracje, które wysyłały razem token bramki i klucz API. Gdy w kodzie nie podasz żadnego, a ustawione są i ANTHROPIC_API_KEY, i ANTHROPIC_AUTH_TOKEN, klient użyje klucza i raz zapisze ostrzeżenie.
Kogo to dotyczy i jak to sprawdzić
Dotyczy cię od dnia, w którym zainstalujesz nową wersję główną, nie wcześniej. Przeszukanie repozytorium pokaże, ile jest pracy:
| Szukaj w kodzie i konfiguracji | Jeśli znajdziesz |
|---|---|
temperature, top_p, top_k w wywołaniach Messages | Usuń je albo zostaw to żądanie na starym SDK |
X-Api-Key (dowolna wielkość liter) w proxy, middleware, mockach | Czytaj Authorization albo sam wysyłaj X-Api-Key |
apiKey i authToken (lub api_key i auth_token) w jednym kliencie | Podaj jedno; drugie rzuci błąd |
models.list( lub models.retrieve( z betas | Wołaj client.beta.models |
MessageParam( (Python) lub extends MessageParam (TypeScript) | Napisz literał słownika albo alias typu z & |
compactionControl (TypeScript) | Przejdź na context_management z compact_20260112 |
| Bedrock z Claude Opus 4.6 lub starszym | Zostań przy obecnym SDK, dopóki nie przejdziesz na model 4.7 lub nowszy |
ant --api-key lub ant --auth-token w skryptach i CI | ant 2.0.0 usuwa obie flagi: użyj ANTHROPIC_API_KEY, --api-key-stdin albo ant auth login (dla tokena ANTHROPIC_AUTH_TOKEN lub --auth-token-stdin) |
Wiersz o Bedrocku wymaga uwagi. Nowe SDK wysyłają 2026-10-21 także z klientów Amazon Bedrock i Google Cloud, a na Bedrocku ta wersja istnieje tylko dla modeli Claude 4.7 i nowszych. Jeśli wołasz tam starszy model, krok aktualizacji (otwiera się w nowej karcie) każe zostać przy obecnej wersji SDK. W TypeScripcie to wstrzymuje całe drzewo zależności: według rejestru npm (otwiera się w nowej karcie) @anthropic-ai/ 1.0.0 wymaga @anthropic-ai/ >=1.0.0 <2, a 0.36.0 wymaga >=0.115.1 <1. Strona wersji wymienia też 2026-10-21 na Claude Platform on AWS, w obu ofertach Google Cloud i w Microsoft Foundry, a ograniczenie modeli podaje tylko dla Bedrocka.
Jak zaktualizować Anthropic SDK do wersji API 2026-10-21
Przypnij ostatnią starą wersję i zapisz punkt odniesienia
Zanotuj, czego używasz dziś (np.
@anthropic-ai/0.137.0 albosdk anthropic1.17.0), i uruchom na tym testy, żeby odróżnić błąd migracji od starego i móc wrócić do znanej wersji.Usuń temperature, top_p i top_k
Wykreśl te trzy parametry z każdego żądania Messages i Batch. Dla żądania, które zależy od niskiej temperatury na modelu, który ją przyjmuje, zdecyduj teraz: zaakceptuj wartość domyślną albo zostaw tę ścieżkę na starym SDK na jakiś czas.
Przestaw wszystko, co czyta X-Api-Key, na Authorization
Zaktualizuj proxy, bramki, middleware, maskowanie logów i zaślepki w testach, by czytały
Authorization: Bearer <klucz>. Jeśli bramki nie da się jeszcze zmienić, ustaw nagłówek sam: w TypeScripciedefaultHeaders: { "X-Api-Key": apiKey, Authorization: null }, w Pythonie funkcjąauthna kliencie HTTP, którą pokazuje przewodnik.Zainstaluj najnowszą nową wersję główną razem z pakietami platform
Zainstaluj
@anthropic-ai/(1.3.0 na 24 października) albosdk@^1 anthropic>=2,<3(2.3.0), a nie dokładnie 1.0.0 czy 2.0.0: wersje 1.2.0 i 2.2.0 poprawiły tool runner. W TypeScripcie przenieś@anthropic-ai/,bedrock-sdk vertex-sdk,foundry-sdk,aws-sdkczygoogle-cloud-sdkna 1.x w tej samej zmianie, inaczej menedżer pakietów zainstaluje dla nich drugą, starszą kopię SDK.Popraw to, co zgłoszą kompilator i testy
Podawaj jedno poświadczenie na klienta, przenieś wywołania z
betasdoclient.beta.models, przepisz konstruktory i interfejsyMessageParam, usuń blokidocumentz wiadomości asystenta icitationsz wiadomości użytkownika. Potem puść testy na2026-10-21, z jednym prawdziwym żądaniem na każdą ścieżkę kodu, zanim wydasz zmianę.
W TypeScripcie dwie zmiany, których potrzebuje większość aplikacji, wyglądają tak (druga to przykład z przewodnika migracji):
// 0.x: przyjmowane na 2023-06-01
await client.messages.create({ model, max_tokens: 1024, temperature: 0.2, messages });
// 1.x: temperature nie ma już w typach, a API zwraca dla niego 400
await client.messages.create({ model, max_tokens: 1024, messages });
// 0.x
const page = await client.models.list({ betas: [beta] });
// 1.x
const page = await client.beta.models.list({ betas: [beta] });Na co uważać
- Brak daty końca
2023-06-01. Na 24 października 2026 nie podają jej ani informacje o wydaniach, ani strona wersji, a strona wersji zaleca najnowszą wersję, kiedy tylko to możliwe. Pozostanie przy starej wersji głównej traktuj jako decyzję z datą przeglądu, nie jako plan. - Nic nie zastępuje niskiej temperatury. Przewodnik daje tylko dwie opcje: przestać ją wysyłać albo zostawić to żądanie na
2023-06-01. Jeśli liczy się powtarzalność odpowiedzi, napisz ewaluację, zanim przełączysz model, który respektował twoją temperaturę. - Brak opisanego tekstu błędu. Przewodnik mówi, że te żądania zwracają 400, ale nie cytuje komunikatu. Strona błędów (otwiera się w nowej karcie) przypisuje 400 do
invalid_request_error, a SDK rzucają dla niego wyjątek o konkretnym typie, więc test sprawdzający status lub typ jest pewniejszy niż porównywanie tekstu. - Poprawki tool runnera po 1.0.0. TypeScript 1.2.0 (otwiera się w nowej karcie) i Python 2.2.0 (otwiera się w nowej karcie), oba z 23 października, poprawiają tool runner: wydanie TypeScript wokół
setMessagesParams()ipushMessages(), wydanie Python wokółappend_messages()iset_messages_params(). Zaczynaj od najnowszej wersji. - Biblioteki zbudowane na SDK. Framework, który opakowuje
@anthropic-ai/albosdk anthropic, deklaruje własny zakres wersji i własne typy. Sprawdź, czy obsługuje nową wersję główną, zanim zaktualizujesz; przewodnik migracji obejmuje tylko pakiety Anthropic. - Ewidencja licencji. Apache 2.0 nie wymaga zmian w kodzie, ale jeśli śledzisz licencje zależności, zaktualizuj wpis.
Wszystkie źródła czytaliśmy 24 października 2026; zanim zaplanujesz aktualizację, sprawdź w informacjach o wydaniach, czy nie doszło coś nowego. Wcześniejsze nowości wokół Claude’a, w tym wyjście trybu fast dla Opus 5.5 z wersji testowej, są w podlinkowanym wyżej przeglądzie web dev z 18 października.
Co się psuje po aktualizacji Anthropic Python SDK do 2.0?
Wersja 2.0.0 wysyła wersję API 2026-10-21, więc temperature, top_p i top_k kończą się błędem 400, podobnie jak bloki document w wiadomościach asystenta i citations na blokach tekstu w wiadomościach użytkownika. Samo SDK wysyła klucz API jako Authorization: Bearer, rzuca ValueError, gdy klient dostanie dwa poświadczenia, robi z MessageParam unię, której nie da się już wywołać, i usuwa betas z client.models.list i retrieve.
Czy Anthropic TypeScript SDK 1.0.0 łamie zgodność z 0.x?
Tak. Wersja 1.0.0, opublikowana 21 października 2026, jako pierwsza wysyła wersję API 2026-10-21 i zmienia też samo SDK: klucz idzie jako Authorization: Bearer, klient przyjmuje jedno poświadczenie, MessageParam jest unią trzech typów ról, betas znika z metod Models spoza beta, a compactionControl i Text Completions zostały usunięte.
Dlaczego temperature daje błąd 400 w nowej wersji Claude API?
Wersja API 2026-10-21 usuwa parametry temperature, top_p i top_k, a żądanie z którymkolwiek z nich kończy się błędem 400, nawet przy wartości domyślnej. Usuń je. Żądania losują wtedy z wartościami domyślnymi, w tym temperature 1,0; niższej temperatury nic nie zastępuje, poza zostaniem przy 2023-06-01 dla tego żądania.
Czy mogę zostać przy wersji API 2023-06-01?
Tak, na 24 października 2026. Wcześniejsze główne wersje SDK nadal wysyłają 2023-06-01, a strona wersji i informacje o wydaniach nie podają dla niej daty końca. Anthropic zaleca najnowszą wersję, więc traktuj zostanie jako świadomy, tymczasowy wybór.
Czy muszę coś zmienić, jeśli wołam API przez curl?
Nie, dopóki sam nie zmienisz nagłówka anthropic-version na 2026-10-21. Wtedy zmiany w Messages API dotyczą twoich żądań. Zmiana na Authorization: Bearer jest tylko w SDK: API przyjmuje klucz w obu nagłówkach, więc curl z x-api-key dalej działa.