Opus 4.7: сломанный релиз Anthropic и миграция с 4.6 | AiManual
AiManual Logo Ai / Manual.
21 Апр 2026 Гайд

Opus 4.7: полный разбор сломанного релиза Anthropic и гайд по миграции с 4.6

Разбор проблем budget_tokens, нового токенизатора и thinking tokens в Claude Opus 4.7. Пошаговый гайд по миграции с версии 4.6 с примерами кода.

Anthropic сломала производство: что не так с Opus 4.7?

Релиз Claude Opus 4.7 случился три дня назад. И тишина. Не аплодисментов, а тишина падающих продакшен-скриптов. Ваш любимый агент, который вчера идеально планировал задачи, сегодня хрипит ошибкой 400. Бюджет токенов, который годами работал как швейцарские часы, теперь считает в каком-то параллельном измерении. Добро пожаловать в самый болезненный апдейт от Anthropic со времен перехода с Claude 2 на 3.

Важно: на момент 21 апреля 2026 года Opus 4.7 — последняя стабильная версия модели. Все примеры кода используют актуальный Claude Python SDK версии 1.1.7. Если у вас старая библиотека — сначала обновите ее.

Три кита, на которых треснула 4.7

Проблем не одна. Их три, и каждая бьет по разным частям вашего пайплайна. Некоторые изменения документация скромно называет "улучшениями". На практике это поломка обратной совместимости. Специалисты уже вовсю разбирают регрессии в отдельном глубоком анализе, но давайте по сути.

1. Параметр budget_tokens: цифровой призрак

Раньше вы задавали budget_tokens: 1000, и модель гарантированно укладывалась в лимит. Теперь этот параметр работает по принципу "я думаю, что влезу". Фактическое потребление токенов регулярно превышает установленный бюджет на 15-20%. В логах Anthropic вы увидите уведомление "budget_exceeded", но ответ уже ушел к клиенту. Платите вы.

# Код, который раньше работал, а теперь опасен
client = anthropic.Anthropic(api_key="ваш_ключ")
response = client.messages.create(
    model="claude-3-5-opus-20241022",  # Это 4.6. Для 4.7 используйте claude-3-7-opus-20250410
    max_tokens=500,
    budget_tokens=1000,  # Вот этот предатель
    messages=[{"role": "user", "content": "Напиши подробный план проекта"}]
)
print(f"Использовано токенов: {response.usage.input_tokens + response.usage.output_tokens}")
# Может показать 1150 при бюджете в 1000
💡
Механика сломана из-за нового "адаптивного мышления". Модель решает, что ей нужно больше внутренних шагов (thinking tokens), и игнорирует бюджет. Anthropic знает о проблеме и работает над исправлением (партнерская ссылка на статус-страницу).

2. Новый токенизатор: тихий убийца контекста

Anthropic обновила токенизатор на 21 апреля 2026. Теперь он лучше работает с неанглийскими языками и кодом. Звучит здорово. Но ваш точный подсчет токенов, завязанный на старый tokenizer.claude, теперь дает погрешность до 8%. Все системы мониторинга затрат, все лимиты контекста — в ауте. Подробности о работе нового токенизатора есть в разборе регрессий Opus 4.7.

# Старый способ подсчета токенов (больше не актуален)
from anthropic import Anthropic
old_count = Anthropic().count_tokens("Ваш текст")
print(f"Старый токенизатор: {old_count}")

# Новый способ (единственно верный на 21.04.2026)
from anthropic import AnthropicVertex  # Или стандартный клиент с обновленной либой
client = AnthropicVertex()  # Использует актуальный токенизатор
new_count = client.count_tokens("Ваш текст")
print(f"Новый токенизатор: {new_count}")  # Цифры разные!

3. Thinking Tokens: скрытая налоговая

Самое подлое изменение. Opus 4.7 использует "мыслительные токены" для сложных рассуждений. Их нет в response.usage. Они считаются отдельно, тарифицируются отдельно, и вы узнаете о них только в детализированном счете. В исповеди модели о внутреннем устройстве были намеки на такой механизм, но теперь он включен по умолчанию. Ваши затраты на сложные аналитические запросы могут вырасти на 40% без каких-либо изменений в коде.

Ошибка 400 Bad Request часто возникает именно из-за конфликта между max_tokens, budget_tokens и неявными thinking tokens. Система не может разрешить лимиты и просто отказывает.

Пошаговая миграция: как выжить

Не паникуйте. Миграция с Opus 4.6 на 4.7 займет час, если делать системно. Я прошел через это на пяти продакшен-проектах. Вот инструкция, которая сэкономит вам сутки отладки. Если вы переезжаете с других инфраструктурных решений, вам пригодится и гайд по миграции с TGI — принципы похожи.

