Skip to content

Промпты

Промпты управляют генерацией ответов LLM. Они определяют контекст и параметры, отправляемые AI-модели.

Конфиг

Поддерживается 3 провайдера:

  • OpenAI (В теории поддерживается любой OpenAI совместимый, но могут быть нюансы)
  • Gemini
  • Claude

Список моделей всегда запрашивается из прокси. Если по какой-то причине прокси не может отдать список моделей, ее название можно ввести вручную и выбрать пункт Create "..."

Client-only stop string - некоторые прокси не поддерживают стоп-стринги. Этот параметр позволяет обрубать генерацию со стороны клиента, когда в тексте встречается stopSequence.

Контент

  • Контент разбит на сообщения.
  • При отправке запроса, каждое сообщение будет обработано и отправлено от указанной роли.

Роль system

Gemini не поддерживает роль system, поэтому, для него она преобразуется в assistant

  • Пустые сообщения вырезаются
  • Если добавить последнее сообщение от лица assistant, то получится префилл

Переменные

ПеременнаяОписание
{{user}}Имя персоны
{{persona}}Описание персоны
{{char}}Имя персонажа
{{description}}Описание персонажа
{{impersonate}}Текущая выбранная персона
{{scenario}}Сценарий
{{history}} {{history:1:2}}История сообщений (см примечание ниже)
{{external}} {{external:current_info}} {{external:summary}}Внешний блок
{{lastUserMessage}}Последнее сообщение юзера
{{random}} {{random::1::2::3}}Случайное значение из списка
{{lorebook}} {{lorebook:in_chat}}Вхождения лорбуков
{{newline}}Перенос строки
{{setvar}} {{addvar}} {{incvar}} {{decvar}} {{getvar}}Работа с локальными переменными. При установке они буду доступны только во время текущей генерации. Например, если переменная будет установлена в основном пресете, ее значение не будет доступно в при генерации доп. блока
{{setglobalvar}} {{addglobalvar}} {{incglobalvar}} {{decglobalvar}} {{getglobalvar}}Работает аналогично локальным переменным, но в отличии от них при установке, запоминаются для текущего чата до следующей перезаписи. Позволяет шарить переменные между разными запросами

{{char}} и {{description}}

Если в чате несколько карточек персонажей, то {{char}} и {{description}} можно использовать с аргументами, чтобы обратиться к конкретной карточке. В примере выше:

  • {{char:1}} развернется в "Maria"
  • {{char:2}} в "Anon" (Несмотря на то, что Anon указан как персона)
  • {{char:3}} в "Kotya"
  • {{char}} в "Maria, Kotya", то есть имена всех персонажей, кроме персоны юзера, склеенные через запятую.

Также есть нюансы с использованием этих тегов внутри карточек.

{{impersonate}}

По умолчанию заменяется именем текущей персоны.

{{random}}

Заменяется на случайный аргумент.

  • {{random::value 1::value 2}} - Заменится на строку "value 1" или "value 2"

{{external}}

Подключает внешний блок. Контент ищется начиная с текущего сообщения и вверх по истории.

В виде агрумента принимает имя блока: {{external:current_info}}, {{external:summary}}

{{lorebook}}

Выводит все совпавшие записи в указанном группе.

Пример:

Есть запись с Position group = "Default". Чтобы ее вывести достаточно указать {{lorebook}}

Но если у записи задана Position group, то для ее вывода надо указать имя группы: {{lorebook:in_chat}}

{{history}}

У {{history}} поддерживается 2 опциональных аргумента, которые позволяют брать только диапазон сообщений. Таким образом можно делать аналог in-chat блоков с глубиной. Пара примеров:

  • {{history}} - все сообщения
  • {{history:1:10}} {{history::10}} - последние 10 сообщений
  • {{history:11}} - все сообщения начиная с 11
  • {{history:7:10}} - последние 4 сообщения начиная с 7

Полный пример. Делаем аналог current_info на глубине 1:

{{external:summary}} // Подключаем саммари
{{history:3}} // Все остальные сообщения
{{external:current_info}} // Внешний блок
{{history:1:2}} // Последнее сообщение юзера
// Здесь указывается 1:2, потому что во время генерации "1" - это текущее сообщение, которое сейчас генерируется

Код-блоки

Код блоки, подключенные для текущего промпта.

Смотри отдельную статью, как это работает.

Released under the GNU License.