LLM API и интеграция
Почему prompt_tokens больше, чем вы отправили
Служебный контекст маршрута занимает от 2000 до 9500 токенов и попадает в ваш prompt_tokens вместе с текстом запроса. Разница между семействами моделей — 4,75 раза: у Gemini и GLM это 2000 токенов, у линейки GPT и Grok 2700, у Haiku 4.5 — 7062, у Opus и Sonnet 5 — 9500. В деньгах на Opus 5 это 617 ₽ за тысячу запросов ещё до того, как вы отправили хоть один символ. На Gemini 2.5 Flash те же тысяча запросов стоят 14 ₽ накладных. Числа опубликованы в GET /v1/models в поле billing.estimated_route_context_tokens, дата последнего измерения — 6 августа 2026 года.
Это тот случай, когда цена за миллион токенов ничего не говорит о счёте. Разберём, откуда берётся разница и что с ней делать.
Что такое служебный контекст и почему он оплачивается
Когда запрос уходит модели, перед вашим текстом добавляется системная часть: инструкции маршрута, описание формата, служебные поля. Модель считает токены всего, что получила, поэтому эта часть попадает в prompt_tokens и тарифицируется по обычной входной ставке.
Ничего необычного в этом нет — так устроен любой маршрут поверх модели. Необычно другое: почти никто не публикует, сколько именно это занимает. В каталоге KeyDealer оценка лежит в открытом виде для каждой модели, вместе с датой измерения, чтобы можно было посчитать бюджет до первого запроса.
Сколько служебных токенов у каждого семейства
Данные из GET /v1/models на 8 августа 2026 года, измерение от 6 августа.
| Семейство | Служебный контекст, токенов | Ставка входа, ₽ за 1 млн |
|---|---|---|
| Gemini 2.5 Flash, 3 Flash, 3.5 Flash, 3.1 Pro | 2 000 | 6–20 |
| GLM-4.6V, GLM-4.7, GLM-5.2 | 2 000 | 4–20 |
| Sonnet 4.6 | 2 068 | 30 |
| GPT-5.4, 5.4 Mini, 5.5, 5.6 Luna, 5.6 Sol, 5.6 Terra | 2 700 | 8–25 |
| Grok 4.20 Research | 2 700 | 25 |
| Haiku 4.5 | 7 062 | 20 |
| Opus 4.6, 4.7, 4.8, Opus 5, Sonnet 5 | 9 500 | 20–65 |
У gpt-oss-120b объём не измерен — в ответе стоит null, и мы не подставляем туда правдоподобное число.
Первое, что бросается в глаза: Sonnet 4.6 и Sonnet 5 отличаются в 4,6 раза — 2068 против 9500 токенов. Это соседние поколения одной линейки.
Второе: Haiku 4.5 стоит 20 ₽ за миллион, столько же, сколько Sonnet 5, но накладных у него на четверть меньше.
Во что это обходится в рублях
Считаем накладные на тысячу запросов, только служебную часть, без вашего текста и без ответа модели.
| Модель | Служебных токенов | Ставка входа | Накладные на 1000 запросов |
|---|---|---|---|
| Gemini 2.5 Flash | 2 000 | 7 ₽ | 14 ₽ |
| GLM-4.7 | 2 000 | 4 ₽ | 8 ₽ |
| GPT-5.4 Mini | 2 700 | 8 ₽ | 22 ₽ |
| GPT-5.6 Sol | 2 700 | 25 ₽ | 68 ₽ |
| Haiku 4.5 | 7 062 | 20 ₽ | 141 ₽ |
| Sonnet 5 | 9 500 | 20 ₽ | 190 ₽ |
| Opus 5 | 9 500 | 65 ₽ | 617 ₽ |
Разрыв между GLM-4.7 и Opus 5 — 77 раз. И это ещё до того, как вы отправили первый символ.
Для короткого сценария вроде классификации сообщения в одно слово служебная часть может оказаться больше вашего промпта. Для длинного анализа документа на 50 тысяч токенов она растворяется в общем объёме и роли не играет. Отсюда практический вывод: накладные важны там, где запросы частые и короткие, и почти не важны там, где они редкие и длинные.
Два сценария, где разница видна и где нет
Возьмём два типовых случая и посчитаем долю служебной части.
Классификация обращений в поддержке. Промпт короткий: инструкция плюс сообщение клиента, около 300 токенов. Ответ в одно слово, 5 токенов.
| Модель | Ваши токены | Служебные | Доля служебных |
|---|---|---|---|
| Gemini 2.5 Flash | 300 | 2 000 | 87% |
| Sonnet 5 | 300 | 9 500 | 97% |
То есть вы платите почти целиком за служебную часть, а не за свой текст. На таком сценарии выбор семейства решает всё.
Анализ договора на 40 тысяч токенов. Ответ развёрнутый, 2 тысячи токенов.
| Модель | Ваши токены | Служебные | Доля служебных |
|---|---|---|---|
| Gemini 2.5 Flash | 40 000 | 2 000 | 5% |
| Sonnet 5 | 40 000 | 9 500 | 19% |
Здесь служебная часть уже фон, а решают ставка и качество разбора.
Общее правило: чем короче ваш промпт и чем чаще запросы, тем сильнее служебный контекст двигает счёт. Для потоковой обработки коротких сообщений он может стать основной статьёй расходов.
Как это выглядит в ответе API
В завершённом ответе поле usage показывает фактические числа:
{
"usage": {
"prompt_tokens": 9743,
"completion_tokens": 128,
"total_tokens": 9871,
"prompt_tokens_details": {
"estimated_user_tokens": 243
}
}
}
Здесь prompt_tokens — всё, что получила модель, а estimated_user_tokens — приблизительная оценка того, сколько из этого прислали вы. Разница и есть служебная часть.
Важная оговорка: estimated_user_tokens информационное поле, независимое от токенизатора конкретной модели, и источником окончательного списания оно не является. Деньги считаются по prompt_tokens и completion_tokens. Полный контракт биллинга описан в документации API.
Как измерить свой случай за пять минут
Оценка из каталога усреднённая, ваш сценарий может отличаться. Порядок проверки простой.
Отправьте один типовой запрос и посмотрите в ответе разницу между prompt_tokens и estimated_user_tokens. Повторите десять раз на разных входных данных — служебная часть должна держаться примерно на одном уровне, а ваша меняться. Если разница скачет сильно, значит в неё попадает что-то из вашей обвязки: системное сообщение фреймворка, описания инструментов, история диалога.
Последнее — самая частая причина неожиданного счёта. Описания инструментов в поле tools уходят в модель при каждом запросе, а не один раз за сессию. Пять подробно описанных функций легко добавляют больше токенов, чем весь ваш промпт.
Почему оценка в каталоге — это оценка
GET /v1/models публикует не константу, а измерение с датой. У части моделей рядом идут p50, p95 и размер выборки, когда замер проводился.
Причина простая: объём служебного контекста может меняться от запроса к запросу и от версии маршрута к версии. Публиковать одно число как гарантию было бы враньём.
Отсюда правило, которое стоит держать в голове: оценка нужна для планирования, usage — для сверки счёта. Если вы строите модель расходов, берите оценку. Если разбираетесь, почему списалось именно столько, смотрите usage в ответе и keydealer_billing.operation_id в истории запросов.
Что с этим делать
Четыре приёма по убыванию эффекта.
- Выбирайте модель под форму запроса, а не только по цене за миллион. Для частых коротких обращений Gemini Flash и GLM выигрывают дважды: и ставкой, и накладными. Для длинных редких задач разница в накладных не заметна, и решает качество.
- Считайте на реальных запросах. Возьмите десять типовых обращений своего сценария, посмотрите
usageи выведите среднее. Прикидка в уме на коротких запросах ошибается в разы именно из-за служебной части. - Ужимайте свою часть контекста. На служебную вы не влияете, а на свою — да. Измерить и консервативно сжать помогает KD Context: он работает на стороне клиента до отправки и не трогает маршрут.
- Не закладывайте скидку за кэш. У всех моделей каталога
prompt_cache.statusсейчасunsupported, и служебная часть кэшем не покрывается. Подробнее про цены и то, что в них не входит — в разборе, сколько стоит 1 млн токенов в рублях.
Что держать в голове
Цена за миллион токенов — половина картины. Вторая половина в том, сколько токенов уходит в модель помимо вашего текста, и здесь разброс между семействами достигает 4,75 раза, а в деньгах на тысячу запросов — 77 раз.
Числа опубликованы и проверяемы: GET /v1/models, поле billing.estimated_route_context_tokens, рядом дата измерения. Мы публикуем их в том числе там, где они неудобны — у линейки Opus служебный контекст самый большой в каталоге.
Модели меняются, маршруты тоже. Календарь того, что и когда выключают вендоры, собран отдельно: что сломается до конца 2026. Как мы проверяем факты — на странице о проекте.
Частые вопросы
Что такое служебный контекст маршрута?
Это системная часть промпта, которую добавляет маршрут перед отправкой запроса модели. Она попадает в prompt_tokens и оплачивается по обычной входной ставке. GET /v1/models публикует её оценку для каждой модели вместе с датой измерения.
Почему у разных моделей он разный?
Объём зависит от маршрута конкретной модели, а не от вашего запроса. На 8 августа 2026 года у линейки Gemini и GLM это около 2000 токенов, у линейки GPT и Grok 2700, у Haiku 4.5 — 7062, у Opus и Sonnet 5 — 9500.
Можно ли уменьшить служебный контекст?
Нет, это часть маршрута. Уменьшить можно свою часть промпта. Измерить и консервативно ужать её помогает KD Context, но на служебную часть он не влияет.
По какому числу списываются деньги?
По полю usage в завершённом ответе, а не по оценке из каталога. Оценка нужна для планирования бюджета, авторитетным для списания остаётся фактический usage.