Лимиты токенов и рекурсия в лорбуках

Лимиты ограничивают объем текста из лорбуков, который доходит до ИИ, чтобы лорбуки не вытесняли чат. В этом руководстве разобраны поля Token Budget (лимит токенов) и Entry Limit (лимит записей) у каждого лорбука, параметр чата Lorebook Token Budget, то, как Marinara отсекает записи, и сканирование в режиме Recursive (рекурсивно).

Токены – это небольшие кусочки текста, которые считают модели. Контекстное окно модели – это объем текста, который она может прочитать за один раз, и считается он в токенах. Текст лорбуков делит это окно с остальной частью промпта.

Два лимита токенов

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

Настройка полей Token Budget и Entry Limit у лорбука

  1. Откройте лорбук в панели Lorebooks (лорбуки).
  2. Нажмите вкладку Overview (обзор).
  3. Задайте значения Token Budget и Entry Limit.
НастройкаПо умолчаниюЧто делает
Token Budget2048Максимум токенов, который этот лорбук добавляет к одному ответу. Значение 0 снимает ограничение.
Entry Limit100Максимум записей, которые этот лорбук добавляет к одному ответу. Допустимы значения от 1 до 1000.

Поле Entry Limit считает записи, а не токены. Лорбук перестает добавлять записи, как только достигает любого из двух пределов.

Например, при Token Budget, равном 2048, одну запись в 3000 токенов добавить нельзя никогда. Уменьшайте лимит, если лорбук занимает слишком много места. Увеличивайте его, если важные записи постоянно пропускаются.

Настройка параметра Lorebook Token Budget в чате

  1. Откройте чат.
  2. Откройте Chat Settings (настройки чата).
  3. Найдите раздел Lorebooks и задайте значение Lorebook Token Budget.

По умолчанию – 8192, а значение 0 снимает ограничение. Это общий лимит для всех лорбуков, активных в этом чате, и он действует вдобавок к собственному полю Token Budget каждого лорбука.

Как отсекаются записи

Когда совпадений больше, чем позволяет лимит, Marinara добавляет записи в таком порядке.

  1. Записи типа Constant.
  2. Записи, совпавшие с последними сообщениями.
  3. Остальные записи в порядке вставки (поле Order у записи).

Marinara добавляет каждую запись, которая еще помещается. Если запись не помещается, Marinara пропускает ее и продолжает проверять остальные, поэтому запись поменьше может попасть в промпт даже после того, как более крупная была пропущена.

Пропущенные записи в панели Active Context

  1. Откройте Chat Settings.
  2. Разверните раздел Active Context (активный контекст). В нем показан результат последнего сканирования лорбуков.

Если совпавшие записи были пропущены, сверху появляется уведомление с текстом "N matching lore entries were skipped by token budget." В нем названы все лимиты, из-за которых записи были пропущены, и указано, где их изменить. Разверните его, чтобы увидеть каждую пропущенную запись, ее лорбук, совпавшие ключевые слова, оценку размера и то, какая часть лимита уже израсходована. Причина бывает одной из следующих.

ПричинаЗначение
lorebook budgetЗапись не поместилась в Token Budget этого лорбука.
chat budgetЗапись не поместилась в Lorebook Token Budget чата.
lorebook and chat budgetsОба предела уже были заполнены.
current-location context capЗапись привязана к текущей локации на карте, а для нее действует собственный фиксированный предел в 2048 токенов.

Запись с пустым текстом или с текстом, который после обработки макросов становится пустым, в списке не показывается. Ее макросы все равно выполняются, так что {{setvar}} в ней по-прежнему задает переменную. Если оба лимита равны 0, пропущенные записи может показать только предел локации.

Если крупные лорбуки постоянно пропускаются, Active Context предлагает агентов Knowledge Retrieval или Knowledge Router. См. Источники знаний. Для больших лорбуков они часто подходят лучше, чем более высокий предел.

Рекурсивное сканирование

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

  1. Откройте лорбук и перейдите на вкладку Overview.
  2. Включите переключатель Recursive. По умолчанию он выключен.
  3. Задайте значение Max Depth (максимальная глубина), если хотите изменить длину цепочки.

Max Depth – это число дополнительных проходов сканирования. По умолчанию – 3, допустимы значения от 1 до 10. Чем больше значение, тем больше связанного лора находится и тем выше нагрузка.

У каждой записи есть и собственный переключатель Recursion (рекурсия), по умолчанию выключенный. Он решает, может ли содержимое этой записи активировать другие записи. Оставьте его выключенным, если запись не должна вызывать цепочку. См. Записи лорбука: ключевые слова, позиция и время срабатывания.

Рекурсия не обходит лимиты. Записи, найденные рекурсивным проходом, учитываются в Token Budget, Entry Limit и Lorebook Token Budget чата.

Смежные руководства