Соберите ассистента Open WebUI для рабочей задачи

Создайте пресет Open WebUI с постоянной инструкцией, передайте факты и справку, проверьте полный запрос и пропуск времени в двух новых чатах.

После урока вы сможете

  • Создать собственный пресет на доступной подключённой модели и сохранить системную инструкцию
  • Заново открыть карточку и проверить сохранённые поля
  • Проверить полный запрос и запрос без времени в двух независимых чатах
  • При необходимости уточнить одно правило и повторить оба неизменённых запроса

Проверяемый результат: Сохранённый пресет и собственные наблюдения по двум запросам: полный набор сведений и пропущенное время проверяются отдельно.

Допустим, Анна регулярно готовит объявления о встречах книжного клуба. От раза к разу меняются название книги, дата, время и место, а требования к самому черновику повторяются: нужно проверить полноту сведений, ничего не додумывать и уложиться в три коротких предложения. Для разового текста проще вставить правила прямо в сообщение, но при регулярной работе удобнее вынести постоянную инструкцию в собственный пресет в разделе Workspace → Models, а в чате передавать только новые факты (документация о пресетах).

Пресет в Open WebUI — это сохранённая конфигурация поверх уже подключённой базовой модели: он хранит имя, идентификатор, выбранную основу и системную инструкцию в базе приложения, но не обучает модель заново и не меняет её веса (как хранится пресет). В этом уроке вы соберёте такой пресет на своей доступной модели, проверите сохранение карточки и протестируете ассистента в двух отдельных чатах: с полным набором данных и с намеренно пропущенным временем встречи. Анна — вымышленный пример. Шаги составлены по коду Open WebUI v0.12.3 и отдельно сохранённой официальной документации; сохранение пресета и ответы модели мы не проверяли. Вы проверите их на своей установке.

Разделите постоянные правила ассистента и сведения о встрече

Прежде чем открывать форму создания пресета, разделим содержательные входы задачи на четыре части. Это наша схема подготовки и проверки, а не четыре обязательных поля интерфейса Open WebUI:

Часть задачиЧто содержит в примере АнныГде живёт в Open WebUI
Постоянное правилоПроверить наличие книги, даты, времени и места; использовать только переданные сведения; при пропуске сначала задать вопрос; при полных данных написать три коротких предложения по-русскиСохраняется один раз в поле System Prompt карточки пресета (сохранение params.system)
Текущие фактыНазвание книги, дата, время и место конкретной встречиПередаются каждый раз в обычном сообщении чата (формирование списка messages)
Короткая справкаПостоянная деталь о площадке: Вход в читальный зал — со двора.Передаётся текстом в том же сообщении чата вместе с фактами
РезультатГотовый черновик из трёх предложений либо уточняющий вопрос о недостающем сведенииОтдельный ответ модели в чате, который человек сверяет с условиями

Короткая справка про вход со двора нужна для того, чтобы это условие попало в итоговый черновик объявления. При этом сама справка не содержит времени встречи и не может восполнить пропуск, если время забыли указать в фактах. Сведения, которые вы отправляете в обычном сообщении чата, уходят в диалог и автоматически не переписывают сохранённый System Prompt пресета. Если нужно освежить общее устройство карточек в рабочей области, вернитесь к обзору о том, как соотносятся модель и пресет ассистента.

Так как и факты встречи, и одна фраза справки занимают всего несколько строк, передавать их простым текстом в сообщении — минимальный достаточный маршрут для этой задачи. Прикреплять файлы к чату, подключать коллекции Knowledge, навыки Skills или внешние инструменты здесь не требуется (необязательные поля пресета).

