Месяц назад я утонул в одинаковых вопросах. Один и тот же вопрос про оплату — три раза за день. Про сроки — пять раз за неделю. Я отвечал, копируя предыдущий ответ, и думал: это же абсурд. Трачу живое время на то, что можно было автоматизировать ещё год назад.
Решил разобраться с Telegram-ботом, который сам отвечает на стандартные вопросы. Не потому что тренд — просто задолбало.
С чего я начал и куда сразу пошёл не туда
Первая идея была простой: взять готовый FAQ, загнать его в бота через if-else, пусть ищет совпадения по ключевым словам. Потратил часа два, запустил — и сразу стало понятно, почему так не делают. Человек пишет "когда придёт мой заказ" — бот молчит, потому что ждёт слово "сроки". Человек пишет "не работает кнопка оплаты" — бот находит раздел про оплату, но отвечает что-то совсем мимо.
Ключевые слова — это иллюзия решения. Работает только для самых предсказуемых случаев. А поддержка — это как раз место, где люди формулируют одно и то же двадцатью способами.
Переделал под нормальный подход: бот принимает сообщение, отправляет его в OpenAI с системным промптом, где описан продукт и правила ответов, возвращает результат пользователю. Технически — буквально сто строк на Python с библиотеками python-telegram-bot и openai. Но дьявол, как обычно, в деталях.
Что реально решает промпт, а что нет
Я думал, что достаточно написать в системном промпте "ты помощник компании X, отвечай вежливо" — и всё. Оказалось, это только начало.
Бот начал придумывать. Пользователь спрашивал про функцию, которой нет, — бот вежливо объяснял, как ею пользоваться. Это хуже, чем "не знаю": человек уходит с неправильной информацией и потом злится вдвойне.
Пришлось добавить в промпт жёсткое правило: если вопрос выходит за пределы базы знаний — никакого гадания, сразу "этот вопрос передам команде, ответим в течение N часов". Параллельно бот кидает уведомление в отдельный чат операторам.
Дальше вылез тон. GPT по умолчанию слащавый и формальный. "Конечно, я с удовольствием помогу вам разобраться с этим вопросом!" — никто так не говорит вживую. Потратил немало времени, чтобы промптом выбить нормальный человеческий тон. Помогли примеры прямо в промпте — несколько пар "вопрос-ответ" в нужном стиле.
Где хранить базу знаний и почему это важнее, чем кажется
Самый скучный, но критичный момент. Первые две недели я держал базу знаний прямо в системном промпте — просто большой текст с ответами на частые вопросы. Работало, но у подхода быстрый потолок: промпт разрастается, растёт стоимость каждого запроса, и в какой-то момент модель начинает хуже "видеть" информацию с краёв длинного контекста.
На практике нормальное решение — RAG: пользователь пишет вопрос, система ищет в базе знаний похожие фрагменты, подставляет только их в промпт, и уже с этим контекстом идёт к GPT. Промпт остаётся компактным, а база может быть хоть на тысячу страниц.
Я взял ChromaDB — локальная векторная база, поднимается буквально в пять строк. Для небольшого проекта вполне хватает. Для чего-то серьёзнее есть Pinecone или Weaviate, но это другой масштаб и другие деньги.
Что случилось после запуска
Запустил на реальных пользователях через три недели после старта. Первую неделю просто наблюдал и читал все диалоги — это оказалось неожиданно полезно. Люди задавали вопросы, которые я вообще не предполагал. Не потому что они странные — просто я, как человек внутри продукта, уже не замечаю неочевидных мест.
Бот справлялся примерно с 70% обращений без передачи оператору. Звучит неплохо, но оставшиеся 30% — это не равномерный хвост. Там концентрировались самые сложные и эмоциональные ситуации: что-то не работает, деньги списались, а товар не пришёл. Именно в таких случаях люди меньше всего хотят разговаривать с ботом.
Добавил явную кнопку "Хочу поговорить с человеком" в самом начале диалога. Казалось бы очевидно, но изначально её не было — думал, что бот справится, люди сами разберутся. Нет. Эта кнопка сняла большую часть раздражения.
Сколько это стоит в реальности
Посчитал за первый месяц: примерно 800 запросов, средний диалог на 3-4 сообщения, GPT-4o-mini. Вышло около 4 долларов. Смешные деньги, но только потому что я использовал mini-модель везде, где можно.
GPT-4o на тех же объёмах обошёлся бы раз в десять дороже. Разница в качестве ответов есть, но для стандартных вопросов поддержки она не стоит этих денег. Mini справляется с 90% случаев, а для оставшихся 10% всё равно нужен живой человек.
Хостинг — отдельный вопрос. Бот крутится на маленьком VPS за 5 евро в месяц, этого хватает. Единственное, что настроил отдельно, — вебхуки вместо polling: снижает нагрузку и делает ответы быстрее.
В итоге есть бот, который закрывает большую часть рутинных вопросов, не врёт (или хотя бы честно признаётся, что не знает), и не бесит людей. Последнее, пожалуй, главное. Плохой бот хуже отсутствия бота — он создаёт иллюзию поддержки, пока человек на самом деле злится в одиночестве.
Если делать что-то подобное, я бы советовал начать с малого: взять десять самых частых вопросов и научить бота только им. Не пытаться сразу покрыть всё. Лучше узкий бот, который отвечает точно, чем широкий, который постоянно промахивается.
