Создание своих агентов
Свой агент – это помощник, которого вы пишете сами: ваши инструкции, момент запуска и то, что ему разрешено менять. Собирайте его, когда ни один агент для скачивания не делает того, что вам нужно. Если установленный агент близок к задуманному, наведите курсор на его карточку в панели Agents (агенты) и нажмите Copy agent (копировать агента), чтобы получить редактируемую копию.
Перед началом: прочитайте Агенты: помощники ИИ в чатах. Собранный агент сам по себе не запускается. Потом его нужно добавить в чат. Свои агенты работают во всех режимах чата.
Создание своего агента
- Откройте панель Agents.
- Нажмите New (иконка плюса) в верхней части. Откроется редактор агента на всю страницу.
- Введите название в поле заголовка, например
Weather Reporter. - Заполните поля Description (описание) и Author (автор).
- Выберите Pipeline Phase (фаза конвейера). См. раздел Pipeline Phase.
- Включите нужные ему возможности в разделе Custom Agent Abilities (возможности своего агента).
- Выберите Result Type (тип результата), который соответствует тому, что выдает агент. Если не уверены, выберите Context Injection. Этому типу не нужны ни возможности, ни строгий формат вывода.
- Впишите инструкции агента в поле Prompt Template (шаблон промпта).
- Нажмите Save (сохранить) в верхней панели. Появится зеленый значок Saved.
Теперь агент виден в разделе Custom Agents (свои агенты) панели Agents. Чтобы его использовать, откройте чат, перейдите в Chat Settings (настройки чата), включите Enable Agents (включить агентов) и добавьте агента из раздела Custom Agents.
Pipeline Phase
Параметр Pipeline Phase задает, когда работает агент.
- Pre-Generation: до ответа. Может добавить контекст или изменить промпт.
- Parallel: одновременно с ответом. Готовый ответ такому агенту не виден.
- Post-Processing: после ответа. Может прочитать ответ, а для некоторых типов результата – и отредактировать его.
Некоторые типы результата задают фазу принудительно. Text Rewrite переключает ее на Post-Processing. Prompt Patch и Character Activity переключают ее на Pre-Generation.
У агентов в фазе Post-Processing есть еще раздел Turn Data Access (доступ к данным хода) с двумя переключателями: Pre-generation injections и Parallel agent results. Включите их, чтобы агент мог читать то, что другие агенты выдали за тот же ход.
Custom Agent Abilities
Возможности включаются вручную. Каждая остается заблокированной, пока вы не включите ее переключатель.
- Create lorebooks: создавать новый лорбук от имени агента, когда для его вывода с лором не задан целевой лорбук.
- Edit lorebooks: писать записи лорбука или возвращать результаты обновления лорбука.
- Edit messages: заменять текст сгенерированного сообщения или добавлять к нему варианты продолжения.
- Edit trackers: обновлять состояние трекера игры, персонажа, персоны или своего трекера.
- Frontend styling: применять временный визуальный стиль во время генерации.
- Change chat backgrounds: менять и сохранять фон чата.
- Change character sprites: менять выражения лица персонажей и персоны, которые видны в чате.
- Control media playback: управлять Spotify, YouTube или локальной музыкой.
- Control haptic devices: отправлять ограниченные команды на подключенное тактильное устройство.
- Edit About Me details: менять текст About Me для конкретного чата. Изменения в публичной карточке по-прежнему требуют вашего подтверждения.
- Image generation: отправлять промпт изображения генератору изображений.
- Vectors/embeddings: использовать контекст векторов. Векторы позволяют Marinara искать текст по смыслу.
- Main prompt edits: редактировать промпт, который уходит основной модели.
- Create character cards: предлагать новую карточку персонажа. Она сохраняется, только когда вы ее проверите и примете.
- Choose active chat characters: выбирать, какие из прикрепленных персонажей включены для текущего ответа в Conversation или Roleplay.
Если включить Edit lorebooks, появится раздел Lorebook Writer. Включите Allow lorebook entry writes (разрешить запись в лорбук) и выберите один лорбук в Target lorebook (целевой лорбук). Писать агент сможет только в этот лорбук.
Result Type
Параметр Result Type сообщает Marinara, как читать ответ агента. Большинство типов ожидают JSON – текстовый формат с фигурными скобками и кавычками. Тип остается серым, пока вы не включите нужную ему возможность.
Типы, которым не нужна возможность:
- Context Injection: добавляет текст до генерации или записывает заметку после нее. С него проще всего начать.
Типы, которым нужна возможность Edit messages:
- Text Rewrite: заменяет текст сообщения после ответа.
- Interactive Choices: добавляет к сообщению варианты продолжения.
Типы, которым нужна возможность Edit trackers:
- Character Tracker: обновляет присутствующих персонажей.
- Persona Stats: обновляет характеристики, статус и инвентарь персоны.
- Custom Tracker: заменяет поля вашего собственного трекера.
- Game State: обновляет игровые данные вроде состояния мира.
Остальные типы, у каждого своя возможность:
- Lorebook Update (Edit lorebooks): создает или обновляет записи лорбука.
- Image Prompt (Image generation): просит генератор изображений нарисовать сцену.
- Prompt Patch (Main prompt edits): добавляет разделы промпта, ставит их в начало или заменяет.
- Frontend Style (Frontend styling): применяет временный эффект оформления.
- Background Change (Change chat backgrounds): выбирает и сохраняет доступный фон.
- Sprite Change (Change character sprites): меняет выражения лица, которые видны в чате.
- Spotify Control, YouTube Control, Local Music Control (Control media playback): управляют воспроизведением.
- Haptic Command (Control haptic devices): отправляет ограниченную команду на тактильное устройство.
- About Me Update (Edit About Me details): обновляет текст About Me для чата и предлагает публичные правки.
- Character Card Creation (Create character cards): предлагает одну редактируемую карточку персонажа на ваше подтверждение.
- Character Activity (Choose active chat characters): выбирает карточки персонажей для текущего ответа. Работает до ответа и должен выбрать хотя бы одного прикрепленного персонажа.
Элементы управления агентов изображений в чате
Агент с возможностью Image generation получает два дополнительных элемента управления в Chat Settings → Agents → Custom Agents.
- Image model: переопределяет подключение для изображений у этого агента, но только в этом чате. Оставьте значение Agent default (по умолчанию агента), чтобы сохранить собственную настройку агента. Выбранный в чате Image Style (стиль изображений) тоже применяется к изображениям своих агентов.
- Camera button: создает изображение сразу, не дожидаясь ключевых слов активации. Если шаблон агента откажется писать промпт, вместо изображения появится уведомление об ошибке.
Activation Keywords
По умолчанию агент работает со своей обычной периодичностью (то есть с той частотой, с какой он запускается). Activation Keywords (ключевые слова активации) пропускают агента, если сцена к нему не относится, и так экономят токены.
- В поле Activation Keywords впишите по одному ключевому слову или фразе на строку, например
tavernилиsecret door. - В поле Scan Depth (глубина сканирования) укажите, сколько последних сообщений просматривать. По умолчанию 5, максимум 200.
После этого агент работает, только когда ключевое слово встречается в этих сообщениях. Оставьте поле пустым, чтобы выключить фильтр. Периодичность и вопрос активации, если он задан, продолжают действовать.
Подключение инструментов
Агент может вызывать инструменты – функции, которые ИИ запускает, чтобы что-то получить или изменить, а затем читает результат. Это также называют вызовом функций.
- В редакторе агента откройте Tools / Function Calling (инструменты и вызов функций) и включите каждый нужный инструмент. В списке есть встроенные инструменты и ваши собственные. Как собрать свой инструмент, читайте в руководстве Собственные инструменты и вызов функций.
- В Chat Settings откройте Function Calling и включите Enable Tool Use (разрешить использование инструментов). Без этого инструменты агента остаются выключенными.
Импортированные агенты никогда не получают доступа к инструментам. Проверьте импортированного агента, а затем сами выберите ему инструменты.
Агент получает не больше 16 кругов вызова инструментов за один запуск (меньше, если MAX_TOOL_ROUNDS на сервере ниже), а затем отвечает с тем, что у него есть. Модель, которая вызывает инструменты по одному, тратит на каждый вызов отдельный круг, поэтому агенту, который сохраняет много записей, стоит делать несколько вызовов в одном ответе. Запуск дозаполнения лорбука получает до 64 кругов.
Named prompt options
Агент может хранить несколько вариантов промпта, и каждый чат выбирает один из них без правки самого агента.
- В разделе Prompt Template найдите Named prompt options (именованные варианты промпта).
- Нажмите Add option (добавить вариант).
- Дайте варианту название и короткое описание, затем впишите его полный промпт.
Когда агента добавляют в чат, раскрывающийся список Prompt Mode (режим промпта) показывает ваши варианты. Если вариантов нет, виден только промпт по умолчанию.
Другие настройки
- Model override: использовать для этого агента другую модель, например более дешевую. Оставьте поле пустым, чтобы использовать модель чата. Агент отправляет параметры генерации, сохраненные в этом подключении. См. Параметры для агентов.
- Agent Budget: Context Size – сколько последних сообщений читает агент (по умолчанию 5). Max Output Tokens – запас места для вывода (по умолчанию 4096, от 128 до 32768).
- Add as Prompt Section: делает последний вывод агента разделом, который можно поставить в пресет промпта.
Макросы вроде {{user}} и {{char}} работают в поле Prompt Template. См. Макросы промптов.
Разобранный пример
Этот агент переписывает каждый ответ на британский английский.
- Назовите его
British English Editor. - В разделе Custom Agent Abilities включите Edit messages.
- В разделе Result Type выберите Text Rewrite. Фаза переключится на Post-Processing.
- Вставьте это в поле Prompt Template:
You are a copy editor. Rewrite the latest reply into British English.
Change spelling and vocabulary only. Do not change the meaning, tone, or events.
Return JSON with an "editedText" field holding the full rewritten reply,
and a "changes" array of short notes describing what you changed.- Нажмите Save.
- Откройте чат Roleplay, включите Enable Agents в Chat Settings и добавьте агента из раздела Custom Agents.
После каждого ответа агент возвращает такой JSON:
{"editedText":"The colour of the harbour caught her eye.","changes":[{"description":"color to colour, harbor to harbour"}]}Marinara подставляет editedText в ответ. Заметки из changes показываются как короткая сводка.
Импорт и экспорт агентов
Чтобы экспортировать одного агента, нажмите Export agent (иконка загрузки) в верхней панели редактора. Файл содержит промпт и настройки агента, но никогда не содержит описаний своих инструментов. Чтобы экспортировать несколько агентов, нажмите Select agents (выбрать агентов) в панели Agents, отметьте нужных и экспортируйте их.
Импорт внешних агентов по умолчанию заблокирован.
- Откройте Settings → Advanced → Danger Zone (настройки → дополнительно → опасная зона) и включите Allow custom Agent imports (разрешить импорт своих агентов). Править
.envне нужно. - В панели Agents нажмите Import agents (импортировать агентов) и выберите файлы агентов или папку.
- Проверьте список разрешений, который показывает Marinara. Одобряйте только то, что агенту нужно. Неотмеченные возможности остаются заблокированными.
Эта блокировка касается только агентов из файлов, папок и своих репозиториев. Агенты, которых вы создали сами, и официальные агенты из Agent Organizer (организатор агентов) работают как обычно. Каждый импортированный файл получает новый собственный идентификатор, поэтому не может заменить официального агента.
Для безопасности Marinara игнорирует вложенные функции, стирает выбор инструментов, очищает временный CSS и проверяет одобренные возможности, прежде чем импортированный агент сможет менять сообщения, трекеры, лорбуки, фоны, спрайты, медиа, тактильные устройства, данные About Me, промпты или изображения. Доверенные функции импортируйте отдельно, проверьте их и сами подключите к агенту. Если выключить переключатель в Danger Zone, импортированные агенты перестанут работать.
Вопросы активации
Вопрос активации спрашивает, нужен ли ваш агент в последней сцене. Он ловит перефразировки, которые пропускают ключевые слова. Для него нужна Decision model (модель решений) – небольшая модель, которая отвечает на вопросы "да или нет". Выберите ее в панели Connections. См. Модели решений. Если у Decision model стоит значение None (нет), как по умолчанию, поля вопроса остаются недоступными, а агент с вопросом работает так, будто вопроса нет.
- Откройте своего агента.
- Введите Question (вопрос) длиной до 500 символов. В нем работают макросы
{{user}}и{{char}}. - В поле Run when probability is at least (запускать при вероятности не ниже) задайте порог для этого агента. Агент запускается, когда вероятность ответа "да" достигает порога, поэтому чем выше значение, тем больше запусков пропускается. Редактор показывает рекомендуемое значение для вашей модели: 0,5 для локальных моделей чата и аккаунтов Decision или 0,1 для встроенных моделей Open-Jev. После смены модели проверьте порог на своих чатах. См. Пороги.
- Необязательно: задайте Bypass the question after this many messages without a successful run (пропустить вопрос после такого числа сообщений без успешного запуска). После этого числа сообщений вопрос пропускается, поэтому модель, которая все время отвечает "нет", не сможет заглушить агента навсегда. Ключевые слова и периодичность продолжают действовать.
Пишите вопрос как утверждение о последнем сообщении, например The latest message moves the scene to a new place. Небольшая модель отвечала на такую формулировку надежнее, чем на Did the scene change? См. Как писать утверждения.
Как это работает:
- Ключевые слова и периодичность проверяются первыми, поэтому пропущенный агент не тратит запрос к модели решений. Вопросы с одинаковой глубиной сканирования объединяются в пакеты по фазам.
- Scan Depth задает сообщения и для ключевых слов, и для вопроса.
- Агенты до генерации и параллельные агенты используют чат до ответа. Агенты постобработки видят еще и готовый ответ.
- Тайм-аут, недоступная модель или неверный ответ позволяют агенту работать как обычно. Лимит времени зависит от типа модели и от того, нужно ли ей сначала рассуждать. См. Лимиты времени.
- Импортированные агенты с вопросом активации или утверждениями решений показывают уведомление со ссылкой на руководство по моделям решений. Без модели решений агент запускается всякий раз, когда это позволяют ключевые слова и Trigger Cadence (периодичность запуска), а утверждения в промпте означают нет.
Вопросы активации есть только у своих агентов.
Утверждения решений в промпте агента
Вопрос активации решает, запускать ли агента. Утверждение решения в Prompt Template решает, какие инструкции получит работающий агент. Синтаксис описан в руководстве Условные промпты:
{{#if decision:"In the latest message, the characters move to a different location"}}
Update the location field.
{{else}}
Leave the location as it is.
{{/if}}С их помощью в спокойные моменты можно отправлять промпт поменьше. Трекер может обновлять место действия, только когда оно изменилось. Агент изображений может описывать новую картинку, только когда изменилась сцена. Музыкальный агент может менять трек, только когда сменилось настроение. Чтобы выбрать один из нескольких наборов инструкций, используйте {{#if decision_choice:"The kind of scene in the latest message" == "combat"}}, затем {{else if decision_choice:"The kind of scene in the latest message" == "dialogue"}} и так далее. См. Условные промпты.
- Агенты до генерации и параллельные агенты читают чат до ответа и делят ответы с основным промптом. Агенты постобработки читают готовый ответ, и их утверждения проверяются заново уже с ним.
- Повторный запуск агента использует успешные ответы, которые еще кешированы для того же хода, модели и утверждений. См. Повторное использование ответов.
- В промпте агента
{{char}}называет сразу всех персонажей чата, поэтому в группе{{char}} is angryстановится "Kaelen, Alyssa is angry". Назовите персонажа или напишите "a character". - Без ответа утверждение означает нет. Сделайте ветку
{{else}}осмысленной, ведь у многих пользователей модели решений нет.
Агенты, установленные из Marinara-Agents, обрабатывают промпты так же.
Смежные руководства
- Агенты: помощники ИИ в чатах
- Модели решений
- Справочник агентов для скачивания
- Собственные инструменты и вызов функций
- Макросы промптов