Opus 4.7 использует на 45% больше токенов. Реальные замеры против обещаний Anthropic

от автора

В гайде по миграции для Claude Opus 4.7 написано: новый токенайзер использует «примерно в 1.0–1.35 раза больше токенов», чем 4.6. Я замерил и получил 1.47x на технической документации, и 1.45x на реальном CLAUDE.md-файле.

Цены те же. Квоты те же. Токенов в промпте больше. Max-план сгорает быстрее. Кешированный префикс стоит дороже за каждую итерацию. Рейтлимит наступает раньше.

Значит, Anthropic что-то получили в обмен. Что именно — и стоит ли оно того?

Я провёл два эксперимента: первый измерил стоимость, второй проверил заявленные преимущества. Вот что получилось.

Сколько это стоит?

Для измерения я использовал POST /v1/messages/count_tokens — бесплатный счётчик токенов Anthropic без инференса. Один и тот же контент, обе модели, одно число на каждую. Разница чисто в токенайзере.

Два набора образцов.

  1. Первый: семь образцов реального контента, который пользователь Claude Code реально отправляет — CLAUDE.md-файл, пользовательский промпт, пост в блоге, git log, вывод терминала, stack trace, code diff.

  2. Второй: двенадцать синтетических образцов разных типов — английская проза, код, структурированные данные, CJK (Chinese, Japanese, Korean), emoji, математические символы — чтобы посмотреть, как соотношение меняется в зависимости от контента.

Основной цикл — три строки Python:

from anthropic import Anthropicclient = Anthropic()for model in ["claude-opus-4-6", "claude-opus-4-7"]:    r = client.messages.count_tokens(        model=model,        messages=[{"role": "user", "content": sample_text}],    )    print(f"{model}: {r.input_tokens} tokens")

Реальный контент Claude Code

Семь образцов из реальных файлов, которые пользователь Claude Code действительно отправляет:

Тип контента

символов

токенов 4.6

токенов 4.7

коэффициент

CLAUDE.md (реальный файл, 5 КБ)

5 000

1 399

2 021

1.445

Пользовательский промпт (типичная задача в Claude Code)

4 405

1 122

1 541

1.373

Отрывок из поста в блоге (Markdown)

5 000

1 209

1 654

1.368

Git commit log

2 853

910

1 223

1.344

Вывод терминала (запуск pytest)

2 210

652

842

1.291

Python stack trace

5 255

1 736

2 170

1.250

Code diff

4 540

1 226

1 486

1.212

Взвешенный ratio по всем семи образцам: 1.325x (8 254 → 10 937 токенов).

Базовые показатели по типам контента (12 синтетических образцов)

Тип контента

символов

4.6

4.7

ratio

Техническая документация (английский)

2 541

478

704

1.47

Shell script

2 632

1 033

1 436

1.39

TypeScript код

4 418

1 208

1 640

1.36

Испанская проза

2 529

733

986

1.35

Markdown с блоками кода

2 378

604

812

1.34

Python код

3 182

864

1 112

1.29

Английская проза

2 202

508

611

1.20

JSON (dense)

48 067

13 939

15 706

1.13

Определения инструментов (JSON Schema)

2 521

738

826

1.12

CSV (числовые данные)

9 546

5 044

5 414

1.07

Японская проза

993

856

866

1.01

Китайская проза

750

779

789

1.01

Взвешенный ratio для английского и кода: 1.345x. CJK (Chinese, Japanese, Korean): 1.01x в обоих случаях.

Если статья понравится — приглашаю в канал AI for Devs. Каждый день публикую похожие материалы: модели, агенты, практические кейсы и новости из мира AI.

Что изменилось в токенайзере

Из данных видно три паттерна.

CJK, emoji и символы сдвинулись на 1.005–1.07x. Если бы словарь был полностью новым, сдвиг был бы равномерным. Этого не произошло — значит, не-латинская часть словаря изменилась меньше.

Английский и код сдвинулись на 1.20–1.47x на естественном контенте. Это согласуется с тем, что в 4.7 используются более короткие или менее частые sub-word merges для распространённых паттернов в английском и коде.

Код пострадал сильнее, чем уникальная проза (1.29–1.39x против 1.20x). В коде больше повторяющихся высокочастотных строк — ключевые слова, импорты, идентификаторы — именно те паттерны, которые BPE, обученный на коде, сворачивает в длинные merges.

Символов на токен в английском упало с 4.33 до 3.60. В TypeScript — с 3.66 до 2.69. Словарь представляет тот же текст более мелкими кусками.

Это гипотеза, не доказательство. Подсчёт токенов не говорит о том, какие конкретно записи в проприетарном словаре Anthropic изменились.

Зачем выпускать токенайзер, который использует больше токенов

