Модели решений

Модель решений – это небольшая модель, которая отвечает Marinara на вопросы "да или нет", например "Does the latest message move the scene to a new place?". Ее используют лорбуки, свои агенты, промпты и групповые чаты. Она необязательна. Без нее чаты продолжают работать, а каждая функция использует резервное поведение, описанное в разделе Где Marinara ее использует.

Ее ответы управляют действиями Marinara и никогда не публикуются в чате. Модель оценивает утверждение числом от 0 до 1. Marinara сравнивает это число с порогом и трактует результат как да или нет. Модель также может выбрать один ответ из короткого списка, например "angry", "sad" или "none of these".

Наш совет: если сомневаетесь, оставьте None (нет). Если решения нужны, используйте встроенную модель, которая у вас, возможно, уже есть, или модель чата на сервере, который вы уже запускаете. Ни то ни другое не требует дополнительных расходов.

Выбор модели решений

Перед началом прочитайте раздел Что выбрать.

  1. Нажмите Connections (подключения) на верхней панели и откройте блок Jobs (задачи).
  2. В группе Behind the scenes (за кулисами) нажмите на строку Decision (решения). Откроется список.
  3. Выберите модель. В списке три группы:
  1. Чтобы проверить модель, нажмите шестеренку Decision settings (настройки решений) в строке и нажмите Test (проверить). Эта кнопка есть у вариантов из группы Built-in model. Для аккаунта TypeSafe или OpenRouter откройте Edit model (изменить модель) у его модели и нажмите Test provider (проверить провайдера). Для аккаунта Own decision server (собственный сервер решений) используйте Test в меню ⋯ аккаунта.

Успешная проверка показывает вероятность ответа "да" и время ответа. Для модели на вашем компьютере она также сообщает, были ли доступны логарифмы вероятностей и отвечает ли модель напрямую. Логарифмы вероятностей – это числа уверенности модели для каждого слова, которое она могла бы написать. Проверка отправляет фиксированный пример, а не ваш чат.

Если не сработало, сообщение объясняет почему. Частые причины: ключ отклонен, сервис ограничивает запросы, встроенная модель не запущена или ответ превысил лимит времени. См. Устранение неполадок.

Варианты, которые сейчас не могут отвечать, остаются в списке серыми, с указанием причины. Выбор None выключает решения, не удаляя ни вопросы активации, ни утверждения решений.

Что выбрать

Если вы уже запускаете локальную модель, сначала попробуйте ее и проверьте ее на сообщениях из своих чатов. Формулировки очень важны. См. Как писать утверждения.

Jev и Open-Jev – разные модели. Jev – облачная модель TypeSafe, доступная напрямую или через OpenRouter. Open-Jev – отдельно опубликованная модель на основе Qwen, которую Marinara может запускать локально. Тесты Open-Jev не измеряют облачную Jev.

На Android (Termux) Built-in decision model (встроенная модель решений) работать не может, а небольшая локальная модель на процессоре телефона может оказаться слишком медленной. Практичный выбор – облачный аккаунт, например Jev через OpenRouter. См. Настройка подключения Decision.

Пресеты, карточки и агенты пишите для "модели решений", а не с условием "требуется Jev". Синтаксис утверждений одинаков для любой модели, но разные модели могут отвечать по-разному. При импорте содержимого с решениями, включая свои агенты и установки из Agent Organizer, Marinara показывает уведомление со ссылкой на это руководство. Восстановление целого профиля из ZIP его не показывает.

Использование встроенной модели

Если встроенная модель у вас скачана, ее можно использовать для решений без аккаунта и бесплатно. См. Настройка встроенной модели.

  1. Нажмите на строку Decision в группе Behind the scenes блока Jobs.
  2. Выберите Built-in model (или Built-in model (utility), если она у вас есть).
  3. Нажмите шестеренку Decision settings, затем нажмите Test.

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

Настройка Thinking (рассуждение) определяет, что происходит, когда модель не может ответить одним словом. Некоторые модели всегда сначала рассуждают.

ThinkingЧто делает
Auto (try one word, allow thinking if the model cannot)По умолчанию. После двух неудачных ответов одним словом подряд модели разрешается сначала рассуждать, и Marinara сообщает вам об этом.
Off (always answer in one word)Модель, которая не может ответить одним словом, не дает ответа.
Allowed (let the model think first)Никогда не просит модель пропускать рассуждение.

Рассуждающей модели нужны секунды, поэтому по умолчанию она отвечает только для проверок, которые выполняются после появления ответа на экране, например для агентов постобработки. Чтобы она проверяла и агентов, которые работают до ответа, включите Also gate agents that run before the reply (проверять также агентов до ответа). Тогда каждый ответ будет ее ждать.