Перед началом практики проверьте рабочие условия:

  • Войдите в свою учётную запись Open WebUI. Для практики нужна уже работающая разрешённая модель через серверное подключение OpenAI-compatible или Ollama и обычный одиночный чат. Названия элементов приведены для Open WebUI v0.12.3; в другой версии, локализации или при других правах подписи могут отличаться.
  • В стандартном серверном маршруте Open WebUI подставляет выбранную базовую модель в запрос и применяет сохранённый System Prompt (применение инструкции через OpenAI-compatible подключение, применение инструкции через Ollama). При этом сам пресет не заменяет модельный сервер и не гарантирует, что модель обязательно выполнит все правила: точность ответа и готовность задать уточняющий вопрос зависят от самой базовой модели, шаблона чата на сервере и полного контекста беседы (от чего зависит соблюдение инструкции). Короткая инструкция и тестовые сообщения должны помещаться в контекст выбранной вами модели.
  • Используйте только вымышленные несекретные сведения. Карточка пресета сохраняется в базе данных Open WebUI, а текст инструкции и сообщений обрабатывается самим приложением и выбранной моделью; если ваша базовая модель работает через внешнего провайдера, отправленные тексты передаются этому провайдеру (границы хранения данных, доступ операторов и внешних провайдеров). Стоимость запросов, сроки хранения данных у провайдеров и доступ администраторов инфраструктуры зависят от вашей конкретной установки и здесь не проверялись.

Заполните карточку пресета и системную инструкцию

Перенесём постоянные правила в карточку собственного пресета. Для этого не обязательно быть администратором всей системы: обычному подтверждённому пользователю достаточно разрешения workspace.models (доступ к разделу моделей, права на создание пресета). При этом видимость вкладки Models, право создать новую запись и доступ на чтение выбранной базовой модели проверяются отдельно (доступ к пресету и базовой модели). Если раздел Workspace → Models или кнопка создания у вас отсутствуют, не пытайтесь обходить ограничения и не меняйте чужие настройки — обратитесь к администратору вашей установки или запишите это как препятствие для практики.

Откройте Workspace → Models и нажмите кнопку Create в шапке рабочей области (создание и открытие пресета). В открывшемся редакторе заполните основные поля карточки (обязательные поля карточки):

  1. Model Name (отображаемое имя пресета): Редактор объявлений клуба
  2. Model ID (внутренний идентификатор записи без пробелов; предлагаем кандидата): redaktor-obyavleniy-kluba Имя и идентификатор выполняют разные роли: форма требует непустой Model ID без пробельных символов и проверяет, не занят ли он другой моделью в вашей установке (проверка свободного идентификатора, ограничение на пробельные символы). Мы не знаем заранее, свободен ли кандидат redaktor-obyavleniy-kluba у вас. Если такой идентификатор уже существует, не перезаписывайте чужую или старую запись — выберите другой свободный идентификатор без пробелов (например, добавьте суффикс -2, если он свободен) и запишите фактический Model ID.
  3. Description (краткая сводка в списке выбора моделей, сама по себе не управляет генерацией — назначение описания): Готовит черновики объявлений книжного клуба по фактам встречи и короткой справке; просит уточнить недостающее.
  4. Base Model (From) (выбор базовой модели): Выберите из выпадающего списка реально доступную и работающую в вашей установке модель. Не вписывайте выдуманные названия провайдерских моделей; сразу запишите для себя фактическое имя выбранной базовой модели и её подключение.

Теперь найдите поле System Prompt в карточке редактора пресета (не путайте его с полем ввода сообщения в обычном чате). Open WebUI не требует специального синтаксиса для системных инструкций — здесь работает обычный текст (формат системной инструкции). Скопируйте и вставьте в System Prompt точную шестистрочную инструкцию первой редакции:

Помогай готовить черновики объявлений о встречах книжного клуба.
Обязательные сведения: название книги, дата, время и место встречи.
Используй только факты встречи и короткую справку из текущего сообщения. Не переноси сведения о другой встрече и не добавляй отсутствующие адреса, цены, контакты или условия участия.
Если хотя бы одного обязательного сведения нет, сначала задай уточняющий вопрос и пока не составляй объявление.
Если сведения полные, напиши по-русски ровно три коротких предложения без заголовка и списка. Сохрани название книги, дату, время и место, а также сведения из короткой справки.
Подготовь только черновик текста. Не публикуй объявление и не выполняй внешних действий.

