[МСК]

Запас контекста на диалог

Шесть цифр показывают, сколько пар «вопрос — ответ» помещается в окно до вытеснения начала и что съедает запас быстрее остального.

Ваши данные

1 200 слов

Системный промпт, тон общения, запреты, формат ответа — всё, что подставляется в каждый запрос.

6 шт.

Сколько кусков документов поиск подкладывает к вопросу клиента.

450 слов
140 слов
Пар реплик до вытеснения начала
43

Считается один непрерывный диалог. Свёртка истории в резюме и очистка сессии между обращениями этот предел отодвигают.

Запас на рабочую сессию

Обычный разбор заявки укладывается целиком, начало переписки остаётся в памяти до конца разговора. Для длинных консультаций историю сворачивают в резюме каждые двадцать реплик — предел отодвигается втрое.

Из чего сложилось
Подкладка к одной реплике
3 780
Занято до первой реплики
25 460
Доля окна под постоянную часть
12,7%
Свободно под переписку
174 540
Прирост за одну реплику
3 976
Комфортный предел
34

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

Как устроен расчёт

Окно делится на две части. Первая занята всегда: инструкция, подкладка из базы и резерв под ответ. Вторая остаётся под живую переписку.

Слова переводятся в токены с коэффициентом 1,4. Для русского текста это ближе к делу, чем счёт один к одному. Коэффициент проверяют так: текст инструкции прогоняют через счётчик токенов провайдера и делят результат на число слов.

Свободная часть делится на прирост за реплику. Прирост складывается из пары «вопрос — ответ» и фрагментов, оставшихся в истории. Частное и есть число реплик до момента, когда начало разговора уходит за границу окна.

Что съедает запас быстрее остального

Пара реплик по 140 слов весит около 200 токенов. Шесть фрагментов базы по 450 слов — почти 3800. Разница двадцатикратная.

Отсюда главный рычаг — переключатель судьбы подкладки. Пока фрагменты убирают из истории после ответа, они оплачиваются один раз за реплику и не накапливаются. Как только они остаются в переписке, диалог растёт со скоростью документа за сообщение.

Второй рычаг — число фрагментов. Шесть кусков вместо трёх ровно вдвое сокращают длину диалога. Качество ответов при этом растёт не вдвое: обычно нужный фрагмент оказывается в первой тройке выдачи.

Третий рычаг — резерв под ответ. При окне 200K доля в 20% забирает 40 000 токенов ещё до первого сообщения. Это оправдано для развёрнутых разборов с цитатами, а для коротких справок хватает 5%.

Длина реплик влияет слабее всего. Заметной она становится, когда подкладку убирают из истории и переписка остаётся единственной растущей частью.

При каких условиях запаса хватает

Ориентир простой: комфортный предел — 80% от расчётного числа реплик. На последних процентах окна модель уже работает с обрезанной историей и отвечает хуже, хотя ошибок не показывает.

Для справочных сценариев запаса хватает почти всегда. Обращение закрывается за три-пять реплик, сессия обнуляется, накопление не успевает начаться.

Для разбора заявки нужен запас в 20–30 пар. Такой диалог держится целиком, и договорённость из второй реплики доживает до финального ответа.

Для длинной консультации со сменой темы одного окна мало при любом размере. Здесь помогает свёртка: каждые двадцать реплик история заменяется резюме на 300–400 слов, а исходные сообщения выбрасываются. Предел отодвигается втрое при потере деталей, о которых договорились в начале.

Как растянуть запас без смены модели

Постоянные правила переносят в системный промпт один раз. Дублирование инструкции в каждой реплике встречается часто и стоит окна на ровном месте.

Фрагменты подкладывают под конкретный вопрос и убирают после ответа. Ссылки на источники при этом сохраняют — они весят десятки токенов, а связность держат.

Карточку клиента и статус заявки хранят вне переписки и подставляют актуальными. Иначе окно копит десять версий одного и того же статуса, из которых верна последняя.

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

Что делать с числом

Результат показывает границу, за которой начало переписки перестаёт влиять на ответ. Дальше решение принимается по сценарию: где-то границу отодвигают свёрткой, где-то принимают как есть и обнуляют сессию раньше.

Точку обрыва в готовом боте видно по логам: длина запроса в токенах растёт от реплики к реплике и упирается в потолок. Замер по десяти диалогам за неделю даёт реальный прирост за реплику — его подставляют в расчёт вместо оценки по словам и получают цифру для своей сборки.

Частые вопросы

Почему бот забывает начало переписки

Модель видит только то, что помещается в контекстное окно. Когда переписка перерастает окно, старые сообщения отрезаются с начала — вместе с исходным вопросом клиента и договорённостями первых реплик. Ответ при этом выглядит уверенно, поэтому обрыв памяти замечают по смыслу, а не по ошибке.

Сколько реплик выдерживает бот с подключённой базой знаний

На значениях по умолчанию — окно 200K, инструкция 1200 слов, шесть фрагментов по 450 слов, реплики по 140 слов — выходит около сорока пар. Решает не длина сообщений, а подкладка: она весит примерно в двадцать раз больше самой переписки. Проверяется это счётчиком токенов провайдера на десяти реальных диалогах.

Что значит «подкладка остаётся в истории»

После ответа фрагменты документов либо удаляются из переписки, либо остаются в ней как часть контекста. Второй вариант ставится по умолчанию во многих готовых сборках. Он бережёт связность ответов, но каждая реплика начинает стоить как небольшой документ.

Зачем в окне резерв под ответ модели

Ответ пишется в то же окно, что и вопрос. Если свободного места меньше запланированной длины ответа, генерация обрывается на середине фразы. Резерв в 10% от окна закрывает обычные ответы, для длинных разборов берут 20%.

Окно на миллион токенов снимает вопрос

Предел отодвигается, но не исчезает: при подкладке в 4000 токенов на реплику миллион расходуется за две с половиной сотни сообщений. Точность на длинном контексте тоже падает — модель хуже находит нужное среди лишнего. Отбор фрагментов остаётся полезным и при большом окне.