Токены и контекстное окно
У модели нет памяти — у неё есть стол. Всё, что она знает прямо сейчас, лежит на этом столе, и у стола есть края.
Попроси модель посчитать, сколько букв «о» в слове «молоко», — есть приличный шанс, что она ошибётся. Попроси её на сороковом сообщении диалога соблюдать правило, которое ты задал в самом начале, — и она может тихо его проигнорировать.
Ни то ни другое не про интеллект. Оба провала растут из того, как текст вообще попадает в модель, и оба совершенно предсказуемы, если знать две вещи: что она читает и сколько может удержать за раз.
Она не видит букв
Текст доходит до модели не буквами. До всякой работы он режется на куски — токены, то есть часто встречающиеся сочетания символов. Обычное слово чаще всего один токен, длинное или редкое разваливается на несколько: «невероятный» может прийти как «не» + «вероят» + «ный». Грубый ориентир: в английском токен — это примерно четыре символа, в русском заметно меньше, поэтому один и тот же смысл по-русски стоит больше токенов, чем по-английски.
Внутрь токена модель не заглядывает. «Молоко» приезжает к ней двумя-тремя комками, а не шестью буквами, — и посчитать «о» для неё примерно то же, что назвать количество букв в слове, показанном картинкой с другого конца комнаты. Дорассуждать до ответа она часто может, но это обход собственного зрения, а не чтение.
Отсюда узкое, но полезное правило: всё, что живёт на уровне отдельных символов, — не задача для модели. Посчитать буквы или слова, точно переставить символы, проверить, есть ли в пароле цифра, сложить в столбик длинные числа. Не потому что она глупая, а потому что этот слой ей не виден. Такую работу отдают коду — который модель с удовольствием напишет, — а не её глазам.
Побочный эффект оттуда же: рифмы, анаграммы и игра слов даются модели непропорционально тяжело.
Стол
Теперь вторая вещь — та, что реально меняет манеру работы.
У модели нет памяти о тебе. Вообще. Между двумя твоими сообщениями внутри неё ничего не сохраняется.
Вместо памяти у неё стол. Всё, чем она может пользоваться прямо сейчас, лежит на этом столе: системная инструкция от сервиса, твои файлы, весь диалог с начала, её собственные прошлые ответы и твоё последнее сообщение. Она перечитывает стол целиком заново на каждом ходу и выдаёт следующую реплику. Потом стол сметается и накрывается заново из истории переписки.
Модель знает ровно то, что лежит на столе. И больше ничего.
У стола есть жёсткий край — контекстное окно, измеряемое в токенах. Современные окна большие: сотни тысяч токенов, несколько книг. Но «большое» — не «бесконечное», и отсюда три следствия, которых не отменит никакая формулировка запроса.
Новый чат — это пустой стол. Не забывчивый коллега, а другой коллега, который тебя никогда не видел. Всё, что модель «знает» о твоём проекте, должно снова оказаться на столе — иначе этого не существует.
Со стола ничего не уходит само. Каждая неудачная попытка, каждый забракованный черновик, каждое «нет, не так» продолжает лежать там и тянуть ответы на себя. Это самая частая причина, по которой диалог медленно портится: человеку кажется, что он исправляет модель, а на деле он подкладывает на тот же стол всё больше противоречащих друг другу бумаг.
Позиция имеет значение. В 2023 году Нельсон Лю с коллегами из Стэнфорда опубликовали работу с отличным названием Lost in the Middle: нужный факт прятали в разных местах длинного контекста и смотрели, найдёт ли модель. Вышла U-образная кривая — то, что лежало в начале и в конце, использовалось надёжно, а закопанное в середину терялось заметно чаще. Новые модели держатся лучше, но форма кривой никуда не делась. Где именно ты положил кусок в длинном запросе — это решение, а не оформление.
Зеркало твоей головы
Здесь есть красивая инверсия, которую стоит забрать, и растёт она прямо из сферы «Как учиться».
Твоя рабочая память держит около четырёх элементов одновременно — ровно поэтому существуют чанки. Зато долговременная память огромна и при интервальных повторениях практически вечна.
У модели всё наоборот. Её «рабочая память» гигантская: сотни страниц одновременно, причём с точностью до буквы. А долговременной нет вовсе — из разговора в разговор не переносится ничего, пока что-нибудь не положит это обратно на стол.
Из зеркала следует разделение труда, которое проходит через всю сферу. Модель держит объём: длинные документы, весь код, все версии черновика. Ты держишь смысл и непрерывность: зачем это, о чём мы договорились, что здесь важно. Попытка работать наоборот — самому помнить то, что удержала бы модель, и ждать от модели, что она вспомнит твоё решение недельной давности, — верный способ провалить обе роли сразу.
Откуда берутся деньги и тормоза
Раз модель перечитывает стол целиком на каждом ходу, длинный диалог честно дороже короткого в пересчёте на сообщение и часто медленнее. Это не дефект, а тот же факт, выраженный в деньгах: на пятидесятом ходу модель отвечает не на твою последнюю реплику — она перечитывает сорок девять предыдущих и только потом отвечает.
Отсюда совет, который поначалу кажется неправильным: один чат — одна задача, и не надо к нему привязываться. Когда разговор своё отработал, попроси свернуть договорённости в резюме, открой новый чат и положи резюме на чистый стол. Мусор теряешь, вывод сохраняешь. Седьмая статья превращает это в рабочую привычку, а восемнадцатая — в постоянную настройку, чтобы не накрывать стол вручную каждый раз.
На практике
Вставляй, а не пересказывай. «Вот моя статья, вот замечания к ней» бьёт любое их описание. Положить вещь на стол — самое дешёвое и самое сильное движение из всех доступных.
Начало и конец — дорогая недвижимость. В длинном запросе ставь задачу сверху, а ключевое ограничение повтори внизу, после материала. То, что в середине, может провалиться.
Не выхаживай сломанный диалог. Три неудачные попытки подряд — не повод стараться сильнее, а сигнал, что стол завален неудачами. Сверни в резюме, начни заново, накрой стол чисто.
Работу с символами отдавай коду. Посчитать, точно переформатировать, проверить строку — попроси скрипт, запусти его, а модель пусть рассуждает о результате, а не разглядывает символы.
Помни, что она не помнит. Если это понадобится завтра — место этому в файле, проекте или твоих заметках, а не в чате, к которому ты собираешься проскроллить.
Проверь себя
Закрой статью и ответь своими словами:
- Что такое токен и почему из-за него счёт букв — плохая задача для модели?
- Что лежит на «столе» и что происходит со столом между двумя твоими сообщениями?
- Почему длинный диалог не умнеет, а портится, и что с этим делать?
- Что показала работа Lost in the Middle и как это меняет раскладку длинного запроса?
- Чем память модели зеркальна твоей и какое разделение труда из этого следует?
Коротко
- Текст приходит токенами — кусками символов, а не буквами. Работа на уровне символов модели не видна; отдавай её коду.
- Памяти у модели нет. Всё, чем она пользуется, лежит на столе: системная инструкция, файлы, весь диалог, твоё сообщение. Каждый ход она перечитывает стол целиком.
- Новый чат — пустой стол, а не забывчивый коллега.
- Со стола ничего не уходит само: неудачные попытки и забракованные версии продолжают тянуть ответы. Поэтому длинные диалоги деградируют.
- Lost in the Middle (Лю и др., 2023): начало и конец длинного контекста используются надёжно, середина теряется. Раскладывай соответственно.
- У тебя четыре ячейки рабочей памяти и огромная долговременная; у модели наоборот. Пусть она держит объём, а ты — смысл.
- Модель знает ровно то, что лежит на столе. И больше ничего.