В новой собственной карточке не выбирайте Knowledge, Skills, Tools и не прикрепляйте файлы (сохранение дополнительных привязок). Настройки Access оставьте как есть; числовые значения в Advanced Params для этой практики не задавайте. Навык из урока о Skills, инструкциях и файлах сюда подключать не нужно, чтобы не смешивать его правила с нашей системной инструкцией.

Сохраните пресет и заново откройте его карточку

Заполненная экранная форма ещё не означает, что конфигурация сохранена в базе. Нажмите кнопку Save & Create в нижней части редактора: при успешном создании записи интерфейс вызывает сохранение модели и возвращает вас к списку Workspace → Models (кнопки сохранения, создание записи и возврат к списку).

Даже если появилось всплывающее уведомление об успехе, проверьте сохранённую запись глазами. В списке Workspace → Models у каждой карточки есть два разных элемента управления (открытие карточки и нового чата):

  • нажатие на имя пресета открывает карточку в редакторе, если у вас есть право её изменять;
  • нажатие на стрелку рядом с именем (Try in chat) открывает новый чат с этим пресетом.

Сейчас нажмите именно на имя Редактор объявлений клуба, чтобы заново открыть редактор. Сверьте пять позиций с тем, что вы вводили: отображаемое имя, фактический Model ID (у сохранённой записи это поле в редакторе заблокировано), выбранную базовую модель в Base Model (From), текст описания и все шесть строк System Prompt без обрывов (идентификатор сохранённой карточки).

Если какое-то поле не совпало или сохранение вернуло ошибку, запишите это и исправьте свою карточку до запуска чатов. Пока поля не совпали, ответы чатов нельзя оценивать как проверку подготовленной инструкции. Сохранение карточки и качество ответа проверяйте отдельно.

Проверьте объявление с полными данными в новом чате

Когда карточка проверена, переходим к первому тестовому запуску — назовём его чатом A. Перед отправкой коротко зафиксируйте для себя исходную точку: версию вашей установки Open WebUI, имя и фактический Model ID пресета, выбранную базовую модель с её подключением и то, что сохранена первая редакция инструкции. Заодно отметьте известные вам дополнительные функции, если они включены в вашем профиле или на сервере (например, память Memory или активные фильтры), и не меняйте эти условия между первым и вторым тестовыми чатами (дополнительные инструкции и контекст). Искать внутренние идентификаторы чатов не нужно; если какая-то настройка сервера вам не видна, просто отметьте это обычными словами.

Вернитесь к списку Workspace → Models и нажмите на стрелку рядом с именем вашего пресета Редактор объявлений клуба, чтобы открыть новый одиночный чат. В верхней части открывшегося окна убедитесь, что выбран именно ваш пресет, а не базовая модель напрямую. Если вам нужно напомнить себе базовые действия в окне диалога, посмотрите урок про первый чат и варианты ответа.

Скопируйте и отправьте в чат A следующее сообщение с полным набором фактов и короткой справкой:

Подготовь черновик объявления о встрече книжного клуба.

Факты встречи:
Книга: «Капитанская дочка».
Дата: 12 ноября.
Время: 19:00.
Место: читальный зал.

Короткая справка о площадке:
Вход в читальный зал — со двора.

