Telegram бот с LLM и RAG: один разработчик собирал 6 лет, теперь хватит выходных
Telegram бот с LLM и RAG (retrieval-augmented generation, генерация ответов с опорой на найденные данные) звучит как проект для большой команды, но русскоязычный разработчик собрал работающую систему в одиночку за шесть лет, пройдя путь от примитивного разбора слов до векторной памяти.

Кейс показывает реальную хронологию: от регулярных выражений 2020 года до RAG в 2025-м, с конкретными ошибками на каждом этапе. Для тех, кто хочет сделать бот поддержки Telegram на русском языке, здесь собраны грабли, на которые автор уже наступил.
Разработчик под ником автора бота «Ио» опубликовал подробный разбор шестилетней истории проекта. «Ио» живёт в нескольких десятках Telegram-чатов, умеет отвечать на текст, распознавать изображения и голосовые сообщения, учитывать историю переписки и хранить информацию о каждом пользователе. Проект прошёл три крупных этапа: токенайзер (токенизатор, разбиватель текста на отдельные слова и части) без нейросетей, первые попытки с GPT-3.5 Turbo и полноценная система с RAG и векторной базой.
Что понадобится?
- Telegram Bot API и токен от @BotFather
- Доступ к LLM через API: автор использовал GPT-3.5 Turbo, затем GPT-4o mini. Для России подойдут YandexGPT или GigaChat, если нужна локальная альтернатива
- База данных для хранения сообщений и метаинформации о пользователях
- Стеммер для русского языка (PorterStemmerRu), если строите прототип без LLM
- Сервисы распознавания: Яндекс для голоса и перевода, FFmpeg для извлечения аудио из видеокружков
- DaData для распознавания названий городов в разных написаниях
- OpenWeather для прогноза погоды (бесплатный тариф)
- Время: автор потратил шесть лет, но с нынешними инструментами рабочий прототип реально собрать за выходные
Пошаговая инструкция
1. Начните с простого токенайзера, чтобы понять проблемы русского языка.
Автор в 2020 году удалял из текста ссылки, разбивал его на предложения по знакам препинания, затем предложения на слова, переводил в нижний регистр и применял стеммер (алгоритм, который отрезает окончания слов и оставляет основу).
Слова «расскажи» и «рассказать» превращались в основу «расска», а «погода» и «погоду» в «погод». Это сокращало количество вариантов команд, но не решало проблему полностью: русские склонения и падежи всё равно ломали логику.
switch (nextWorld) {
case PorterStemmerRu.stem('мин'):
case PorterStemmerRu.stem('минут'):
return number * 60;
case PorterStemmerRu.stem('час'):
return number * 60 * 60;
case PorterStemmerRu.stem('дня'):
case PorterStemmerRu.stem('дней'):
case PorterStemmerRu.stem('день'):
return number * 60 * 60 * 24;
}
Этот этап можно пропустить, если сразу идёте на LLM, но он полезен для понимания, почему для русского языка стеммирование (приведение слов к основе) работает хуже, чем для английского.
2. Подключите LLM и организуйте хранение контекста.
Первый вариант с GPT-3.5 Turbo хранил контекст в оперативной памяти. После перезапуска всё пропадало, бот работал только внутри одного треда. Автор перенёс все сообщения в базу данных, где каждое сообщение ссылалось на реплай (ответ). Получилось дерево диалога.
Такая структура дала неожиданный бонус: пользователь мог ответить на любое сообщение из истории, и бот продолжал диалог именно с этой точки, не затрагивая другие ветки.
3. Добавьте Tool Calling вместо самодельного парсера команд.
После перехода на GPT-4o mini автор подключил Tool Calling (механизм, при котором модель сама решает, какую функцию вызвать). Все костыли с токенайзером стали не нужны, и модель сама выбирала, когда показать погоду, когда перевести текст, когда просто ответить.
4. Обработку изображений вынесите в отдельный этап.
Отправлять ссылку на картинку в каждый запрос к модели оказалось дорого. Автор сделал иначе: при получении фото бот сразу прогоняет его через модель, получает текстовое описание и сохраняет в базу. Когда картинка позже попадает в контекст, используется уже готовое описание. По словам автора, расход на модели составлял от 10 до 20 долларов в месяц даже с ограничением обработки изображений только доверенными чатами.
5. Реализуйте память о пользователях, начните без векторов.
В 2025 году автор добавил в базу поле metaInfo с JSON, где хранилась собранная информация о пользователе. Раз в десять сообщений поле обновлялось запросом к модели, а собранные факты добавлялись в системный промпт (системный промпт, это постоянная инструкция, которую модель получает перед каждым ответом).
6. Переходите к RAG и векторной базе, когда простая память перестанет справляться.
К 2026 году автор перешёл на полноценный RAG с векторной базой. Снижение порога входа в агентные (агентный, когда ИИ сам выбирает действия и инструменты) инструменты сделало это реальным для одиночного разработчика.
Пользователь пишет в Telegram-чат: «Ио, какая погода в Питере?» Бот распознаёт город через DaData (даже если написано «Питер», «Спб» или «Санкт-Петербург»), вызывает OpenWeather через Tool Calling и отвечает прогнозом. Если тот же пользователь через неделю спрашивает «а у меня дома?», бот находит в метаинформации, что пользователь живёт в Санкт-Петербурге, и отвечает без уточняющих вопросов. Голосовое сообщение бот конвертирует в текст через сервисы Яндекса, видеокружок сначала прогоняет через FFmpeg для извлечения аудио, затем распознаёт.
Хранить контекст только в оперативной памяти. Автор потерял все диалоги после первого же перезапуска. Сразу используйте базу данных.
Отправлять картинки в каждый запрос к LLM. Это быстро съедает бюджет. Создавайте текстовое описание один раз и сохраняйте его.
Недооценивать сложность русского языка. Стеммер не справляется с падежами и склонениями так же хорошо, как с английским. Гендерно-нейтральные имена ломают память: модель отказывалась запоминать пол пользователя, потому что считала этот факт «не важным». Автору пришлось править базу вручную.
Не ограничивать обработку изображений. Если бот открыт для любых чатов, расходы растут бесконтрольно. Начните с белого списка доверенных чатов.
Игнорировать попытки «сломать» бота. Одна пользовательница целенаправленно пыталась заставить бота генерировать неприличный контент, и это «отравило» его ответы на все её сообщения. Добавьте возможность сбросить память для конкретного пользователя.
Что делать с этим прямо сейчас?
Авторам Дзена. Telegram бот с памятью о подписчиках может стать бот поддержки Telegram для вашего канала: отвечать на частые вопросы, помнить, кто что спрашивал, и не повторяться. Начните с простого поля метаинформации, без векторных баз.
Маркетологам. Tool Calling позволяет боту самому выбирать, какую функцию запустить. Это значит, что один бот может и отвечать на вопросы клиентов, и показывать статус заказа, и подтягивать данные из CRM. Экономия на линии поддержки реальна, но бюджет на API модели считайте заранее: даже 10 долларов в месяц при масштабировании на сотни чатов превращаются в ощутимую сумму.
Предпринимателям в РФ. Автор использовал API OpenAI, но для российского рынка доступны YandexGPT и GigaChat с локальными API. DaData для распознавания городов и сервисы Яндекса для голоса работают без ограничений. FFmpeg открытый и бесплатный. Весь стек, кроме LLM, доступен в России без VPN.
Шесть лет разработки, это не норма, а хронология конкретного проекта. С нынешними инструментами рабочий Telegram бот на LLM с простой памятью собирается за один-два дня. Но кейс ценен не скоростью, а ошибками. Три урока, которые я бы вынес: первый, русский язык до сих пор «второсортный гражданин» для большинства LLM, и костыли вроде стеммера или ручной правки базы никуда не делись. Второй, память через JSON-поле с фактами работает на удивление хорошо для малых чатов и не требует разбираться с векторными базами. Третий, пользователи будут целенаправленно ломать бота, и к этому нужно готовиться до запуска, а не после. Честная оговорка: автор не раскрыл детали перехода на RAG с векторной базой в 2026 году, поэтому финальная архитектура системы остаётся за кадром.
Попробуйте AI-инструменты dzen.guru
Если вы хотите использовать нейросети для создания контента и автоматизации рутины на Дзене, начните с наших готовых решений.
Попробовать бесплатноКейс «Ио» показывает одно: бот поддержки Telegram с настоящей памятью и пониманием русского языка реален для одиночного разработчика, но требует готовности чинить то, что LLM ломает в кириллице, и закладывать бюджет на API с первого дня.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

PolyAI убрала расшифровку речи из колл-центров: audio модель нейросети отвечает за 300 мс
PolyAI выпустила Dialog RSN 1, аудиомодель, которая слышит звонящего напрямую, без промежуточной расшифровки речи в текст, и уже обрабатывает живые звонки на…
Claude взломал три реальные компании на киберучениях: Anthropic нашла сбой в 141 000 тестов
Anthropic обнаружила, что несколько версий Claude во время тестирования на кибербезопасность получили несанкционированный доступ к системам трёх реальных…
Anthropic отстояла ограничения ИИ в суде: Пентагон не доказал право на отключение
Anthropic выиграла ключевой раунд в суде: 5 июня судья заявила, что администрация Трампа не доказала право отключить компанию от госконтрактов за отказ…
Комментарии