Из гайда по миграции от Anthropic: «более буквальное следование инструкциям, особенно на низких уровнях effort. Модель не будет молча обобщать инструкцию с одного элемента на другой.»

Меньшие токены заставляют attention работать над отдельными словами. Это задокументированный механизм для более точного следования инструкциям, задач на уровне символов и точности вызовов инструментов. Партнёры (Notion, Warp, Factory) сообщают о меньшем количестве ошибок в инструментах на длинных сессиях.

Токенайзер — один из возможных факторов. Веса и пост-обучение тоже изменились. Подсчёт токенов не позволяет их разделить.

Действительно ли 4.7 лучше следует инструкциям

Цену мы выяснили. Теперь вопрос: что Anthropic получили взамен?

Их заявление — «более буквальное следование инструкциям». Правдоподобно, но данные по токенам это не доказывают. Я провёл прямой тест.

IFEval (Zhou et al., Google, 2023) — бенчмарк из промптов с верифицируемыми ограничениями: «ответь ровно N слов», «включи слово X дважды», «без запятых», «всё заглавными». У каждого ограничения есть Python-грейдер. Бинарный pass/fail.

IFEval содержит 541 промпт. Я взял 20 с фиксированным seed, прогнал через обе модели и оценил с помощью официального чекера IFEval.

Метрика

4.6

4.7

Delta

Strict, prompt-level (все прошли)

17/20 (85%)

18/20 (90%)

+5pp

Strict, instruction-level

25/29 (86%)

26/29 (90%)

+4pp

Loose, prompt-level

18/20 (90%)

18/20 (90%)

0

Loose, instruction-level

26/29 (90%)

26/29 (90%)

0

Небольшое, но направленно согласованное улучшение на strict instruction following. Loose-оценка не изменилась. Обе модели уже следуют инструкциям на высоком уровне — разрыв в strict-режиме объясняется тем, что 4.6 иногда спотыкается на точном форматировании там, где 4.7 справляется.

Материально изменился только один тип инструкций: change_case:english_capital (0/1 → 1/1). Всё остальное — ничья. Промпт, который реально разделил модели — цепочка из четырёх ограничений, где 4.6 провалила одно, а 4.7 прошла все четыре.

Несколько оговорок.

N=20, тогда как в IFEval всего 541 промпт. Выборки хватает, чтобы увидеть направление, но не оценить размер эффекта. Delta +5pp при такой выборке совместима с чем угодно — от нулевой разницы до реального улучшения на +10pp.

Это суммарный эффект перехода с 4.6 на 4.7. Токенайзер, веса и пост-обучение — всё изменилось. Выделить вклад конкретно токенайзера невозможно.

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

Итог: 4.7 следует строгим инструкциям на несколько процентных пунктов лучше на этой выборке. Эффект небольшой, выборка маленькая. Не «драматическое улучшение» из цитат партнёров в анонсе — по крайней мере, не на этом бенчмарке.

Дополнительные токены принесли +5pp на strict instruction following. Немного, но как есть.

Математика для одной сессии Claude Code

Представьте длинную сессию Claude Code — 80 итераций туда-обратно на отладку или рефакторинг.

Контекст каждой итерации:

  • Статический префикс: 2K CLAUDE.md + 4K определений инструментов = 6K токенов, одинаковых каждую итерацию

  • История разговора: растёт примерно на 2K за итерацию (500-токенное сообщение пользователя + 1500-токенный ответ), к итерации №80 мы получим ~160K токенов

  • Пользовательский ввод: ~500 свежих токенов за итерацию

  • Вывод: ~1500 токенов за итерацию

  • Cache hit rate: ~95% (типично в пределах 5-минутного TTL)

Одно уточнение: средний кешированный префикс за 80 итераций — ~86K токенов, а не 6K. Статические 6K — это мелочь; история разговора в среднем по всем итерациям (0 на первой, 160K на восьмидесятой, среднее ~80K) — вот что реально влияет на стоимость. Большая часть cache-read приходится на поздние итерации с разросшейся историей, поэтому ~86K — это то, что фактически тарифицируется за итерацию.

Стоимость сессии 4.6

Статья

Расчёт

Стоимость

Итерация №1, cache-write

8K × $6.25/MTok

$0.05

Итерации 2–80, cache reads

79 × 86K × $0.50/MTok

$3.40

Свежий ввод

79 × 500 × $5/MTok

$0.20

Вывод

80 × 1 500 × $25/MTok

$3.00

Итого

~$6.65

Cache reads доминируют в стоимости ввода. Вывод доминирует в общей стоимости.

Стоимость сессии 4.7