Справка уже передана текстом сообщения: для этого упражнения читать файл или вызывать инструмент не требуется. Это не гарантирует, что на вашей установке отключены все дополнительные функции. Получив реальный ответ вашей модели, не полагайтесь на общее впечатление аккуратности — проверьте черновик по четырём конкретным критериям:

  1. Форма и язык: текст написан по-русски и состоит ровно из трёх коротких предложений без заголовка и без маркированного или нумерованного списка.
  2. Сохранение всех пяти сведений: в объявлении по смыслу сохранены книга («Капитанская дочка»), дата (12 ноября), время (19:00), место (читальный зал) и деталь из справки (вход со двора). Дословного совпадения каждой фразы не требуется.
  3. Отсутствие выдуманных деталей: модель не добавила от себя год, день недели, улицу или номер дома, стоимость, контакты, условия регистрации или пересказ сюжета книги.
  4. Граница действия: в ответе дан только черновик текста, без утверждений о том, что объявление уже опубликовано или разослано.

Запишите для себя фактический ответ модели (или текст ошибки, если запрос не прошёл) и отдельно отметьте, выполнены ли критерии по фактам, справке и форме.

Проверьте запрос без времени в отдельном чате

Удачный черновик в чате A показывает только то, что модель справилась с полным набором входных данных. Он ещё не доказывает, что ассистент остановится, когда в запросе не хватает обязательного факта. Чтобы проверить правило остановки, нужно убрать время встречи и обязательно открыть отдельный новый чат — назовём его чатом B.

Почему нельзя отправить второй запрос в продолжение чата A? В рамках одного диалога Open WebUI передаёт модели предыдущие сообщения и ответы (передача сообщений диалога). Если продолжить чат A, время 19:00 останется в истории беседы, и модель сможет подставить его из прошлого хода вместо того, чтобы заметить пропуск.

Откройте новый независимый чат B (например, снова через стрелку возле пресета Редактор объявлений клуба в списке моделей или кнопкой нового чата с проверкой того, что в селекторе выбран тот же пресет). Базовая модель, подключение, редакция System Prompt и остальные настройки должны остаться точно такими же, как в чате A.

Скопируйте и отправьте в чат B сообщение, из которого удалена только строка со временем встречи:

Подготовь черновик объявления о встрече книжного клуба.

Факты встречи:
Книга: «Капитанская дочка».
Дата: 12 ноября.
Место: читальный зал.

Короткая справка о площадке:
Вход в читальный зал — со двора.

Из сообщения B удалена только строка Время: 19:00.. Значения времени нет и в остальных подготовленных входах: системной инструкции, имени и Model ID пресета, описании и справке Вход в читальный зал — со двора.. Отдельный новый чат не переносит историю A; известные память, фильтры и прочие настройки по-прежнему учитывайте при оценке ответа.

Оцените полученный в чате B ответ по трём критериям:

  1. Вопрос до черновика: модель сначала спрашивает, в какое время состоится встреча, и не выдаёт готовое объявление.
  2. Отказ от догадок: модель не придумывает 19:00 или любое другое время от себя.
  3. Отказ от черновика с заглушкой: модель не пишет законченный текст объявления со скобками или пропуском вроде [укажите время] вместо вопроса.

Запишите реальный ответ модели в чате B. Если модель вместо вопроса всё равно составила объявление — зафиксируйте это как фактическое наблюдение, не пытаясь подогнать условие задачи под ответ. Даже если оба чата A и B сразу прошли по всем критериям, одна пара проверок не гарантирует безошибочной работы и одинаковых формулировок в будущем; а если модель нарушила правило, один такой сбой не доказывает поломку самого Open WebUI.

Если модель не спросила время, уточните правило

Если A и B сразу удовлетворили критериям, менять инструкцию не нужно. Если B спросил время, а в A нарушены факты или форма, запишите невыполненный критерий A: правка ниже относится к другому сбою.

Правка ниже нужна только в том случае, если в чате B модель нарушила правило: написала готовое объявление без времени, вставила заглушку или придумала час встречи. Прежде чем менять System Prompt, проверьте сохранение карточки, выбор пресета и независимость чата B:

  1. Убедитесь, что в чате B действительно был выбран ваш пресет Редактор объявлений клуба, а не базовая модель напрямую.
  2. Проверьте, что чат B был новым и отдельным, а не продолжением диалога A.
  3. Заново откройте карточку пресета в Workspace → Models и проверьте, сохранились ли в ней все шесть строк первой редакции System Prompt и нужная базовая модель.

