LLM API и интеграция
Чат-бот для сайта с нейросетью: как сделать
Чат-бот на сайте отличается от бота в мессенджере одним обстоятельством, которое определяет всю архитектуру: он живёт в браузере посетителя, а браузер — недоверенная среда. Ключ туда попасть не может, лимиты на стороне клиента не работают, и любой посетитель при желании превращает ваш виджет в бесплатный доступ к модели за ваш счёт. Отсюда обязательная схема из трёх частей — виджет, ваш сервер и ключ на сервере — и обязательный набор ограничений, без которых счёт становится непредсказуемым. Разбираем устройство, считаем стоимость и перечисляем, что ломается у всех одинаково.
Из чего состоит
Три части, и средняя — не опциональная.
Виджет на странице. Окно, поле ввода, история сообщений. Обращается только к вашему серверу.
Ваш сервер. Принимает сообщение от виджета, добавляет системный промпт и нужные материалы, обращается к модели своим ключом, возвращает ответ. Здесь же живут лимиты, логи и вся защита.
Ключ к API. Только на сервере, в переменных окружения. Никогда не в коде виджета и не в сборке фронтенда — где хранить и где нельзя.
Соблазн выкинуть среднюю часть возникает у всех: обращаться к модели прямо из браузера проще и быстрее. Так делать нельзя, и не из соображений хорошего тона, а потому что ключ в браузере виден любому, кто откроет инструменты разработчика. Обфускация не спасает: запрос всё равно уходит с ключом в заголовке.
Что обязательно ограничить
Список, каждый пункт которого написан чьей-то оплаченной ошибкой.
Число сообщений на посетителя. Без этого один человек за вечер израсходует ваш месячный бюджет. Считать по идентификатору сессии и по адресу одновременно — по отдельности оба обходятся.
Длину диалога. История переотправляется на каждом шаге, поэтому пятидесятое сообщение стоит существенно дороже первого. Разумно ограничивать переписку и предлагать начать новую.
Длину одного сообщения. Иначе в поле ввода вставят книгу.
Темы. Системный промпт должен явно отказываться от того, что не относится к вашему продукту. Иначе виджет становится бесплатным помощником по любым вопросам, и вы за это платите.
Максимальную длину ответа. Прямой рычаг на выходную часть счёта.
Отдельно про последний пункт защиты, о котором вспоминают поздно: ограничение расхода на стороне ключа. Даже если всё перечисленное написано, ошибка в коде может открыть цикл. Отдельный ключ под виджет с собственным лимитом ограничивает ущерб суммой, а не фантазией.
Откуда берётся стоимость
Считать надо не так, как кажется на первый взгляд.
Интуиция подсказывает: расход равен числу вопросов, умноженному на их длину. На деле основные слагаемые другие.
Системный промпт. Правила, описание продукта, тон, примеры. Уходит в модель при каждом сообщении, а не один раз за диалог.
Материалы для ответа. Если бот отвечает по вашей документации или прайсу, найденные фрагменты тоже уходят при каждом обращении.
История переписки. Модель ничего не помнит между запросами, поэтому вся переписка отправляется заново — с каждым сообщением объём растёт.
И только потом сам вопрос. Обычно самая маленькая часть.
Отсюда практический вывод: диалог из двадцати реплик стоит непропорционально дороже двадцати отдельных вопросов. Как разложить это в месячную сумму — в разборе стоимости миллиона токенов в рублях, а сами токены считать по этой методике.
Как сократить расход, ничего не потеряв
Четыре приёма по убыванию эффекта.
Обрезайте историю. Держать в контексте всю переписку обычно не нужно: хватает последних нескольких реплик плюс короткая сводка того, что было раньше.
Сокращайте системный промпт. Перечитайте его и вычеркните то, что ни разу не пригодилось. Обычно вычёркивается треть, и она оплачивалась при каждом сообщении — как устроен рабочий системный промпт.
Не отправляйте всю документацию. Найдите нужные фрагменты и отправьте только их — это поиск по своим документам.
Отвечайте на частые вопросы без модели. Половина обращений в типичном виджете — три-четыре одинаковых вопроса. Готовый ответ на них стоит ноль и приходит мгновенно.
Последний приём чаще всего дает самую большую экономию и почему-то применяется реже всех.
Какую модель брать
Задача проще, чем кажется, поэтому и модель нужна не самая сильная.
Ответ по вашим материалам — это не сложное рассуждение, а изложение найденного. Разница между дешёвой и дорогой моделью здесь обычно небольшая, а разница в цене — кратная.
В каталоге на 3 сентября 2026 года 46 позиций в двенадцати семействах, из них 32 с открытым чат-протоколом и восемь тарифицируются по нулевой ставке после платного пополнения. Начинать разумно снизу и подниматься только при доказанной нехватке — что доступно по нулевой ставке.
Проверяется это двумя десятками реальных вопросов ваших клиентов, а не чтением рейтингов — методика сравнения.
Что показывать, когда ответа нет
Самая недооценённая часть, и она же — главный источник претензий.
Модель, которой нечего ответить, не молчит: она достраивает правдоподобное. Придуманное условие возврата или несуществующая скидка становятся вашим обязательством в глазах человека, который это прочитал на вашем сайте — почему так происходит и что делать.
Три меры, которые работают:
Отвечать только по предоставленным материалам. И явно писать в промпте, что при отсутствии данных надо признаться, а не догадываться.
Дать легальный способ не знать. «Не нашёл в материалах» плюс переход на живого человека — нормальный ответ, а не поражение.
Проверять критичное в коде. Если бот называет цену или срок, значение должно приходить из вашей базы, а не из формулировки модели.
Про потоковую передачу
Небольшая, но заметная для восприятия деталь.
Ответ, который появляется по мере генерации, воспринимается быстрее того же ответа, показанного целиком через несколько секунд. Для виджета на сайте это ощутимо: человек видит, что процесс идёт.
Стоимость при этом не меняется — оплачиваются те же токены. Меняется только восприятие и сложность реализации на стороне сервера. Подробнее — в разборе когда нужен стриминг, а когда нет.
Что ломается у всех одинаково
Пять типовых проблем.
Ключ утёк во фронтенд. Самая частая и самая дорогая.
Нет лимита на посетителя. Обнаруживается по счёту.
Бот отвечает на всё подряд. Не запретили темы в промпте.
История растёт бесконечно. Расход на длинных диалогах уходит в потолок.
Нет логов. Разбираться в жалобе «бот сказал ерунду» не по чему — что писать в логи.
Что мерить после запуска
Виджет отличается от внутренних сценариев тем, что его качество видно только по поведению посетителей. Четыре величины, которые стоит считать с первого дня.
Доля диалогов, закончившихся переходом к человеку. Растёт — значит бот не справляется; падает до нуля — возможно, кнопку перехода не видно, и люди просто уходят.
Средняя длина диалога. Короткие диалоги обычно означают, что ответ нашёлся сразу. Длинные — что человек переспрашивает, и это первый признак проблемы с материалами, а не с моделью.
Доля повторяющихся вопросов. Три-четыре самых частых стоит вынести в готовые ответы: они дёшевы, мгновенны и снимают заметную часть нагрузки.
Стоимость одного диалога. Не в сумме за месяц, а на диалог. Так видно, растёт ли расход из-за нагрузки или из-за того, что диалоги удлиняются.
И отдельно — читайте сами диалоги. Не метрики, а тексты, хотя бы двадцать штук в неделю. Оттуда видно и чего не хватает в материалах, и где формулировки промпта работают не так, как задумано. Ни одна цифра этого не показывает.
Чего мы не утверждаем
Не даём готового кода. Реализация зависит от вашего стека.
Не сравниваем модели по качеству. Своих замеров мы не делали.
Не обещаем, что ограничения закроют злоупотребление полностью. Они ограничивают ущерб, а не исключают его.
Цифры каталога — на дату. 46 позиций, 32 с открытым чатом, 8 нулевых — состояние на 3 сентября 2026 года; актуальное всегда в живой выдаче.
Что держать в голове
Виджет живёт в браузере, а браузер недоверенный. Отсюда обязательный сервер посередине и ключ только на нём — это не усложнение, а единственное место, где вообще возможны лимиты и логи.
И про деньги: платите вы не за вопросы посетителей, а за системный промпт, материалы и историю, которые уходят в модель при каждом сообщении. Обрезка истории и короткий промпт дают больше экономии, чем смена модели.
Как мы проверяем факты и что храним из запросов — на странице о проекте и в llms.txt. Завести отдельный ключ под виджет с собственным лимитом: keydealer.ru/login.
Частые вопросы
Как сделать чат-бота для сайта с нейросетью?
Нужны три части: виджет на странице, свой сервер-посредник и ключ к API на этом сервере. Виджет обращается к вашему серверу, сервер — к модели. Напрямую из браузера обращаться нельзя.
Можно ли обратиться к API прямо из браузера?
Технически можно, но тогда ключ окажется у любого посетителя. Всё, что попадает на страницу, читается инструментами разработчика, поэтому ключ должен жить только на сервере.
Сколько стоит чат-бот на сайте?
Зависит от числа диалогов и их длины. Основной расход — не вопросы посетителей, а история переписки, которая переотправляется на каждом шаге, и системный промпт с описанием вашего продукта.
Как защититься от того, что бота будут использовать как бесплатный ChatGPT?
Лимитом на посетителя, ограничением длины диалога и системным промптом, который отказывается от тем вне вашей области. Полностью это не закрывается, поэтому лимит обязателен.
Какая модель нужна для чат-бота поддержки?
Обычно недорогая. Задача сводится к ответу по вашим материалам, а не к сложным рассуждениям, и разница между дешёвой и дорогой моделью здесь чаще всего невелика.