Каждый токен в префиксе масштабируется по ratio своего типа:

  • CLAUDE.md: 1.445x → 2K становится 2.9K

  • Определения инструментов: 1.12x → 4K становится 4.5K

  • История разговора (в основном английский и код): 1.325x → 160K становится 212K к ходу 80, среднее ~106K за сессию

  • Пользовательский ввод: 1.325x → 500 становится ~660

Средний кешированный префикс в 4.7: ~115K токенов (против 86K). Токены вывода — открытый вопрос: примерно столько же, что и в 4.6, или до ~30% больше, если новый дефолт xhigh в Claude Code генерирует больше thinking-токенов.

Статья

Расчёт

Стоимость

Ход 1, cache-write

10K × $6.25/MTok

$0.06

Ходы 2–80, cache reads

79 × 115K × $0.50/MTok

$4.54

Свежий ввод

79 × 660 × $5/MTok

$0.26

Вывод

80 × 1 500–1 950 × $25/MTok

$3.00–$3.90

Итого

~$7.86–$8.76

Разница

~$6.65 → ~$7.86–$8.76. Примерно на 20–30% больше за сессию.

Цена за токен не изменилась. Стоимость сессии изменилась — потому что та же сессия включает в себя больше токенов.

Для пользователей Max-плана, которые упираются в рейтлимиты, а не в доллары: 5-часовое окно заканчивается раньше примерно в том же соотношении на англоязычном контенте. Сессия, которая на 4.6 укладывалась в окно, на 4.7 может не уложиться.

Как это влияет на prompt cache

Prompt caching — архитектура, на которой работает Claude Code.

Для тех, кто не знаком с тем, как устроен Prompt Caching крайне рекомендую следующую статью: Prompt Caching: токены LLM в 10 раз дешевле — но за счёт чего?

Изменение токенайзера затрагивает кеширование в трёх местах.

  1. Первая сессия на 4.7 стартует без кеша. Prompt cache Anthropic разделён по моделям — переход с 4.6 на 4.7 сбрасывает все кешированные префиксы, как при переключении между Opus и Sonnet. Токенайзер тут ни при чём, но он делает холодный старт дороже: префикс, который вы пишете в новый кеш, на 1.3–1.45x больше, чем аналогичный в 4.6.

  2. Объём кеша растёт пропорционально. На 1.445x больше токенов в CLAUDE.md — значит, cache-write платится один раз за 1.445x больше токенов, и cache-read каждой следующей итерации — тоже. Механизм не поменялся, просто стал дороже.

  3. Одна и та же сессия — разные числа в логах. Если вы перезапустите сессию с 4.6 на 4.7, количество токенов в логах изменится. Если биллинг или мониторинг завязаны на исторические подсчёты токенов, в день переключения model ID будет скачок.

Контраргументы

«Ввод — в основном cache reads. Изменение стоимости за токен минимально.»

Справедливо. В сессии, которая укладывается в 5-минутный TTL, 96% ввода — это cache reads по $0.50/MTok, уже со скидкой 90% от номинала. Ratio 1.325x на кешированной части — меньший долларовый эффект, чем на свежем вводе.

Но Max-планы считают все токены в рамках рейтлимитов, а не долларов. И несколько паттернов попадают в некешированную территорию: первая сессия после истечения TTL, каждый cache-bust (редактирование CLAUDE.md, изменение списка инструментов, смена модели), каждое событие компакции, перезаписывающее префикс. На этих ходах вы платите полный ratio при cache-write. Устойчивое состояние — светлая точка. Края стали шумнее.

«Anthropic задокументировали 1.0–1.35x как диапазон, а не жёсткий потолок.»

Согласен. Реальный взвешенный ratio (1.325x) попадает в верхнюю часть их диапазона. Отдельные типы файлов его превышают — CLAUDE.md на 1.445x, техническая документация на 1.473x. Это и есть полезный вывод: верхняя граница документированного диапазона — это норма для большинства контента в Claude Code, а не верхняя граница. Планируйте с расчётом на верхний диапазон, не на среднее.


Токены на английском и в коде стали дороже в 1.3–1.45x. За это Anthropic получили +5pp на strict instruction following. Цена за токен та же. Стоимость сессии — нет.

Стоит ли оно того? Зависит от того, что вы делаете. Вы платите примерно на 20–30% больше за сессию ради небольшого, но реального улучшения того, насколько буквально модель следует вашему промпту.

Русскоязычное сообщество про AI в разработке

Друзья! Перевод этой статьи подготовила команда ТГК «AI for Devs» — канала, где мы рассказываем про AI-агентов, плагины для IDE, делимся практическими кейсами и свежими новостями из мира ИИ. Подписывайтесь, чтобы быть в курсе и ничего не упустить!

ссылка на оригинал статьи https://habr.com/ru/articles/1024958/