Если вы обнаружили ошибку в выборе пресета, сохранении карточки или независимости чата, сначала исправьте именно её и повторите проверку. Если же карточка сохранена и выбрана верно, чат B был чистым, но модель всё равно написала объявление без времени, уточним формулировку правила остановки.

Откройте свой пресет Редактор объявлений клуба на редактирование в Workspace → Models (для этого требуется право на запись собственной карточки; заблокированный Model ID, настройки доступа Access и базовую модель не трогаем — право на изменение пресета). Найдите в поле System Prompt четвёртую строку первой редакции:

Если хотя бы одного обязательного сведения нет, сначала задай уточняющий вопрос и пока не составляй объявление.

Замените только эту четвёртую строку на более жёсткую формулировку, оставив остальные пять строк System Prompt без изменений:

Перед написанием объявления отдельно проверь наличие книги, даты, времени и места в текущем сообщении и его справке. Если хотя бы одного сведения нет, ответь только вопросом о недостающем сведении; не пиши черновик или текст с пропуском и не подставляй догадку.

Нажмите кнопку Save & Update (в режиме редактирования она становится активной, когда конфигурация изменена). После возврата к списку моделей снова откройте карточку по имени и убедитесь, что обновлённая шестистрочная инструкция второй редакции полностью сохранилась.

После любой правки инструкции нельзя проверять только неудавшийся запрос B и нельзя дописывать время в текст сообщения ради красивого ответа. Откройте два новых независимых чата с тем же пресетом, той же базовой моделью, тем же подключением и теми же настройками. Отправьте в первый новый чат прежнее неизменное сообщение A (чтобы убедиться, что уточнение не сломало генерацию по полным данным), а во второй новый чат — прежнее неизменное сообщение B без времени. Если после одной правки правило снова не выполнено, остановитесь и запишите, что именно произошло при сохранённых условиях. Этот повторный сбой не устанавливает его причину и не доказывает, что базовая модель всегда неспособна соблюдать правило (ограничения соблюдения инструкции).

По итогам всей практики соберите для себя короткую заметку из пяти пунктов:

  1. Среда и карточка: дата проверки, версия Open WebUI, имя и фактический Model ID пресета, выбранная базовая модель с подключением, сохранённая редакция инструкции и известные дополнительные настройки (например, память или фильтры).
  2. Проверка сохранения: совпали ли имя, Model ID, базовая модель, описание и все шесть строк System Prompt после повторного открытия карточки.
  3. Запрос A (полные данные): реальный ответ модели и отдельная оценка — сохранены ли все пять сведений вместе со справкой о входе со двора, выдержаны ли три предложения без списков и нет ли выдуманных деталей.
  4. Запрос B (без времени в отдельном чате): реальный ответ модели и оценка — задала ли модель вопрос о времени до написания черновика без догадок и заглушек.
  5. Уточнение правила (если проводилось) или преграды: какая строка менялась, что показали повторные запуски тех же сообщений A и B в двух новых чатах, либо какая ошибка прав доступа или подключения помешала выполнить шаг.

Такой порядок разделяет сохранённую настройку и проверенный результат: постоянная инструкция живёт в карточке пресета, факты и короткая справка приходят в сообщении, а пригодность каждого черновика оценивает человек по чётким критериям. Возьмите одну свою регулярную несекретную задачу — например, короткое напоминание о созвоне или аннотацию к заметке, — выпишите для неё обязательные входные сведения и повторите этот же цикл с полным и неполным запросом в двух отдельных чатах, используя ответы ассистента в работе только после ручной сверки фактов.

Перед следующей правкой разберите, как сравнить версии ассистента и вернуть настройки, что переносится в файле и как проверить доступ.

Отметить прохождение

Отметьте урок после того, как получили проверяемый результат из практической части.