Почему списалось больше токенов, чем в вопросе
Вопрос из пяти слов, а в истории расходов — тысячи токенов. Это не ошибка биллинга, и вот из чего они складываются.
2 мин · · Обновлено · токены · тарифы · биллинг
Частый вопрос: «я отправил одно предложение, почему в истории расходов две тысячи входных токенов». Ответ почти всегда в том, что отправили вы не одно предложение.
Что уходит в модель на самом деле
Модель не хранит состояние между вызовами. Всё, что она «помнит», приходит в каждом запросе заново. В счёт попадает:
Системный промпт. В IDE и агентах он большой и написан не вами. У инструментов вроде Claude Code это тысячи токенов инструкций, которые уходят с каждым запросом.
Вся история диалога. На десятом сообщении вы отправляете все предыдущие девять плюс ответы модели. Отсюда характерная картина роста: 1k, 3k, 7k, 12k токенов на одинаковых по длине репликах.
Определения инструментов. JSON-схемы функций уходят в каждом запросе целиком, даже если ни одна не будет вызвана.
Содержимое файлов. Одна команда «посмотри этот файл» добавляет весь файл во входные токены — и оставляет его там на все последующие шаги диалога.
Выходные токены тоже не только текст
Если модель умеет рассуждать, рассуждения оплачиваются как выход, даже когда вы их не видите. Ответ в три строки при включённом режиме размышлений легко стоит несколько тысяч выходных токенов.
Прерванная генерация тоже оплачивается — и целиком: если вы нажали отмену или оборвали стрим на середине, шлюз всё равно дочитывает ответ провайдера до конца и списывает всю генерацию, а не только то, что вы успели получить.
Где посмотреть правду
Не гадайте — API возвращает точные числа в поле usage каждого ответа:
"usage": {"prompt_tokens": 6499, "completion_tokens": 214, "total_tokens": 6713}Сравните это со своим представлением о запросе. Если prompt_tokens в разы больше, чем вы ожидали, — ищите историю, системный промпт или файлы в контексте.
В кабинете эти же числа лежат в истории расходов по каждому запросу (кроме ответов из кэша — попадания в кэш в историю не пишутся).
Как сократить счёт
Порядок по отдаче: чистить историю, не держать в контексте прочитанные файлы, сокращать число подключённых инструментов, снижать глубину рассуждений там, где задача простая.
Важная особенность агентных нагрузок: в них до 99% токенов приходится на вход, а не на выход. Оптимизировать длину ответов бессмысленно — экономия там, где растёт контекст.
Когда стоит написать в поддержку
Если usage в ответе API и число в истории расходов расходятся — это уже вопрос к нам, присылайте идентификатор запроса. Но в подавляющем большинстве случаев числа сходятся, а расходится представление о том, что именно было отправлено.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Агенты opencode: как настроить роли, модели и инструментыСвой агент в opencode — это роль, модель и список разрешений. Показываем конфиг и пример, где рутину делает дешёвая модель, а код правит сильная.
- Ключи OpenAI API в открытом доступе: почему ими нельзя пользоватьсяОткуда берутся «бесплатные» ключи на GitHub, почему пользоваться ими опасно и для вас, и для владельца, и как защитить собственный ключ от такой же утечки.
- Ошибки GLM API: почему не работает запрос и как это исправитьНеверный id модели, переполненный контекст 128K, ключ, баланс, лимиты: типичные причины ошибок GLM API и быстрый способ найти свою.
- Plan mode в Claude Code: сначала план, потом правки в кодеВ plan mode Claude Code читает код и предлагает план, но ничего не правит, пока вы не согласитесь. Как включить, использовать и во сколько это обходится.