Оригинал: https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/sravnenie-neskolkih-modeley/

# Как сравнить ответы нескольких моделей в Open WebUI

Сравните ответы доступных моделей в Open WebUI по фактам и требованиям задачи. Разберите Compare, выбор ветки и модели для следующего сообщения.

[![Тимофей Ермолаев](https://timofei-ermolaev.ru/_astro/timofei-ermolaev-portrait.s0mCFw-J_Z1x8STQ.webp)](<https://timofei-ermolaev.ru/ob-avtore/>)

[Тимофей Ермолаев](<https://timofei-ermolaev.ru/ob-avtore/>) Директор по информационным технологиям (CIO)

**Опубликовано**

22 октября 2026 г.

**Обновлено**

22 октября 2026 г.

**На урок**

25 мин

**Тема**

[Повседневная работа и контекст](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/>)

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

- Задать критерии пригодного ответа до отправки запроса
- Сравнить ответы доступных моделей по условиям одной задачи
- Отделять выбранную ветку от моделей следующего запроса
- Различать просмотр вариантов и новую генерацию

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

Режим **`Compare`** в Open WebUI позволяет отправить одну видимую просьбу сразу нескольким доступным записям моделей и сопоставить их ответы в одном чате ([документация по чатам с несколькими моделями](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/multi-model-chats.mdx#L14-L20>) ). Пригодный текст выбирает человек: он сверяет каждый ответ с исходными сведениями и требованиями задачи, а перед следующим сообщением отдельно проверяет, какая ветка истории активна и какие модели оставлены в списке получателей.

Разберём этот порядок на полностью вымышленной ситуации: допустим, нужно подготовить короткое нейтральное сообщение для чата соседей. Известно, что в среду холодную воду отключат с 10:00 до 13:00 из-за плановых работ, а горячую воду отключать не будут. Календарная дата, адрес дома и контакты исполнителя неизвестны. Само упражнение при подготовке материала не запускалось: готовых ответов моделей, измерений и заранее назначенного победителя в уроке нет. В реальной попытке у вас может получиться один подходящий черновик, несколько равно пригодных вариантов либо ни одного готового текста. Прежде чем открывать выбор моделей, зафиксируем правила, по которым будем оценивать результат.

## Сначала определите, какой ответ подходит задаче

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

Для самостоятельной практики возьмите следующий копируемый вход (это текст вашего задания моделям, а не полученный ответ):

> Это вымышленная учебная ситуация. Подготовь короткое сообщение для чата соседей по следующим сведениям: в среду холодную воду отключат с 10:00 до 13:00 из-за плановых работ. Горячую воду отключать не будут. Календарная дата, адрес дома и контакты исполнителя неизвестны. Напиши по-русски, нейтральным тоном, в трёх коротких предложениях. Сохрани все известные сведения, не придумывай недостающие детали. Укажи, что календарная дата не уточнена.

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

- **Полнота известных фактов.** Сохранены день недели (среда), интервал `10:00–13:00`, указание именно на холодную воду, причина (плановые работы) и уточнение, что горячую воду отключать не будут.
- **Отсутствие домыслов и явная неопределённость.** В тексте нет придуманного числа месяца, адреса дома, телефона, обещаний перерасчёта или компенсации и других новых сведений. Прямо сказано, что календарная дата пока не уточнена.
- **Форма и понятность.** Текст написан по-русски в трёх коротких предложениях, спокойным нейтральным тоном и легко читается.

Эту схему мы вводим для нашего упражнения: первые два пункта проверяются прямой сверкой с текстом задания, а понятность и тон оценивает человек (общие [сценарии сопоставления ответов в документации](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/multi-model-chats.mdx#L24-L28>) ). Красивый ответ, который искажает факты или добавляет вымышленный контакт, без ручного исправления не подходит. При этом совпадение двух или трёх ответов само по себе не подтверждает истинность написанного и не заменяет сверку с исходным заданием.

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

## Выберите доступные модели через Compare

Мы опираемся на исследование исходного кода и документации стабильного релиза Open WebUI `v0.12.3` ([сведения о релизе на закреплённой странице v0.12.3](<https://github.com/open-webui/open-webui/releases/tag/v0.12.3>) , опубликованном 16 октября 2026 года). Это проверка исходников, а не вашего рабочего сервера: в конкретной установке версия, локализация интерфейса, набор моделей и права учётной записи могут отличаться, поэтому английские подписи ниже служат ориентиром по коду и документации.

Чтобы включить сравнение для нового запроса, откройте выпадающий список моделей в верхней части чата, нажмите переключатель **`Compare`** рядом со строкой поиска и отметьте нужные записи ([описание запуска в документации](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/multi-model-chats.mdx#L14-L20>) ). Для упражнения достаточно выбрать две доступные записи: это удобный минимальный набор для спокойного чтения, а не технический предел продукта. При добавлении и снятии галочек в режиме `Compare` селектор не даёт снять отметку с последней выбранной записи (при этом недоступные идентификаторы из списка отсеиваются) и не задаёт фиксированного верхнего лимита на количество моделей ([проверка доступных записей](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/ModelSelector.svelte#L48-L55>) , [добавление и снятие выбора](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/ModelSelector/Selector.svelte#L411-L429>) ), но это не означает бесконечной пропускной способности вашего сервера или провайдера.

Перед отправкой проверьте четыре практических условия:

1. **Наличие кнопки `Compare`.** Переключатель показывается администратору либо пользователю, которому разрешено сравнение нескольких моделей в чате (`chat.multiple_models`; [проверка прав в селекторе](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/ModelSelector.svelte#L74-L88>) ). В исходной конфигурации приложения это разрешение включено по умолчанию (`True`), однако администратор вашего экземпляра мог изменить настройку в панели управления или через права групп ([раздел разрешений в документации](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/multi-model-chats.mdx#L30-L39>) ).
2. **Доступные записи в списке.** Режим `Compare` лишь переключает способ выбора в уже сформированном списке и не создаёт новых подключений к провайдерам ([кнопка `Compare` в шаблоне селектора](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/ModelSelector/Selector.svelte#L980-L999>) ). Откуда берутся позиции в этом меню и как настраиваются источники, мы разбирали в уроке про [список моделей и их источники](<https://timofei-ermolaev.ru/courses/open-webui/configure/upravlenie-spiskom-modeley/>) . Если у вас нет кнопки `Compare` или в списке доступна только одна модель, не меняйте серверные настройки в рамках этого урока: обратитесь к администратору либо зафиксируйте этот шаг как невыполненный.
3. **Смысл отображаемого имени модели.** Название и идентификатор в списке обозначают запись модели и выбранный маршрут внутри Open WebUI. При обработке запроса сервер может сопоставлять пользовательскую запись с базовой моделью, применять резервный маршрут (`fallback`) или выбирать подмодель в режиме арены ([разрешение записи и базовой модели](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/main.py#L1004-L1011>) , [логика маршрутизации и fallback](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/main.py#L1232-L1240>) , [обработка арены и модели в middleware](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py#L2020-L2058>) ). Поэтому сама подпись на карточке не удостоверяет фактическую модель на стороне внешнего провайдера и не доказывает, что две разные записи ведут к двум независимым моделям.
4. **Согласие на возможные расходы и нагрузку.** Выполнение упражнения полностью добровольное. Учитывайте, что обращение к нескольким записям создаёт дополнительную вычислительную работу ([распределение задач на сервере](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/main.py#L1824-L1882>) ): при работе через платные API это может увеличить расход средств по тарифам вашего провайдера и модели, а при локальном запуске нагружает ресурсы вашего оборудования и может увеличить время ожидания.

Когда подходящая пара записей отмечена в верхнем списке, разберём, что именно получит каждая из них в момент отправки.

## Отправьте одну задачу из одной исходной ветки

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

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

При обычной интерактивной отправке браузер формирует одно обращение к серверу со списком идентификаторов ответных сообщений по числу выбранных моделей, а сервер распределяет эту работу на отдельные задачи для каждой целевой записи ([формирование заготовок ответов в чате](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L3950-L4004>) , [отправка запроса из интерфейса](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4063-L4095>) , [создание задач на бэкенде](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/main.py#L1824-L1882>) ). Из этого устройства следуют три важных следствия:

- Созданные ответы привязываются как соседние сообщения ассистента к вашей общей реплике, но каждая задача выполняется своим маршрутом ([сборка цепочки сообщений от родительской реплики](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/misc.py#L186-L218>) , [загрузка цепочки из базы данных](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py#L1879-L1901>) ). Это не один общий вызов и не гарантия того, что модели начнут или закончат генерацию одновременно.
- Одинаковый видимый текст запроса и общая исходная ветка помогают удержать одну задачу, но не доказывают, что модели получили побайтово одинаковый полный вход. При сборке запроса учитываются системные инструкции, параметры чата и модели, объявленные возможности записи, память ([память в составе запроса](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py#L2340-L2352>) ), обработка файлов и инструментов, а также правила маршрутизации ([подготовка параметров и контекста в клиенте](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4160-L4225>) , [формирование тела отправки](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4300-L4340>) , [настройки модели и маршрутизация](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py#L2030-L2064>) , [обработка инструментов, файлов и системного контекста](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py#L2924-L2957>) ). При этом без проверки конкретных настроек нельзя утверждать и обратное, будто у каждой выбранной записи обязательно отличается системная инструкция. Как настройки и длина переписки меняют запрос, подробнее разобрано в уроках про [параметры ответа](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/parametry-i-rassuzhdayushchie-modeli/>) и [контекст и сжатие чата](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/kontekst-i-szhatie-chata/>) .
- В общем случае переключатели **`Web Search`**, **`Image Generation`** и **`Code Interpreter`** включаются в режиме сравнения по умолчанию только тогда, когда соответствующая возможность и функция по умолчанию объявлены у каждой выбранной модели, а сама функция разрешена глобально на сервере и доступна пользователю ([примечание о возможностях в документации](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/multi-model-chats.mdx#L22-L22>) , [проверка возможностей и функций по умолчанию в коде чата](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L1106-L1142>) ). Даже активный переключатель не гарантирует, что каждая модель одинаково выполнит инструмент или прочитает вложенный файл. Кроме того, вызовы инструментов и фоновые операции могут менять число фактических обращений к провайдеру, поэтому количество карточек на экране не равно точному счёту за запрос.

После отправки задачи остаётся дождаться ответов и спокойно проверить то, что действительно появилось в интерфейсе.

## Проверьте ответы и выберите пригодный текст

В проверенном компоненте отображения ответов ([логика показа нескольких ответов](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/MultiResponseMessages.svelte#L230-L281>) ) результаты нескольких моделей показываются либо через переключаемые вкладки (если в настройках включён показ ответов во вкладках), либо в виде карточек с горизонтальной прокруткой, где на узком мобильном экране карточка занимает всю ширину области сообщений ([стили карточек ответов](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/MultiResponseMessages.svelte#L320-L345>) ). Не рассчитывайте на обязательные две колонки без прокрутки или на вертикальную стопку карточек: просматривайте ответы в той раскладке, которая открылась в вашей версии и настройках интерфейса.

Проверяйте каждый фактически полученный ответ по трём группам критериев из первого раздела в одном и том же порядке:

1. **Сверьте известные факты.** Убедитесь по тексту ответа, что день, интервал `10:00–13:00` и остальные условия отключения перенесены без пропусков и искажений.
2. **Проверьте отсутствие добавлений и пометку о дате.** Посмотрите, не появились ли от себя адрес, телефон или обещания от лица управляющей компании, и обозначено ли явно, что календарная дата не уточнена. Фиксируйте пропуск или выдумку только тогда, когда вы реально видите их в полученном тексте.
3. **Оцените форму и понятность.** Посчитайте предложения (их должно быть три коротких), проверьте русский язык, спокойный тон и ясность сообщения. Не отдавайте предпочтение ответу только за то, что он длиннее, содержит списки или звучит категоричнее.

Если у какой-то модели уже есть несколько сгенерированных вариантов ответа, стрелки переключения под сообщением просто листают эти готовые записи и меняют выбранную ветку, не запрашивая новую генерацию у модели ([навигация по уже полученным вариантам](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/MultiResponseMessages.svelte#L85-L134>) ).

Отделяйте качество самого текста от технического состояния попытки. Во время запроса маршрут может вернуть ошибку (например, если запись модели не найдена на сервере), ответ может оборваться или вы можете нажать кнопку остановки генерации **`Stop`** ([ошибка отсутствующей модели](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/main.py#L1163-L1170>) , [передача деталей ошибки генерации](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/main.py#L1714-L1736>) , [остановка задач чата по кнопке `Stop`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4488-L4534>) ). Нажатие `Stop` вызывает остановку активных задач чата и помечает соседние ответы флагом завершения `done`. Поэтому внутренний признак завершённости не доказывает, что модель выдала полный и успешный текст, а сама остановка не гарантирует отмену биллинга у внешнего провайдера, возврат средств или отсутствие уже выполненной работы. Если ответ не дошёл или прервался, запишите это как незавершённую попытку, а не как доказательство того, что модель хуже справляется с русским текстом.

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

## Перед уточнением отдельно проверьте ветку и модель

В Open WebUI выбор ответа в истории диалога и выбор моделей для следующего запроса хранятся раздельно. Если не учесть это различие, уточняющая просьба легко уйдёт сразу всем моделям, которые оставались отмеченными в режиме сравнения.

Когда вы нажимаете на карточку ответа или вкладку конкретной модели, интерфейс делает активной эту ветку, переключая текущую позицию истории на выбранное сообщение или его последнего потомка в этой цепочке ([выбор ветки ответа](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/MultiResponseMessages.svelte#L194-L202>) ). При следующем обычном сообщении сервер соберёт историю именно по этой выбранной цепочке: соседние ответы других моделей из параллельных карточек в историю текущей ветки не попадают ([построение цепочки сообщений](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/misc.py#L186-L218>) , [перезагрузка ветки сохранённого чата](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py#L2085-L2113>) ). Базовое устройство цепочек мы уже рассматривали в уроке про [ветки и варианты ответа](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/pervyy-chat/>) .

Однако клик по карточке ответа сам по себе не меняет верхний список выбранных моделей. При обычной отправке нового сообщения (если не используется специальное разовое переопределение модели) запрос прикрепляется к выбранной ветке, но рассылается всему текущему верхнему набору моделей ([выбор родительского сообщения и получателей при отправке](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L3580-L3615>) , [создание ответов для выбранного набора](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L3950-L3959>) ).

Обратите внимание на деталь при выходе из режима `Compare`: когда вы выключаете переключатель `Compare`, селектор оставляет первую (основную, `primary`) запись из текущего верхнего набора ([логика выключения `Compare`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/ModelSelector/Selector.svelte#L401-L408>) , [какая запись считается основной](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/ModelSelector/Selector.svelte#L190-L193>) ). Если вам понравился ответ второй модели, простое выключение `Compare` оставит в верхнем списке первую модель, а не автора выбранной карточки.

Поэтому перед любым уточнением действуйте в три шага:

1. Нажмите на карточку или вкладку подходящего ответа, чтобы сделать его ветку активной.
2. Посмотрите на верхний селектор моделей.
3. Если следующее сообщение должна получить только одна конкретная модель, явно оставьте или выберите именно её запись в верхнем списке.

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

### Когда нужен новый вариант или Merge

Иногда ни один из готовых черновиков не подходит целиком или в удачном ответе хочется поправить одну фразу. Различайте просмотр уже полученных вариантов, ручную правку человека и действия, которые запускают новую генерацию на сервере:

| Действие | Что происходит с текстом и запросом | Что учесть перед использованием |
| --- | --- | --- |
| **Стрелки вариантов ответа** | Переключают уже существующие ответы внутри группы и меняют активную ветку | Не запускают новый запрос генерации к модели |
| **Ручная сборка и правка человеком** | Вы сами копируете или редактируете удачные предложения из разных карточек | Обычное редактирование текста без вызова модели; факты всё равно сверяются с заданием |
| **`Regenerate`** | В многомодельном обмене отправляет новый запрос на генерацию только для модели и позиции этой карточки ([код повторной генерации](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4577-L4607>) ) | Создаёт дополнительную задачу генерации и может повлечь ожидание и расходы |
| **`Continue Response`** | Отправляет выбранную ветку вместе с уже имеющимся текстом ответа, чтобы модель продолжила генерацию ([код продолжения ответа](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4611-L4630>) ) | Доступно на последнем ответе при наличии соответствующего разрешения ([условие показа кнопки](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/ResponseMessage.svelte#L1393-L1409>) ); это тоже новая генерация |
| **`Merge Responses`** | Собирает текущие просматриваемые варианты от каждой модели и исходный запрос, после чего запрашивает новый объединённый текст на модели просматриваемого ответа ([обработчик объединения текущих вариантов](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/MultiResponseMessages.svelte#L205-L214>) , [вызов объединения в чате](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte#L4634-L4656>) , [серверный маршрут синтеза](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/routers/tasks.py#L616-L665>) ) | Экспериментальная ручная функция; результат сохраняется у выбранного сообщения и требует полной проверки фактов |

Кнопка **`Merge Responses`** появляется только на последнем обмене сообщениями, вне режима только для чтения и компактного предпросмотра, когда у всех отображаемых ответов стоит признак `done` ([условия доступности `Merge Responses`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Messages/MultiResponseMessages.svelte#L392-L453>) ). Поскольку флаг `done` выставляется и после нажатия `Stop`, само появление кнопки объединения не гарантирует, что все исходные ответы были полными и успешными.

В официальной документации объединение ответов названо экспериментальной возможностью ([экспериментальный статус объединения](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/multi-model-chats.mdx#L70-L72>) ). `Merge Responses` не подключает отдельную независимую «модель-судью», не вычисляет консенсус автоматически и не проверяет истинность фактов большинством голосов: это ещё один запрос к модели просматриваемого ответа, который может добавить задержку и расходы, а также объединить чужие ошибки или потерять деталь из задания. Поэтому для нашего упражнения ни `Merge Responses`, ни `Regenerate`, ни `Continue Response` запускать не нужно.

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

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

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

Если уточнение не требуется, выбирать одну модель в верхнем списке, делать дополнительную отправку, вызывать `Merge Responses` или публиковать само вымышленное объявление не нужно. Если же в вашей установке нет кнопки `Compare`, нет второй доступной записи модели или вы решили не расходовать ресурсы на генерацию, просто укажите, какой именно шаг остался невыполненным.

Чтобы решить, какие беседы оставлять в истории и когда сохранять отдельную копию, разберите [временные чаты, экспорт и удаление](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/vremennye-chaty-eksport-i-udalenie/>) .

## Материалы урока

- [Первый чат и варианты ответа timofei-ermolaev.ru](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/pervyy-chat/>)
- [Параметры ответа и рассуждающие модели timofei-ermolaev.ru](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/parametry-i-rassuzhdayushchie-modeli/>)
- [Контекст и сжатие чата timofei-ermolaev.ru](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/kontekst-i-szhatie-chata/>)

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

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

Урок пройден

![Тимофей Ермолаев](https://timofei-ermolaev.ru/_astro/timofei-ermolaev-portrait.s0mCFw-J_2r7Nkv.webp)

## Об авторе

### Тимофей Ермолаев

Директор по информационным технологиям (CIO)

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

[Подробнее об авторе](<https://timofei-ermolaev.ru/ob-avtore/>)