Вероятности да/нет общей модели чата годятся для порога, но ее не обучали калибровке так, как специализированную модель решений. Среда выполнения, которая не возвращает логарифмы вероятностей, отвечает просто 1 или 0. Настраивайте пороги по своим чатам.

На уже работающем сервере

Если ваша модель чата работает в Ollama, LM Studio, llama.cpp или другом OpenAI-совместимом сервере, она может отвечать на решения, и Marinara не придется загружать вторую копию.

  1. Нажмите ⋯ у этой модели в панели Connections и выберите Use this model for decisions (использовать эту модель для решений). Откроется окно Add account (добавить аккаунт) на шаге решений с тем же адресом, моделью и ключом.
  2. Выберите модель, затем нажмите Test decision (проверить решение). Успешная проверка сообщает, вернул ли сервер логарифмы вероятностей и пришлось ли модели сначала рассуждать. Нажмите Done (готово).
  3. Нажмите на строку Decision в группе Behind the scenes и выберите новую модель.

Такой аккаунт можно создать и самостоятельно. Используйте аккаунт Decision с источником OpenAI-compatible chat model (Ollama, LM Studio, llama.cpp) (OpenAI-совместимая модель чата), тем же адресом, что у вашего аккаунта чата (например, http://localhost:11434/v1 для Ollama), и именем модели, которое использует сервер.

Запросы к ней устроены так же, как ко встроенной модели: одно слово да/нет на каждое утверждение. Утверждения отправляются по одному, потому что Marinara не может знать, сколько запросов ваш сервер обрабатывает одновременно. Thinking для аккаунта всегда Auto. Серверу на другом компьютере нужен PROVIDER_LOCAL_URLS_ENABLED. См. Подключение локальной модели или модели на своем сервере.

Настройка подключения Decision

Облачный аккаунт Decision отправляет сервису выбранные последние сообщения и утверждения и может стоить денег. Smart response order также отправляет список персонажей.

  1. Нажмите Connections на верхней панели, затем нажмите Add (добавить).
  2. В разделе Decisions (решения) нажмите TypeSafe или Own decision server. Для OpenRouter нажмите OpenRouter в разделе Chat (чат), подключите его, затем используйте Use this key for decisions (использовать этот ключ для решений) в меню ⋯ модели.
  3. Введите API key (ключ API), а для Own decision server – Server address (адрес сервера). Нажмите Connect (подключиться). Окно закроется, а в панели появится новый аккаунт.
  4. Нажмите на строку Decision в группе Behind the scenes и выберите новую модель.
  5. Чтобы проверить ее, нажмите на модель в панели, чтобы открыть Edit model, затем нажмите Test provider в карточке Provider tests (проверки провайдера). У модели Own decision server там нет кнопки Test provider. Вместо этого откройте меню ⋯ аккаунта в панели и нажмите Test.

Успешная проверка Test provider показывает вероятность, время ответа и лимит времени аккаунта. Test аккаунта в меню ⋯ сообщает только, сработала ли проверка и сколько времени она заняла. Проверка ждет не менее 10 секунд, а при более долгом лимите – на 5 секунд дольше него. Если ответ занял больше лимита, результат это отмечает: в чатах такой ответ считался бы отсутствием ответа.

Если не сработало, см. Устранение неполадок.

В редакторе Decision (Edit model у модели решений) есть такие поля:

ПолеЧто делает
Decision source (источник решений)TypeSafe, OpenRouter, Custom System One endpoint (собственный эндпоинт System One) или OpenAI-compatible chat model (Ollama, LM Studio, llama.cpp). Задается при создании модели.
API key source (источник ключа API)Enter a separate key (optional for local servers) (ввести отдельный ключ) или Use key from … (использовать ключ из …) другого аккаунта. Связанные ключи учитывают последующие изменения ключа. Собственная модель System One или OpenAI-совместимая модель может заимствовать ключ пользовательского аккаунта чата, только если у обоих адресов совпадают схема, хост и порт.
Recent-message token budget (лимит токенов последних сообщений)Сколько оценочных токенов чата отправлять. От 1 до 30 000. По умолчанию 30 000 для TypeSafe и OpenRouter и 3 500 для собственных серверов. Marinara сначала отбрасывает старые сообщения, затем обрезает начало самого нового сообщения. Отклоненный или превышающий лимит запрос не дает ответа.
Time limit (seconds) (лимит времени в секундах)Сколько ждать каждое утверждение во время чата. От 0,5 до 30. По умолчанию 1,5, или 4 для OpenAI-совместимой модели чата. См. Лимиты времени.

TypeSafe отправляет запросы на https://api.typesafe.ai. Его Base URL (базовый адрес) можно заменить другим сервером с API TypeSafe, без /v1/systemone. Ему по-прежнему нужен ваш ключ TypeSafe, который отправляется на этот сервер. Custom System One endpoint принимает сервер System One, который вы запускаете сами, например Open-Jev или Strands decider. Укажите его адрес без /v1/systemone. Сервер моделей чата, например Ollama, не поддерживает System One. Для него используйте OpenAI-compatible chat model.

Некоторые облачные сервисы иногда отвечают дольше 1,5 секунды, и из-за этого решения выглядят случайно сломанными. Проверьте несколько раз и установите лимит выше самого медленного ответа. Утверждения, которые задаются до ответа, например решения пресета или вопрос активации агента, работающего до ответа, могут задержать ответ на этот срок каждое.

При удалении аккаунта, ключ которого используется для решений, появляется предупреждение. Затем аккаунт Decision нужно привязать заново, а до тех пор решения не дают ответа. Импортированные файлы подключений никогда не содержат ключей API и ссылок на заимствованные аккаунты, поэтому восстановите их вручную.

Где Marinara ее использует

Вопрос активации решает, запускать ли агента. Утверждение решения в его промпте определяет, что получит этот уже работающий агент. Используйте {{#if decision:"..."}} для условий да/нет и {{#if decision_choice:"..." == "..."}} для выбора среди ответов.

Что видит модель

Для вопросов активации и утверждений в промптах и лорбуках модель получает утверждение и последние сообщения в том виде, в каком они сохранены в чате. Она не получает ваш пресет, карточку персонажа, персону, записи лорбуков (в том числе Constant), сводки и результаты агентов. Текст, размещенный между сообщениями, например запись с позицией @ Depth (на заданной глубине), тоже исключается. Если утверждение зависит от чего-то из этого, укажите сам факт в утверждении.

Smart response order также отправляет список персонажей: имя каждого кандидата, статус, активность и разговорчивость, если они известны, а также до 300 символов личности или, если она пуста, описания.

Automate active characters также отправляет список персонажей: имя каждого персонажа и до 300 символов описания или, если оно пусто, личности, а если большой состав не помещается, описание сокращается до 100 символов или остаются одни имена. Кроме того, передаются имена, которые Character Tracker видел в последний раз. Если даже одни имена оставляют слишком мало места для сообщений, модель не спрашивают, и ее заменяет Character Tracker. Ответы в группе Merged помечаются как "the narrator", поскольку один ответ говорит за всех.

Облачный сервис решений получает эти списки вместе с сообщениями.

Advanced Memory использует собственную модель решений для каждого чата, и правило последних 5 сообщений к ней не относится. Проверки сцен читают соответствующее окно истории. Извлечение воспоминаний отправляет недавний текст разговора и до 24 отобранных архивных сводок – или больше, если значение Maximum recalled scenes (максимум извлекаемых сцен) выше, – а затем исходные сообщения из выбранных моделью сцен, после проверки доступа персонажей. Облачные сервисы получают эти тексты, иногда несколькими пакетами. Каждый проход извлечения обычно получает от 10 до 25 секунд в зависимости от скорости модели. Оба прохода делят 40 секунд на ответ, поэтому проход может получить меньше 10 секунд. Для воспоминаний, по которым ответ не пришел вовремя, используется обычный поиск. См. Необязательная модель решений.

Пороги

Вероятности разных моделей несопоставимы. Один и тот же пример может получить 0,99 у одной модели и 0,2 у другой. Порог да/нет по умолчанию зависит от модели:

Настройка агента Run when probability is at least (запускать при вероятности не ниже) переопределяет это значение. Если сохраненное значение отличается, редактор предлагает восстановить рекомендацию модели. Проверяйте ее при каждой смене модели. Утверждения в промптах и поля Decision лорбуков используют порог модели по умолчанию, и порог агента на них не влияет.

Собственная Open-Jev через аккаунт Custom System One все равно использует 0,5, потому что Marinara не может откалибровать произвольные пользовательские эндпоинты. Ее результаты могут отличаться от встроенной Open-Jev, в том числе положительный результат ниже 0,5 будет прочитан как нет.

Лимиты времени

Решение, не пришедшее вовремя, не дает ответа, и генерация продолжается с резервным поведением функции (см. Где Marinara ее использует). Каждый лимит действует на одно утверждение. Запрос с несколькими утверждениями получает лимит на каждое, и каждый ответ Choice считается утверждением. Локальная модель обрабатывает лишь несколько запросов одновременно, поэтому утверждения ждут очереди, а время утверждения отсчитывается с момента, когда модель начинает его обработку.

Отмена генерации останавливает запросы решений.

Другие настройки

Эти настройки находятся под шестеренкой Decision settings:

Учитывайте неверные ответы

Любая модель может ответить неверно, а правильные ответы "да" могут находиться близко к порогу.

Устранение неполадок

Чтобы видеть оценки и результаты решений во время генерации, включите Debug Mode или задайте уровень журналирования debug. См. Уровни логирования. Чтобы проверить свои утверждения без генерации ответа, откройте Peek Prompt → Decision diagnostics → Test decisions (Peek Prompt → диагностика решений → проверка решений). Явные проверки вызывают выбранную модель и на облачном сервисе могут стоить денег. См. Проверка условий решений.

Установка модели решений через Marinara

Built-in decision model – это экспериментальная специализированная модель решений, которую Marinara скачивает и запускает отдельным локальным процессом рядом с вашей моделью чата. Ее расход памяти прибавляется к расходу модели чата. Если у вас уже есть локальная модель, сначала попробуйте решения на ней.

Моделям Open-Jev нужны Linux x86-64, видеокарта NVIDIA с compute capability 7.5 или новее (Turing, серия RTX 20 и новее) и драйвер 580 или новее. Linux ARM и более старые видеокарты не поддерживаются. Если модель не может работать, вариант остается видимым, объясняет причину и предлагает Set up a Decision provider instead (вместо этого настроить провайдера решений).

МодельЗагрузка моделиДиск вместе со средой выполненияПамять GPU
Open-Jev 2BОколо 4,6 ГБОколо 10 ГБОколо 4,8 ГБ (4,5 ГиБ)
Open-Jev 9BОколо 19,4 ГБОколо 25,3 ГБОколо 23,6 ГБ (22 ГиБ)

Это оценки каталога. Модель 9B оставляет мало запаса на видеокарте с 24 ГБ. Проверьте вердикт установщика для своей карты.

  1. Нажмите Add в панели Connections и нажмите Built-in model (decisions) в разделе Decisions. Откроется окно Built-in decision model. Его также можно открыть со страницы карточки Built-in model.
  2. Прочитайте предупреждение, затем включите Use the built-in decision model (использовать встроенную модель решений). Окно Turn on the built-in decision model? покажет вердикт для вашего компьютера. Нажмите Enable (включить), а если вердикт – предупреждение, то Enable anyway (все равно включить).
  3. В разделе Available decision models (доступные модели решений) выберите Open-Jev 2B или Open-Jev 9B. Нажмите Download and install (скачать и установить) и подтвердите размер, вердикт оборудования и лицензии. До этого ничего не скачивается.
  4. Нажмите на строку Decision в группе Behind the scenes и выберите Built-in model (decisions).

Другие элементы управления в окне:

Первый ответ модели после запуска медленнее, поэтому при загрузке Marinara задает ей один вопрос для прогрева. Если он не удается, модель все равно запускается, а задержка приходится на первый настоящий вопрос. Ответ с большим количеством утверждений в длинном чате занимает больше времени. Open-Jev 2B в длинном чате тратит около четверти секунды на утверждение.

Самостоятельный запуск Strands decider

Strands decider 2B – еще одна открытая модель решений (Apache-2.0), которая поддерживает System One. Marinara не может ее установить, но она работает как Custom System One endpoint, пока вы держите ее запущенной.

  1. В среде с Python 3.10 или новее установите ее и запустите ее сервер:
   pip install strands-decider
   strands-decider serve StrandsAgents/strands-decider-2B-hobson-v19 --port 8000

Она использует видеокарту NVIDIA или Apple silicon, если находит их, а иначе – процессор, но медленнее. При первом запуске скачиваются модель и около 4,6 ГБ базовых весов, а ее пакеты Python занимают около 5,5 ГБ. У сервера нет пароля, поэтому оставьте его на 127.0.0.1.

  1. Добавьте аккаунт Own decision server с адресом http://127.0.0.1:8000 в поле Server address. Подойдет любое имя модели.
  2. Выберите его в строке Decision, затем проверьте его кнопкой Test в меню ⋯ аккаунта. Первый ответ после запуска занимает около 2 секунд, дольше лимита времени по умолчанию, поэтому выполните одну проверку перед началом чата.

Ее вероятности откалиброваны, поэтому ей подходит стандартный порог 0,5, в отличие от собственной Open-Jev (см. Пороги). Ее ответы зависят от формулировки, поэтому следуйте разделу Как писать утверждения.

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