Я экспериментирую с использованием ИИ на нашем форуме Discourse, и пока всё работает отлично (большое спасибо команде). Он действительно учитывает намерения пользователей и выдаёт очень релевантные результаты.
Проблема в том, что результаты по умолчанию скрыты:
Я не могу найти настроек, чтобы включить этот переключатель по умолчанию. Как администратор может это сделать? Настоящая сила этой функции — включить её по умолчанию и отказаться от семантического поиска, который иногда работает, а иногда нет.
Забавно, но я попытался найти что-то на этом форуме с помощью ИИ, но не получил никаких релевантных ответов.
Да, я видел эту страницу, но не нашёл там информации о том, как включить результаты поиска с использованием ИИ по умолчанию для всех. Не упустил ли я что-то?
Возможно, я вас неправильно понял . Я подумал, что вы имели в виду «включить функцию», а не «включить переключатель». Если речь идет о переключателе, то, насколько я знаю, сделать это невозможно.
Мы только что сделали переключение по умолчанию активным, когда полный поиск по странице не дает результатов, а в ближайшее время добавим автоматическое дополнение результатами ИИ при быстром поиске в заголовке, если результатов нет или их мало.
Настройки для всегда автоматического включения переключения при полном поиске по странице нет, так как это вызвало бы проблему.
Это отличная отправная точка. Было бы здорово добавить возможность приоритизации результатов, которые мы хотим отображать в качестве первого выбора (расширение только что реализованной логики): ИИ или нативный семантический поиск. В моем случае ИИ дает гораздо более релевантные результаты при поиске.
Суть в том, что токены уже были потрачены на запуск поиска с помощью ИИ, так почему бы не показать результаты, если они более уместны? Многие пользователи всё ещё настороженно относятся к ИИ, поэтому не переключают тумблер, но при этом получают вводящие в заблуждение результаты поиска (семантические), не осознавая этого. Пусть администраторы сами решают, что лучше для настроек по умолчанию их сообщества.
В качестве временного решения, если кому-то нужно включать переключатель по умолчанию, вы можете добавить этот скрипт в свою тему (я разместил его внутри тега ). Он отслеживает изменения в результатах поиска с ИИ и затем включает отображение результатов ИИ. Это не самый чистый код; возможно, @awesomerobot предложит более элегантный способ решения этой задачи.
<script type="text/javascript">
// ЭТОТ СКРИПТ НЕОБХОДИМ ДЛЯ ВКЛЮЧЕНИЯ ПЕРЕКЛЮЧАТЕЛЯ, ЧТОБЫ ВКЛЮЧАТЬ РЕЗУЛЬТАТЫ ПОИСКА ОТ ИИ ПОСЛЕ ЗАВЕРШЕНИЯ ПОИСКА. УДАЛИТЕ ЕГО, КОГДА ПОЯВИТСЯ ВСТРОЕННАЯ ВОЗМОЖНОСТЬ ВКЛЮЧАТЬ ЭТО ПО УМОЛЧАНИЮ.
console.log('Скрипт загружен. Постоянный поиск .semantic-search__searching и управление наблюдателем.');
let searchObserver = null; // Переменная для хранения экземпляра наблюдателя
function observeSearchContainer() {
const searchStatusContainer = document.querySelector('.semantic-search__searching');
if (searchStatusContainer) {
// Если контейнер найден
if (!searchObserver) {
// Если наблюдатель еще не запущен, запускаем его
console.log('.semantic-search__searching найден. Запуск наблюдения.');
searchObserver = new MutationObserver(function(mutations) {
//console.log('Обнаружено изменение в .semantic-search__searching:', mutations);
mutations.forEach(function(mutation) {
// Проверка на соответствующие изменения внутри наблюдаемого контейнера
if (mutation.type === 'characterData') {
//console.log('Обнаружен соответствующий тип изменения. Попытка активировать функциональность кнопки переключения. ' + mutation.type);
const currentToggleButton = document.querySelector('button.d-toggle-switch__checkbox.semantic-search__results-toggle');
if (currentToggleButton) {
const isCurrentlyEnabled = currentToggleButton.getAttribute('aria-checked') === 'true';
if (!isCurrentlyEnabled) { // Если переключатель НЕ включен в данный момент
// Запускаем событие клика для активации связанной функциональности
currentToggleButton.click();
console.log('Событие клика по кнопке переключения запущено.');
} else {
console.log('Кнопка переключения уже включена.');
}
} else {
// Этот случай может возникнуть, если кнопка переключения удалена, пока контейнер еще присутствует
console.log('Кнопка переключения не найдена при попытке активировать функциональность.');
}
}
});
});
const config = { childList: true, subtree: true, characterData: true, attributes: true };
searchObserver.observe(searchStatusContainer, config);
console.log('MutationObserver запущен на .semantic-search__searching.');
} else {
// Контейнер найден, и наблюдатель уже запущен для него
//console.log('.semantic-search__searching найден, наблюдатель уже активен.');
}
} else {
// Если контейнер НЕ найден
if (searchObserver) {
// Если наблюдатель ранее был запущен, это означает, что контейнер был удален
console.log('.semantic-search__searching удален. Отключение наблюдателя.');
searchObserver.disconnect(); // Остановить наблюдение
searchObserver = null; // Сбросить переменную наблюдателя
} else {
// Контейнер не найден, и наблюдатель не активен (правильное состояние)
//console.log('.semantic-search__searching пока не найден.');
}
}
}
// Используем интервал для периодической проверки существования контейнера
const containerCheckInterval = setInterval(observeSearchContainer, 500); // Проверка каждые 500 миллисекунд
</script>