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