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

Это ловушка контекста. Большинство разработчиков полагают, что чем больше информации вы даете ИИ, тем лучше будет результат. На деле часто всё наоборот. Создание надежных ИИ-приложений требует понимания трех ключевых механизмов: как модели считают текст, какой объем они могут удерживать за один раз и что происходит с информацией после завершения диалога.

Токены: настоящая валюта

Токен — это наименьшая единица, которую обрабатывает языковая модель. Это может быть один символ, фрагмент слова или целое распространенное слово. Слово «purchase» часто разбивается на два токена, в то время как короткое слово вроде «cat» остается целым. Знаки препинания и пробелы тоже потребляют токены. Код особенно «прожорлив». Блок кода на Python с вложенными отступами и специальными символами может раздуться до трех-четырехкратного увеличения количества токенов по сравнению с вашими визуальными оценками.

Почему это важно для разработчиков? Стоимость API рассчитывается за токены. Время обработки тоже. Промпт, который выглядит как две страницы текста, может стоить копейки или доллары, в зависимости от его содержимого. Хуже того, токены накапливаются с обеих сторон обмена. Вы платите за каждый токен в своем промпте и за каждый токен, который генерирует модель в ответ. Неконтролируемый рост контекста незаметно съедает вашу маржу.

Контекстное окно — это маркерная доска

Контекстное окно устанавливает верхний предел того, что модель может «видеть» за один раз. Представьте маркерную доску, висящую в маленькой комнате. Вы можете заполнить её системными инструкциями, вопросами пользователя, извлеченными документами и историей переписки. Но доска не растет. Когда появляется новый текст, старый «спадает» с края.

Это важно, потому что модели не предупреждают вас, когда начинают отбрасывать контент. Если ваша системная инструкция находится в начале длинного диалога, а вы продолжаете добавлять сообщения, со временем эта инструкция уйдет из поля зрения. Модель может вернуться к поведению по умолчанию, проигнорировать правила форматирования или начать противоречить предыдущим указаниям. Разные модели имеют разные лимиты: одни обрабатывают несколько тысяч токенов, другие — сотни тысяч, но механика остается идентичной. Входные и выходные данные используют один и тот же бюджет. Если модель генерирует ответ объемом в две тысячи токенов, у неё остается на две тысячи токенов меньше для того, чтобы помнить то, что вы ей сказали.

Память — это хак, а не встроенная функция

В весах модели во время инференса нет постоянной памяти. Совсем нет. Когда вы закрываете вкладку и возвращаетесь на следующий день, модель вас не узнает. Каждый вызов API — это «холодный старт».

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

Это различие критически важно для продуктовых команд. Если вы полагаетесь на модель в вопросе «запоминания» предпочтений пользователя, вы строите дом на песке. Вам нужно самостоятельно реализовывать управление состоянием. Решать, что кэшировать, и как его обновлять. И понимать, что каждый байт истории, который вы пересылаете заново, съедает место на вашей «доске».

Когда контекст становится шумом

Перегрузка промпта дает предсказуемо негативный эффект.

Шум убивает сигнал. Если вы вываливаете на модель всю кодовую базу, чтобы спросить об одном баге, она сталкивается с проблемой «иголки в стоге сена». Она может сослаться на не тот файл, предложить изменения в мертвом коде или выдать общий ответ, потому что она не может