Создать бота с помощью ИИ: от одного сценария до проверки диалога
Тому, кто собирает Telegram-бота для своей задачи
План одного рабочего диалога и набор проверок до запуска
6 мин
Бот красиво отвечает в пробном чате, но теряет контекст и не передаёт сложный вопрос
Один сценарий проходит от входа до результата, ошибки и передачи человеку
Как собрать первого бота с ИИ: описать маршрут сообщения, хранение состояния, передачу человеку и проверку ошибок.
Желание создать бота с помощью ИИ лучше свести к одному завершённому действию. Например, бот принимает запрос на подбор, задаёт недостающие вопросы, ищет варианты в реальной базе и передаёт менеджеру то, что требует решения человека. Если начать с «универсального помощника», невозможно заранее определить, где ответ правильный. Отдельная статья о создании ИИ‑агента объясняет общую архитектуру. Здесь нужен практический маршрут первого бота и проверка его диалога.
Опишите один разговор как последовательность событий
До кода запишите четыре шага: входное сообщение, уточнение обязательных условий, получение данных и финальное действие. У каждого шага должен быть выход при ошибке. Если человек не указал дату, бот спрашивает дату. Если база не ответила, бот признаёт паузу и предлагает связаться с менеджером. Если запрос касается возврата денег, решение передают человеку согласно правилам компании.
| Событие | Данные для шага | Ответ бота |
|---|---|---|
| Первое сообщение | Текст и идентификатор диалога | Короткое уточнение |
| Условия собраны | Даты, состав, бюджет | Поиск в источнике |
| Результат найден | Проверенные варианты | Выбор с пояснением |
| Источник недоступен | Ошибка запроса | Честное сообщение и передача |
| Нестандартный вопрос | История и причина | Задача сотруднику |
Не собирайте лишние персональные данные для пробного сценария. На раннем этапе используйте вымышленные имена и тестовые запросы. Если бот записывает клиента, определите минимальный состав контакта и согласие на обработку. Ключ Telegram храните отдельно от исходников; если тестовую папку увидит другой человек, он не должен получить управление ботом.
Отделите понимание текста от действия
Модель может извлечь из фразы «хочу отдохнуть в июне с ребёнком» предполагаемые условия, но календарь, остатки и цены она не знает. Сделайте промежуточную структуру с явными полями. Перед действием проверьте обязательные значения обычным кодом. Если поле неизвестно, уточните его в чате. Если поиск вернул пустой список, не заставляйте ИИ выдумывать предложения ради красивого ответа.
Сообщение пользователя
-> извлечь условия разговора
-> проверить обязательные поля
-> спросить недостающее
-> запросить рабочий источник
-> показать подтверждённый результат
-> сохранить следующий шаг или передать человекуТакую схему удобно дать ИИ как задание на реализацию. Попросите его сначала назвать файлы, состояние диалога и места обращения к внешним сервисам. После этого разрешите первый вертикальный путь. На обучении я разбираю, как собирать такие пути последовательно, чтобы каждый этап можно было проверить на настоящем экране.
Где хранить состояние диалога
Бот должен помнить, что уже спросил и на какой ответ ждёт. Для локальной пробы достаточно простой тестовой базы, но для работающего бота нужно устойчивое хранилище: процесс может перезапуститься, а пользователь ответит через час. В записи диалога нужны идентификатор, текущий шаг, проверенные условия и время обновления. Для отложенного возврата храните также время задачи и признак оформленной брони, чтобы бот не написал человеку после покупки.
| Состояние | Что сохранить | Что проверить |
|---|---|---|
| Ждём дату | Уже известный город и состав | Повторный ответ не сбросит разговор |
| Ищем варианты | Полный набор условий | Старый ответ не придёт после новой даты |
| Передано человеку | Причину и владельца задачи | Бот не продолжит спорить |
| Завершено | Выбранный результат | Новое сообщение начнёт нужный путь |
Особенно проверяйте два быстрых сообщения подряд. Пока первый запрос ищет варианты, пользователь может изменить дату. Если старый поиск завершится позже, бот способен отправить результат для прежних условий. Сохраняйте версию состояния и перед отправкой сверяйте её с текущей. Эта ошибка встречается и без ИИ: причина в параллельных задачах, а не в качестве ответа модели.
Как это выглядит в работе
На снимке «AI‑бота турагентства» видны этапы из истории выше. Цена на изображении относится к показанному варианту и моменту проверки; перед новым предложением её надо запросить снова.

В другом моём проекте, «AI‑продавец для косметолога», показана схема передачи сообщения из ВК через amoCRM к помощнику и системе записи. Она иллюстрирует связь внешних источников; отложенный возврат показан только на снимке турагентства.

Как дать ИИ задание на код
Укажите используемый язык, структуру папок и одну проверяемую задачу. Для Python-проекта сначала создайте окружение, установите зависимости в нём и запустите локальную версию. Версии библиотек проверьте в официальной документации на момент работы; не копируйте старые команды установки из чужих статей. Следующий блок показывает безопасный порядок подготовки без реального ключа.
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --upgrade aiogram
python -m pip show aiogramТокен положите в локальный .env, исключённый из Git. В образце настроек оставьте только имя переменной, например TELEGRAM_BOT_TOKEN=ваш_тестовый_токен. Попросите агента не читать и не печатать значение. В примере кода путь от сообщения до ответа должен быть виден по функциям: получение, извлечение условий, проверка, поиск, отправка, запись состояния. Сначала проверьте это с тестовым источником, затем подключайте настоящий.
До подключения рабочего источника пройдите три сообщения:
- задайте полный запрос и проверьте найденный результат;
- пропустите обязательное условие и дождитесь уточнения;
- отправьте вопрос вне сценария и проверьте передачу человеку.
На сервере запускайте службу от отдельного пользователя, не от root. Файл .env с настоящим токеном должен быть доступен только владельцу: права 600. Перед выкладкой проверьте зависимости через pip‑audit, затем перезапустите службу и продолжите тестовый диалог из сохранённого состояния.
Проверку обычного, неполного и ошибочного диалога я подробно разобрал в статье о создании ИИ‑агента. Для бота с отложенным возвратом добавьте отдельную приёмку: перезапустите службу между подбором и назначенным сообщением, проверьте, что разговор сохранился, а после брони сообщение не отправилось. В журнале не должно быть токена и полных личных данных.
Частые вопросы
Нужна ли нейросеть для каждого ответа бота?
Нет. Команды, подтверждения и точные статусы лучше выдавать из кода и базы. Модель полезна для понимания свободной фразы и черновика ответа в разрешённых границах.
Можно ли обойтись памятью процесса?
Для короткого локального опыта можно, но после перезапуска разговор пропадёт. Рабочий сценарий требует устойчивого хранения состояния.
Как предотвратить выдуманную цену?
Запрашивайте цену в подтверждённом источнике и показывайте только найденное значение. Если источник недоступен, бот должен сказать об этом и передать вопрос человеку.
Что проверить при передаче менеджеру?
Убедитесь, что задача создана, в ней есть причина и история, назначен ответственный, а бот прекратил самостоятельные ответы на этот вопрос.
С чего начать без опыта программирования?
С одного разговора и таблицы ожидаемых исходов. На практике его можно превратить в небольшого бота и пройти тесты вручную до добавления следующих функций.
Возьмите один реальный тип обращения и опишите его от сообщения до решения. Если схема помещается на лист и для каждой ошибки есть следующий шаг, задача уже достаточно конкретна для первой сборки.