ИИ-ассистент для сайта: отвечает по текстам сайта, в потоке и со ссылками
Отвечает посетителю по текстам сайта, прикладывает ссылку на раздел-источник и говорит «на сайте про это ничего нет», когда ответа нет, — вместо того чтобы выдумывать.
Задача
Сайт-портфолио отвечает на вопросы только тому, кто готов читать. Посетитель с конкретным вопросом — «делали ли вы бота с оплатой», «можно ли на Тильду» — пролистывает кейсы, не находит и уходит. Нужен был собеседник, который найдёт ответ за него.
Три условия, без которых такой чат на публичном сайте хуже, чем ничего:
- Не выдумывать. На сайте нет прайса намеренно, и ассистент, назвавший цену «из головы», сломает позиционирование быстрее любого конкурента.
- Не требовать сопровождения. Если после каждой новой статьи ассистента нужно «переобучать», через месяц он будет отвечать про сайт, которого уже нет.
- Не мешать поиску и не ломать страницу. Сайт живёт поисковым трафиком, и виджет не имеет права это трогать.
Что сделано
Знание публикует сам сайт. При каждой сборке сайт режет свои страницы на разделы по заголовкам и выкладывает этот индекс рядом с картой сайта, у каждого раздела — точный адрес его якоря. Ассистент перечитывает оба файла раз в десять минут. Новая статья попадает в ответы без единого действия с его стороны: выложил сайт — ассистент уже знает.
Поиск без векторной базы — намеренно. Разделов несколько сотен, заголовки у них плотные, и лексический поиск со словоформами находит нужное не хуже эмбеддингов. Векторная база здесь была бы ещё одной системой, которую надо строить, хранить и обновлять, — ради выигрыша, которого на таком объёме нет. Заголовок раздела весит больше текста, а разделы страницы, которую человек читает сейчас, получают небольшую надбавку: вопрос почти всегда про неё.
Правила ответа записаны явно. Отвечать только по найденным кускам и карте сайта. Если ответа нет — сказать «на сайте про это ничего нет» и предложить написать напрямую, а не натягивать соседнюю тему. Цен и сроков не называть, если их нет в тексте дословно. Ссылаться только на адреса из контекста. Когда найденное слабо похоже на вопрос, ассистент получает об этом отдельное предупреждение, а источники посетителю не показываются.
Поток, который не теряет текст. Ответ печатается по мере генерации. Однажды модель замолчала посреди ответа, и сервер честно ждал минуту, пока человек смотрел на оборванную фразу. Теперь таймер простоя сбрасывается каждым пришедшим куском, и тишина дольше 25 секунд обрывает поток сразу. Виджет при этом оставляет уже напечатанное и дописывает, что связь прервалась, — а не заменяет полответа сообщением об ошибке.
Расход ограничен до первого счёта. Ключ модели не покидает сервер. Сообщение режется до тысячи знаков, в модель уходят только последние шесть реплик, длина ответа ограничена. Сверху — лимит обращений с одного адреса в час и общий дневной потолок. Числа заведомо скромные: их проще поднять по реальному трафику, чем объяснять неожиданный счёт.
Невидим для поиска и для поломок. В документе, который получает поисковый робот, от ассистента одна строка подключения скрипта: сборки сайта с ним и без него различаются ровно ей. Окно собирается уже в браузере. Перед показом кнопки виджет спрашивает сервер, готов ли тот, — и если сервер лежит или ещё не загрузил знание, кнопки нет, ошибок нет, следов нет.
Телефон. На узком экране окно разворачивается почти на весь экран и блокирует прокрутку страницы так, как это понимает iOS. Размер считается от видимой области, а не от раскладки страницы, — иначе клавиатура iPhone закрывает поле ввода. И размер зависит только от экрана, не от фокуса поля: иначе нажатие на кнопку отправки снимает фокус, окно прыгает, и кнопка уезжает из-под пальца.
Результат
Ассистент работает на всех страницах этого сайта с сентября 2026 года. Проверить проще, чем читать: кнопка в правом нижнем углу, вопрос вроде «делал ли он что-то с оплатой» — и ответ со ссылками на конкретные разделы кейсов.
Под ним лежит тот же серверный слой, что обслуживает другие мои проекты — тренажёр английского и прототипы ассистентов: ключи на сервере, потоковая передача, журнал обращений.
Что дальше
Диалоги сейчас пишутся только в системный журнал. Следующий шаг — сохранять их в базу: вопросы, на которые на сайте не нашлось ответа, — готовый список тем для статей, собранный самими посетителями.
Если нужен такой же ассистент на ваш сайт — что входит и из чего складывается цена.
Расскажите, что нужно сделать
Напишите в Telegram пару предложений о задаче: что за бизнес, что должно получиться и что уже пробовали. В ответ — понятный план и цена. Без брифов на десять страниц.