Anthropic Python SDK v1.0 появился на PyPI 20 августа 2026 года, и большая часть кода с вызовами API переживёт обновление без изменений. Главный риск при этом почти не виден: HTTP-слой переехал с httpx на httpx2. Трейсинг, APM-агенты и тестовые моки, патчащие httpx, продолжат запускаться, но могут молча перестать видеть запросы SDK. Поэтому успешно прошедшие тесты после обновления ещё ничего не гарантируют.
Три версии за два дня — и сразу 1.0
История релизов anthropic на PyPI укладывается в пять строк: версии 0.123.0, 0.124.0 и 0.125.0 вышли 19 августа 2026 года, а уже 20 августа стандартным механизмом Trusted Publishing был опубликован 1.0.0.
По данным официальных заметок к релизу, изменилось следующее:
- HTTP-слой переведён с
httpxнаhttpx2— поддерживаемый API-совместимый форк. - Теперь требуется Python 3.10 или новее; в классификаторах указаны версии с 3.10 по 3.14.
- Удалён давно устаревший интерфейс: legacy API Text Completions, параметры
temperature,top_pиtop_kв методах Messages, а также клиентскийcompaction_controlу tool runner. AnthropicBedrockтеперь выбрасывает ошибку, если не задан регион AWS, вместо молчаливого выбораus-east-1.
В описании тега v1.0.0 на GitHub это названо «upgrade to httpx2 and some minor breaking changes». В заметках легко пропустить ещё один эффект: с помощников parse, stream и tool_runner снято предупреждение о beta-статусе. Версия 1.0 без beta-оговорок указывает, что Anthropic считает этот API стабильным.
Что меняется из-за перехода с httpx на httpx2
Если вы создаёте клиент самым обычным способом, ничего не заметите. Но при работе с HTTP-слоем изменения затрагивают всё.
Критично, что именно передаётся в клиент. Числовые значения работают как прежде: Anthropic(timeout=30.0) ведёт себя точно так же. С объектами иначе: обычный httpx.Client, переданный через http_client=, теперь вызывает TypeError при создании клиента, а не при первом запросе. Пользовательские клиенты, таймауты и транспорты нужно строить на httpx2; объекты httpx.Timeout следует заменить на anthropic.Timeout либо httpx2.Timeout.
# 0.x
client = Anthropic(http_client=httpx.Client(proxy="http://proxy:8080"))
# 1.0
client = Anthropic(http_client=DefaultHttpxClient(proxy="http://proxy:8080"))
Имена и поведение DefaultHttpxClient и DefaultAsyncHttpxClient не изменились: они по-прежнему сохраняют рекомендуемые SDK настройки таймаутов, пулов соединений и редиректов, но теперь работают поверх httpx2. В анонсе инженера platform devx @cjav_dev отправной точкой названа официальная MIGRATION.md со всеми изменениями и примерами до и после миграции.
Это не первый подобный переход. В гайде по миграции OpenAI Python SDK на httpx2 описан практически тот же путь: тот же форк, тот же паттерн с помощником DefaultHttpx2Client и те же предупреждения о совместимости с respx. Команды, уже переведшие openai, смогут почти без изменений использовать свой прежний план.
Что удалили в v1.0
| Удалено в v1.0 | Чем заменить |
|---|---|
client.completions.create() (Text Completions) | client.messages.create() |
Константы HUMAN_PROMPT / AI_PROMPT | Блоки контента в формате Messages |
temperature, top_p, top_k в сигнатурах методов | extra_body={"temperature": ...} для legacy-моделей, которые всё ещё их принимают |
messages.parse(stream=True) | messages.stream(...) |
tool_runner(compaction_control=...) | Серверная настройка compaction |
Алиасы anthropic.Transport, anthropic.ProxiesTypes | Типы транспортов из httpx2 |
body= в низкоуровневых методах запросов | content= |
Словарь схемы output_format в beta API | output_config={"format": ...} (помощники structured output по-прежнему принимают output_format=MyModel) |
Проверки isinstance(stream, anthropic.Stream) | Проверяйте конкретный тип MessageStream |
К таблице есть две важные сноски. Pydantic v1 и v2 по-прежнему поддерживаются, так что классы моделей безопасны. А объединение заголовков теперь не чувствительно к регистру: если один заголовок задавался дважды в разном регистре, поведение изменится. Это редкий случай, но ошибки при нём не будет.
Асинхронные изменения для пользователей raw response
Асинхронных изменений немного, но они неприятны для тех, кто использует .with_raw_response. У асинхронного клиента методы parse(), read(), text() и json() теперь требуют await. У синхронного клиента .text и .content из свойств превратились в методы. Ни один вариант не ломается на этапе импорта: синхронный код явно упадёт с ошибкой атрибута, а в асинхронном легко получить незапущенную coroutine, если ничего не await-ить.
Связанный момент: объекты запросов и ответов внутри исключений и сырых результатов теперь имеют типы httpx2. Доступ к атрибутам в основном останется прежним, но проверки вида isinstance(x, httpx.Response) и аннотации типов нужно обновить. Именно такие места хорошо найдут pyright и mypy.
Самая опасная ошибка миграции — незаметная
Вот момент, которому changelog уделяет одну строку, а дашборды мониторинга не простят. Согласно гайду Anthropic по миграции, инструменты, наблюдающие за HTTP-трафиком или подменяющие его через патчинг httpx, — OpenTelemetry, Sentry, respx, pytest-httpx, vcrpy — после обновления могут продолжить работу, но молча перестать видеть запросы SDK. Они по-прежнему импортируются, запускаются и формируют отчёты; просто трафик больше не проходит через библиотеку, которую они патчат. Тесты на таких моках могут формально проходить, если не проверяют, что перехват действительно состоялся: запрос до мока не доходит — и ничего не падает.
Выход — вызвать httpx2.alias_httpx() как можно раньше при старте приложения или тестов. В документации Python SDK уточняется: до любого импорта httpx. Функция регистрирует httpx2 под именем httpx, чтобы инструменты патчинга продолжили работать. При этом гайд по миграции предостерегает от вызова в библиотечном коде: место ему только в точке входа приложения.
«Чистый запуск не доказывает, что ваши AI-вызовы всё ещё трассируются или мокируются». — @MarMarLabs, пост на следующий день после релиза
Пост стоит прочитать целиком: автор предлагает сделать проверку этой невидимой ошибки первым тестом миграции. После обновления намеренно убедитесь, что регистрируются хотя бы один трассируемый и один замоканный вызов. В той же ветке отмечены другие тихие риски: пользовательские транспорты придётся вручную перевести на httpx2, а нижняя граница Python 3.10 может сломать старые CI-образы уже на этапе установки.
Что продолжит работать без изменений
Для многих кодовых баз честный ответ прост: делать ничего не нужно. Переход HTTP-слоя вас не затронет, если вы не создаёте пользовательские клиенты, транспорты или объекты таймаутов. В частности, не меняются:
- Вызовы
client.messages.create(...)с обычными параметрами: запросы и модели ответов остаются теми же. - Числовые таймауты и дефолты SDK: 2 повтора с экспоненциальной задержкой при ошибках соединения, 408, 409, 429 и 5xx; стандартный таймаут — 10 минут.
- Маршрутизация через
base_url. Если SDK направлен в gateway или API-совместимый relay вроде эндпоинта Claude API от AIReiter, v1.0 не меняет этот слой: изменился клиент, а не URL. - Модели Pydantic v1 и v2, помощники SSE-стриминга и интерфейсы загрузки файлов.
Единственное жёсткое условие — Python 3.10+. Всё остальное из списка безопасно лишь после выполнения этого требования.
Порядок миграции, который выдержит code review
- Сначала осознанно зафиксируйте версию: если вы ещё не готовы, ограничение
anthropic>=0.125,<1удержит проект на текущей ветке, пока вы планируете работу. - Пройдитесь по коду поиском
import httpxиhttpx.: каждое совпадение рядом с SDK — отдельная задача миграции. - Запустите
/claude-api upgrade pythonв Claude Code. Эту команду рекомендует @cjav_dev в анонсе релиза; она сформирует diff с изменениями для вашего проекта. - Пересоберите пользовательские клиенты, транспорты и таймауты на базе
httpx2либо помощниковDefaultHttpxClient. - Добавьте
httpx2.alias_httpx()в точку входа приложения, если какие-либо инструменты патчатhttpx. - Запустите pyright или mypy: изменения типов httpx2 проявятся в аннотациях и проверках
isinstance. - В CI проверяйте по одному трассируемому и одному замоканному запросу на тестовый набор. Зелёные логи запуска ничего не доказывают.
Anthropic Python SDK v1.0: вопросы и ответы
Anthropic Python SDK v1 уже существует или это всё ещё ветка 0.x?
Существует. Версия anthropic 1.0.0 опубликована на PyPI 20 августа 2026 года и отмечена как v1.0.0 на GitHub; за день до неё вышла 0.125.0. Страница проекта на PyPI теперь направляет пользователей 0.x к гайду по миграции на v1.
Как передавать temperature, top_p и top_k после v1.0?
Из сигнатур методов они удалены. Для legacy-моделей, которые всё ещё принимают эти параметры на стороне сервера, используйте extra_body={"temperature": 0.7}. При этом текущие модели возвращают 400 для не-дефолтных значений сэмплирования в любом случае: это изменение произошло на уровне моделей, а не SDK.
Продолжат ли работать тесты с respx, pytest-httpx или vcrpy?
Не с клиентом SDK по умолчанию — и ошибок не будет, они просто не перехватят ни одного запроса. Либо вызовите httpx2.alias_httpx() до любого импорта httpx при запуске тестов, либо перенесите моки на httpx2.MockTransport. Версия respx, патчащая только старый httpx, не сможет перехватывать трафик SDK.
Что делает /claude-api upgrade python?
Это команда Claude Code, рекомендованная в анонсе инженера Anthropic devx @cjav_dev. Она сканирует проект на anthropic 0.x и выдаёт migration diff — для импортов, объектов таймаутов и вызовов raw response. Так изменения можно проверить в ревью, а не обнаруживать по traceback.
Остаться на 0.125 или переходить на 1.0
У этого вопроса нет универсально верного ответа — вот реальный компромисс. Версия ниже 1.0 сохранит все существующие моки, трейсеры и пользовательские транспорты без изменений, но вы останетесь на SDK до стабилизации, чья политика версионирования допускает обратно несовместимые изменения в минорных релизах. При этом устаревшие возможности, от которых вы зависите, — completions и параметры сэмплирования — уже официально считаются лишним грузом. Переход на 1.0 даёт стабильный API без beta-статуса, но требует провести полноценный аудит HTTP-слоя сейчас, а не когда-нибудь потом. Решающий фактор — объём собственного кода вокруг HTTP: сервис с единственным обычным вызовом Anthropic() обновится почти без усилий, а платформе с пользовательскими транспортами и наборами тестов на respx стоит обязательно проверить тихие сбои до релиза.
По теме: Skills API вышел из beta на той же неделе, а цены Sonnet 5 стали постоянными 10 августа — оба события относятся к той же серии релизов Claude Platform.