Документация › Старт › Как бот думает

Как бот думает

Обновлено 24 октября 2026 г.

Понять за 8 минут, что происходит между сообщением клиента и ответом бота: тогда станет ясно, почему бот отвечает так, и где это чинить.

⏱ 8 мин · 👤 для всех · 🟢 live

За 30 секунд:
  • На каждое сообщение бот собирает: твой промпт (правила) + факты о бизнесе (поле «Информация о компании» и база знаний) + функции (действия).
  • Дальше он решает: просто ответить словами или вызвать функцию (записать, посчитать, выставить счёт).
  • Бот не помнит ничего, кроме истории текущего диалога. Что не написано в промпте/знаниях: он не знает. Исключение: ссылку, которую прислал клиент, бот открывает и читает.
  • После ответа платформа сверяет слова бота с его действиями: написал «выставил счёт», а функцию не вызвал, получает круг на исправление.
  • Одинаково работает в тест-чате, WhatsApp, Telegram и Instagram.

Что происходит на каждое сообщение

Когда клиент пишет, бот проходит такой путь (обычно ответ приходит через 10-40 секунд):

Сообщение клиента
      │
      ▼
0. Сработало правило с точным ответом? → ответ уходит без модели
      │ нет
      ▼
1. Собрать контекст:  системный промпт (характер + правила)
                    + история этого диалога
                    + подходящие куски базы знаний (RAG)
                    + текст страниц по ссылкам из сообщения клиента
                    + меню включённых функций
      │
      ▼
2. Решить:  «ответить словами»  ИЛИ  «вызвать функцию»
      │                                  │
      │                                  ▼
      │                         выполнить действие
      │                         (календарь / таблица / счёт …)
      │                                  │
      │                                  ▼
      │                         получить результат, подумать снова
      ▼                                  │
3. Сформулировать ответ клиенту ◄────────┘
      │
      ▼
4. Сверить слова с делами: «выставил», «записал», «передал»
   без вызова функции → один круг на исправление
      │
      ▼
Ответ уходит в WhatsApp / Telegram / Instagram

Шаг 0 это правила: точный ответ по ключевому слову уходит сразу и не стоит модели. Правило может и не отвечать само, а подсказать боту, что сказать на этот ход.

Ссылки на шаге 1. Клиент прислал ссылку на сайт, Instagram или объявление: бот открывает до двух ссылок из сообщения, читает заголовок, описание и начало текста страницы и отвечает по сути, а не гадает по словам в адресе. На одну ссылку не больше восьми секунд, закрытые и внутренние адреса не открываются; не открылось, бот знает причину и не выдумывает, что там было. Выключается в настройках бота: «Расширенные настройки» → «Читать ссылки из сообщений».

Проверка на шаге 4. Модель иногда пишет «счёт отправил» или «передала менеджеру», не вызвав функцию. Платформа после каждого ответа сверяет такие заявления (на русском, казахском и английском) с журналом вызовов этого хода. Расхождение есть, бот получает один круг на исправление: вызвать функцию или ответить честно. Не исправился, в рабочем чате клиенту уходит нейтральный ответ, а диалог получает пометку «ответьте руками» и запись action_claim_unbacked в логах. В тест-чате бот ещё и прямо говорит, что здесь счёт, бронь или сделка не выставляются, и что получил бы клиент в рабочем чате.

Ключевое: различать два вида знаний. Общие вещи о мире бот уже знает из обучения, что такое кариес, как вежливо общаться, базовую логику и счёт: это объяснять не нужно. А вот факты про твой бизнес, услуги, цены, расписание, адрес, он не знает, пока ты не дашь их в промпте, поле «Информация о компании» или базе знаний. Плюс бот не ищет в интернете и не знает, что происходит прямо сейчас за пределами диалога. Правило простое: общему учить не надо: давай ему только то, что специфично для тебя.

Источники, из которых бот берёт ответ

ИсточникЧто этоКогда использовать
🧠 Системный промптПоведение: характер, тон, правила, что запрещеноВсё «как себя вести» → Промпт
🏢 Информация о компанииКороткие базовые факты: услуги, цены, адрес, часы, вшиваются в каждый ответ целикомКомпактные факты «о тебе» → Промпт
📚 База знаний (RAG)Объёмные/меняющиеся документы: большой прайс, условия, FAQ, подмешиваются по кускамМного фактов / документы → База знаний
🛠️ ФункцииРеальные действия во внешнем миреЗаписать, посчитать, оплатить → Функции

💡 Правило большого пальца: как общаться в промпт; коротко о бизнесе в «Информацию о компании»; много фактов / документы в базу знаний; что делать в функции.

Что значит «бот вызвал функцию»

Сам по себе ИИ умеет только писать текст. Функции дают ему «руки». Ты не прописываешь сценарий «если X то Y», ты описываешь каждую функцию словами, и бот сам решает в нужный момент её вызвать.

📌 Пример. Подключены функции «проверить свободное время» и «записать клиента». Клиент: «хочу завтра после обеда». Бот сам: проверяет слоты → предлагает время → после согласия записывает → подтверждает. Никто этот сценарий по шагам не программировал.

За один ход бот может вызвать несколько функций подряд (проверил → записал), но не больше 15 раз. Подробно в гайде по функциям.

