Есть два способа, которыми чат-бот может казаться помнящим тебя. Первый — длинное контекстное окно, которое забывает всё, как только окно сдвигается. Второй — записывать.
Этот записывает — и, что редкость, даёт тебе прочитать записанное.
Почему персонажи уплывают
У модели нет памяти между сообщениями. Всё, что она будто бы вспоминает, было заново отправлено ей в промпте. Когда разговор перерастает то, что помещается, что-то приходится выбрасывать или сжимать — и вот здесь начинается дрейф: персонаж перестаёт знать, как зовут твою сестру, потом противоречит сказанному на прошлой неделе, потом тихо становится другим человеком с теми же словами.
Большинство продуктов решают это фоновым пересказом. Работает — до тех пор, пока пересказ не ошибётся, и тогда ошибка остаётся навсегда, потому что ты её не видишь и не можешь исправить.
Что на самом деле хранится
Короткие факты, извлечённые из разговора по ходу дела. Не стенограмма, не векторный слепок — строчки, которые можно прочитать.
Они разграничены сразу тремя способами, и именно это не даёт историям перетекать друг в друга:
- По персонажу — то, что знает один персонаж, другому неизвестно.
- По теме — отдельные ветки с одним персонажем держат отдельную память.
- По человеку — ничто из сказанного тобой персонажу никогда не видно другим, кто говорит с тем же персонажем.
Прочитать, исправить, удалить
Список памяти — это экран в настройках чата. Открой его и увидишь факты по порядку. Если один неверен — исправь. Если его вообще не должно было быть — удали. Если не хочешь ничего из этого — выключи память для этого разговора, и дальше ничего не будет записываться.
Звучит мелко, а меняет саму природу сбоя. Неверный факт в скрытом пересказе отравляет каждый следующий ответ, и остаётся только гадать, почему персонаж стал странным. Неверный факт в списке — это строчка, которую ты правишь за пять секунд.
Когда персонаж впервые что-то записывает, тебе сообщают об этом один раз. Не на каждом сообщении — один раз, чтобы ты знал, что механизм существует и где его искать.
Что никогда не записывается
Каждый извлечённый факт проходит через фильтр, который вычищает то, чему в хранилище памяти вообще не место: адреса электронной почты, номера телефонов, номера карт, номера документов.
Это фильтр, а не обещание насчёт того, что ты печатаешь. Он убирает шаблоны, которые узнаёт. Самое безопасное, что можно сделать с настоящим номером карты, — по-прежнему не отправлять его чат-боту.
Память, когда сцена ветвится
Любой ответ можно разветвить и оставить обе ветки. Новая ветка наследует память, которая была у родительской в тот момент — так что ответвление начинается с общего прошлого, а не с нуля, и дальше расходится само.
В этом и смысл ветвления: две версии одних и тех же отношений, а не два незнакомца.
Куда память путешествует
Если персонаж становится собственным Telegram-ботом, память там работает ровно так же, как в основном чате — по-прежнему на персонажа, тему и человека. Тот, кто общается с твоим ботом, строит с этим персонажем свою память, и она принадлежит только ему.