Расход токенов · интерактивная модель

Почему длинный чат гниёт и дорожает

Пять небольших симуляций: как контекст теряет точность, во сколько обходится «всё в одном чате», и как тестированные процедуры (скиллы / MCP) держат качество при минимуме токенов.

⚠️ Это иллюстративная модель на основе исследований (Chroma «context rot», Stanford «lost in the middle», статистика токенайзеров), а не живые замеры конкретной модели. Цель — показать форму зависимостей, а не точные числа.
💲 Усреднённая цена модели: $3 за 1M токенов для наглядности, не точно · ~ средний input-тариф
Демо 1 · стоимость контекста

Квадратичная цена одного длинного чата

Каждое новое сообщение модель перечитывает всю переписку заново. Поэтому в одном длинном чате суммарно обработанные токены растут как O(n²). Новый чат на задачу — растёт линейно.

Один длинный чатНовый чат на задачу
Длинный чат обработал
Новый чат на задачу
Переплата
Как считаем

Длинный чат: на i-м сообщении обрабатывается i·t токенов (вся переписка). Сумма = t·n(n+1)/2. Новый чат: каждый раз ~t, сумма = n·t. Цена = токены ÷ 1e6 × тариф (сверху).

Источники: Anthropic — prompt caching (контекст пересчитывается каждый запрос). Квадратичность — механика, не из одной статьи.

Демо 2 · сжатие контекста

Сжатие = «ксерокопия с ксерокопии»

Каждое сжатие (/compact, повторное резюме) — это пересказ пересказа. Часть фактов теряется на каждом шаге, как при многократном пересохранении JPEG. Жмите кнопку и смотрите, что выживет.

Сжатий сделано
0
Фактов осталось
12 / 12
Точность
100%
Как считаем

У каждого факта на каждом сжатии есть шанс выжить p. Ожидаемая доля после k сжатий ≈ p^k. Здесь выживание разыгрывается случайно — поэтому результат немного «живой».

Источники: Chroma — Context Rot. Потеря фактов — иллюстрация lossy-резюме.

Демо 3 · lost in the middle

Иголка в стоге: контекст сжимается и разжимается

Сильнее всего модель помнит самое начало и самый конец. Двигайте «длину контекста»: лента то сжимается (начало и конец близко к середине — всё помнится), то растягивается (середина далеко от краёв и «забывается»). Жёлтая игла — ваш факт. Выжимать весь лимит невыгодно вдвойне: точность сползает (и середина, и края), а цена прочтения растёт линейно — 1М ≈ в 5 раз дороже 200К за то же потерянное.

ярко = помнит хорошотёмная середина = забываетваш факт
Вероятность вспомнить факт
Зона
До ближнего края
Цена 1 прочтения (тариф сверху)
Как считаем

recall ≈ (0.28 + 0.71·e^(−d/20K)) · (1 − 0.25·len/1М), где d — расстояние факта до ближайшего края. Длиннее контекст → середина дальше от краёв И весь уровень ниже. Числа иллюстративные, чтобы показать форму (Stanford «lost in the middle», Chroma «context rot»).

Источники: Stanford — Lost in the Middle, Chroma — Context Rot.

Демо 4 · скиллы и MCP

Скилл / MCP: один раз настроил — дальше дёшево и стабильно

Когда задача повторяется, можно каждый раз «думать заново» — но тогда почти каждый запрос тащит цикл отладки: модель ошиблась → правки → перечитывание → ещё токены и ваше время. Тестированная процедура (скилл или MCP) этот цикл убирает: дёшево, предсказуемо, без отладки. Главная экономия — именно на отладке и времени, а не только на токенах запроса.

Думать заново каждый разСкилл / MCPТочка окупаемости
Окупается после
Экономия на N запусках
Из них впустую на отладку (ad-hoc)
Стабильность качества
Качество: «думать заново» (скачет)
Качество: скилл / MCP (стабильно)
Как считаем

Ad-hoc за раз = A·(1 + отладка%). «Заново»: i·Aэфф. Скилл: B + i·c. Окупаемость N* = B/(Aэфф − c). Карточка «на отладку» = A·отладка%·n — это сгоревшие токены ПЛЮС ваше время (его в токенах не видно, но оно реально). Числа иллюстративные.

Источники: Экономика амортизации (не из статьи). Model Context Protocol — про MCP.

Демо 5 · язык и токены

Сколько токенов и денег «весит» ваш текст

Один и тот же смысл на разных языках стоит разное число токенов. Английский — самый «дешёвый». Введите текст и сравните.

Символов
UTF-8 байт (точно)
≈ токенов (оценка)
≈ цена за 1000 запусков
Фраза «Hello / Привет / 你好» — один смысл≈ токенов
English: "Refactor this function and add tests."≈ 8
Русский: «Сделай рефакторинг этой функции и добавь тесты.»≈ 18–22
中文 / 日本語 (аналогично)≈ 16–20
Как считаем

Байты — точно (UTF-8). Токены — приблизительная оценка по типу письма (латиница ≈ 0.25 токена/символ, кириллица ≈ 0.5, иероглифы ≈ 1.0), а не настоящий BPE-токенайзер. Цена = токены × 1000 ÷ 1e6 × тариф (сверху).

Источники: Frontiers — токенизация, OpenAI Tokenizer (точный счёт).

Демо 6 · качество промта

Искусство промта: выключай блоки — смотри, как разлетается

А вы точно умеете писать промты?

Хороший промт собран из блоков. Кликай, чтобы выключать их по одному. Дротики — ответы модели: при полном промте они кучно в цели, без блоков разлетаются (тема и границы расплываются). Задача-пример: «Напиши на Python функцию валидации email с тестами».

Промтинг — это целая научная область: систематический обзор 2024 «The Prompt Report» (30+ авторов) собрал 58 техник промтинга и мета-анализ всей литературы. arXiv

в цельрядоммимовне темы
Цвет дротика = кольцо, куда он попал (зелёный центр «ЦЕЛЬ» — лучший ответ, дальше хуже). Полный промт → дротики в центре; убираешь блоки → разлетаются.
Точность (попадание в цель)
Разброс темы
Переспросов впустую
Сравнение: убираем блоки (точка ● двигается от ваших переключателей)
качество ↓токены потрачено ↑переспросов ↑(кривые нормированы)
Линия — общий тренд (убираем от наименее важного к ядру). Точка ● двигается от ваших чипов: если она ниже линии, значит вы убрали что-то важное раньше времени. Полный → пустой: качество 100%→0%, токены ≈×7, переспросов 0→6.
Как считаем

У каждого блока свой вес: Задача 34%, Границы 20%, Контекст 16%, Формат 14%, Пример 10%, Роль 6%. «Точность» = сумма весов включённых блоков. Чем ниже — тем шире разлёт дротиков и больше переспросов. Веса иллюстративные, по практикам промтинга (не замеры).

Источники: Anthropic — prompt engineering.