Решение «вызвать функцию» бот принимает по смыслу сообщения, а не по языку и точным словам: «напишу в четверг», «кейін жазамын» и «I'll text you later» одинаково ставят напоминания на паузу. У необратимых действий (счёт, запись, подтверждение оплаты) можно поставить предохранитель: платформа сама проверит факт в диалоге (есть ли чек, телефон, прошла ли оплата) и не даст функции сработать раньше времени.

Где бот работает одинаково

Один и тот же «мозг» (промпт, факты, функции, модель) отвечает:

  1. в тестовом чате кабинета (песочница: без реальных клиентов, но ответы бота списываются с баланса проекта, как обычные) → Тест-чат;
  2. в боевых WhatsApp и Instagram → Подключить WhatsApp · Подключить Instagram;
  3. в боевом Telegram → Подключить Telegram;
  4. в ответе после оплаты: клиент оплатил счёт Kaspi, и бот сам продолжает разговор.

Два места устроены иначе. Дожимы бот пишет по тому же промпту и той же переписке, но функций в них не вызывает: дожим это только текст (Дожимы). Чат на главной странице сайта это наш консультант DOS AI, а не твой бот: твои настройки на него не влияют.

⚠️ Важно. Если что-то работает в тест-чате, так же сработает в бою. Поэтому всегда проверяй изменения в тест-чате перед тем, как выпускать к клиентам.

Почему бот иногда «тупит», и где чинить

СимптомОбычно причинаКуда смотреть
Отвечает не по делу / выдумываетФакта нет в промпте/знаниях, бот «додумал»Добавь факт в Базу знаний
Не записывает / не считаетФункция выключена или плохое описаниеФункции
Отвечает слишком формально/сухоТон не задан в промптеПромпт
Молчит совсемКончился баланс / триалБот не отвечает
Отвечает общими фразами, «уточню у администратора»Промпт пустой«Составить за меня»
Говорит «записал», а записи нетФункция не вызвана: плохое описание или она выключена; платформа уже дала боту круг на исправление и пометила диалогФункции · Логи
Один конкретный ответ не нравитсяПравило не записаноВ тест-чате ссылка «Поправить ответ словами» под ответом: фраза встанет правилом в промпт → Тест-чат

💡 Запомни: плохой ответ бота это почти всегда не «глупый ИИ», а неполный промпт или знания. Бот честно работает с тем, что ты ему дал. Что именно он делал на каждом шаге, видно в логах событий. Какие защиты от выдуманных ответов стоят у всех ботов и как поправить ошибку в живом диалоге: Почему бот не выдумывает.


Под капотом (для разработчиков)

  • Каждый ответ, non-streaming вызов модели (в DOS AI streaming запрещён: ломает авторитетный подсчёт токенов, refund при обрывах, round-trip функций). «Постепенный» эффект печати: клиентский, через паузы между частями ответа.
  • Функции отдаются модели как OpenAI tools; вызов функции → выполнение → результат возвращается модели → она формулирует финальный текст (tool-call round-trip).
  • База знаний подмешивается через RAG (семантический поиск релевантных кусков), а не «весь документ в каждый запрос».
  • Ответ модели, структурированный JSON (текст для клиента + служебные поля: статус лида, стадия диалога, флаги). Формат в статье JSON-ответ бота.
  • Тест-чат, вебхуки каналов (WhatsApp, Instagram, Telegram) и ответ после оплаты зовут один пайплайн (executeAIPipeline), поэтому поведение одинаковое. Дожим зовёт модель отдельным вызовом без функций (drip-followup.ts), демо-чат сайта живёт своим маршрутом (/api/demo-chat). Память диалога = история сообщений из БД, а не «глобальная память».
  • Ссылки из сообщения читаются до хода модели (inbound-links.ts: до 2 ссылок, 8 секунд, 3 переадресации, защита от внутренних адресов), событие inbound_link_read. Сторож заявлений (action-claim-guard.ts) сверяет глаголы действия в ответе с журналом вызовов хода: один исправляющий круг с функциями, второй отказ в бою даёт нейтральную строку и пометку «ответьте руками», событие action_claim_unbacked. В тест-чате функции кассы, CRM, iiko, АльфаCRM и лид-функции отвечают холостым результатом с performed: false и словами для собеседника.
  • Повторный текст промпта и информации о компании кешируется у OpenAI на каждом ходу: второй и следующий ответы в том же проекте обходятся дешевле первого.

Простыми словами

Представь бота как нового толкового сотрудника: общие вещи (язык, вежливость, что такое кариес) он уже знает, а вот про твой бизнес, только то, что ты ему рассказал. Перед каждым ответом он быстро «вспоминает»: твои инструкции (как себя вести), справочник про твой бизнес (цены, услуги, адрес) и список действий, которые ему разрешено делать (записать, посчитать, выставить счёт). Потом он либо отвечает словами, либо делает действие, и пишет клиенту результат.

Поэтому если бот ответил неправильно, почти всегда дело не в том, что «ИИ тупой», а в том, что ему чего-то не рассказали. Добавишь нужный факт или правило, и он сразу станет умнее. И всегда сначала проверяй бота в тестовом чате: там он думает точно так же, как в реальном WhatsApp, но без последствий.


Дальше: → Быстрый старт: первый бот за 30 минут
Связано: Системный промпт · Функции · База знаний · Тест-чат
Не получилось? → Бот не отвечает