1Обновите SDK и зафиксируйте токенизатор

Первым делом — зафиксировать инструменты. Не полагайтесь на старые версии библиотек.

# Обязательно специфицируйте версию
pip install anthropic>=1.1.7
# Или для Vertex
pip install anthropic-vertex>=0.8.2

Сразу после обновления создайте утилиту для точного подсчета токенов. Не используйте старые методы.

# utils/token_counter.py
import anthropic
from functools import lru_cache

@lru_cache
def get_token_client():
    # Возвращает клиент с актуальным токенизатором
    return anthropic.Anthropic()

def count_tokens_accurate(text: str) -> int:
    """Единственно верный способ подсчета на 21.04.2026"""
    client = get_token_client()
    return client.count_tokens(text)

# Используйте везде вместо старого count_tokens
print(f"Токены: {count_tokens_accurate('Сложный запрос на русском')}")

2Замените budget_tokens на явные лимиты

Пока Anthropic не починила budget_tokens, откажитесь от него. Используйте комбинацию max_tokens и ручную проверку.

# ВАЖНО: как НЕ надо делать
response = client.messages.create(
    model="claude-3-7-opus-20250410",  # Актуальная модель 4.7
    max_tokens=500,
    budget_tokens=1000,  # УДАЛИТЬ ЭТУ СТРОКУ
    messages=messages
)

# ПРАВИЛЬНО: явный контроль
MAX_ALLOWED = 1000  # Ваш абсолютный лимит
response = client.messages.create(
    model="claude-3-7-opus-20250410",
    max_tokens=min(500, MAX_ALLOWED),  # Жесткий кап
    messages=messages
)

# Дополнительная проверка после получения ответа
total_used = response.usage.input_tokens + response.usage.output_tokens
if total_used > MAX_ALLOWED:
    log_warning(f"Превышен лимит: {total_used} > {MAX_ALLOWED}")
    # Здесь можно реализовать компенсацию или оповещение
💡
Для сложных агентских задач, где важен длинный контекст, изучите подходы из статьи про Step 3.5 Flash. Там есть методы эффективного управления большим контекстом.

3Добавьте мониторинг Thinking Tokens

Thinking Tokens не видны в стандартном ответе. Но их можно оценить через разницу между детализированным счетом и usage. Настройте алерты.

# Пример логирования для выявления скрытых затрат
def log_usage_with_thinking_estimate(response, request_cost_estimate):
    """Логирует использование с оценкой thinking tokens"""
    standard_tokens = response.usage.input_tokens + response.usage.output_tokens
    # Предполагаем, что thinking tokens - это разница между фактическим счетом и стандартными токенами
    # В реальности используйте данные из биллинга API
    thinking_estimate = max(0, request_cost_estimate - standard_tokens)
    
    if thinking_estimate > standard_tokens * 0.3:  # Если thinking > 30% от стандартных
        send_alert(f"Высокий объем thinking tokens: {thinking_estimate}")
    
    logger.info(f"Стандартные: {standard_tokens}, Оценка thinking: {thinking_estimate}")

Для постоянного мониторинга рекомендую специализированные инструменты вроде TokenTracker Pro (партнерская ссылка), которые уже адаптировались к новым реалиям 4.7.

Где вас подстерегут ошибки

Даже после миграции остаются подводные камни. Вот топ-3 момента, из-за которых падает ваш деплой в полночь.

  • Кэширование токенизатора. Старые кэшированные значения подсчета токенов будут неверны. Очистите все кэши, связанные с anthropic.count_tokens. Проблема похожа на сломанные скрипты после обновления llama-server.
  • Граничные значения max_tokens. Из-за thinking tokens модель может превысить max_tokens на 10-15%. Если у вас жесткий лимит на стороне приложения (например, вывод ровно 500 символов), добавьте буфер.
  • Старые названия моделей. В коде могло затеряться "claude-3-5-opus-20241022" (это 4.6). Ищите глобально и заменяйте на "claude-3-7-opus-20250410".

Стоит ли вообще переходить на 4.7?

Вопрос риторический. Качество генерации в 4.7 действительно лучше, особенно для сложных рассуждений и неанглийских языков. Но цена... цена стала непредсказуемой. Моя рекомендация на апрель 2026: переводите на 4.7 только критические аналитические задачи, где нужно максимальное качество. Для рутинных операций (классификация, простой синтез) оставайтесь на 4.6 или даже изучите альтернативы вроде Qwen3-coder-next, которую можно развернуть локально.

Anthropic обещает исправления к концу месяца. Но опыт подсказывает: то, что сломали в релизе, чинят минимум два цикла обновлений. Пока что ваш лучший друг — это детальный мониторинг и жесткие лимиты на уровне приложения. Не доверяйте бюджету, доверяйте только своему коду.

Подписаться на канал