ИИ-диалог
Блок ИИ-диалог позволяет боту вести с пользователем многоходовой разговор на естественном языке: задавать вопросы, собирать данные, уточнять детали — и по завершении передавать собранную информацию в следующую ноду.
Как это работает
- Бот входит в блок ИИ-диалога.
- ИИ отправляет первое сообщение согласно системному промпту.
- Пользователь отвечает — ответ передаётся ИИ как новое сообщение.
- ИИ продолжает диалог, накапливая ответы в объекте
data. - Когда все нужные данные собраны, диалог завершается, бот переходит к следующей ноде.
История диалога хранится в базе данных и восстанавливается при повторном входе пользователя в блок.
Настройки блока
Подключение
| Поле | Описание |
|---|---|
| Сервис ИИ | Нейросеть для диалога: OpenAI, Claude, Gemini, Grok, YandexGPT, OpenRouter |
| Подключение | Сохранённый API-ключ из раздела «Интеграции» |
| Модель | Конкретная модель (например, gpt-4o). Можно указать переменную |
Диалог
| Поле | Описание |
|---|---|
| Системный промпт | Инструкция для ИИ: задача, стиль общения, что собирать |
| Разрешённые типы сообщений | Что ИИ может отправлять: текст, inline-кнопки, reply-кнопки, опросы |
| JSON-схема | Структура данных, которые нужно собрать (ключ → тип). ИИ накапливает их в data |
| Префикс переменных результата | Куда сохраняются итоги диалога. При ai_result и поле name → {{ai_result.name}} |
Завершение
| Поле | Описание |
|---|---|
| Перейти к ноде | Нода, куда бот переходит после final_state: true |
Расширенные настройки
| Поле | Описание |
|---|---|
| Лимит сообщений в истории | Сколько последних сообщений передаётся ИИ (по умолчанию 50) |
| Хранить историю (часов) | TTL истории диалога. После паузы дольше этого времени история сбрасывается |
| Макс. токенов ответа | Лимит токенов в одном ответе ИИ (по умолчанию 2048) |
| Шифровать данные | История диалога хранится в БД в зашифрованном виде |
| Стриминговый режим | Ответ ИИ отображается в чате по мере генерации (только для текстовых ответов) |
JSON-схема
Схема определяет, какие данные должен собрать ИИ. Формат — JSON-объект, где ключи — имена полей, значения — типы:
{
"name": "string",
"phone": "string",
"age": "number",
"agree_terms": "boolean"
}
ИИ накапливает значения в объекте data по ходу диалога. Как только все поля заполнены — ИИ завершает диалог и передаёт данные дальше.
После завершения диалога каждое поле доступно как переменная:
{{ai_result.name}}
{{ai_result.phone}}
{{ai_result.age}}
Системный промпт
Промпт — главная инструкция для ИИ. Правила JSON-формата ответа добавляются автоматически — их писать не нужно. Укажите:
- Задачу: что нужно собрать или выяснить
- Стиль общения: тон, язык, формат вопросов
- Дополнительные правила: порядок вопросов, как реагировать на нестандартные ответы
Пример промпта:
Ты помощник по записи на приём. Вежливо собери у пользователя:
— имя
— номер телефона
— удобное время (утро/день/вечер)
Задавай по одному вопросу за раз. Если пользователь даёт неполный ответ — уточни.
Не начинай запись, пока не получишь все три ответа.
В промпте доступны переменные бота: {{user.first_name}}, {{переменная}} и т.д.
Инструменты ИИ
Инструменты позволяют ИИ вызывать команды бота прямо во время диалога — запрашивать данные из API, проверять базу, выполнять вычисления — и использовать результат в ответе.
Принцип работы
- ИИ решает, что ему нужна информация из внешнего источника.
- Отправляет пользователю короткое «загрузочное» сообщение (например, «Ищу данные, подождите...»).
- Вызывает указанную команду, передавая ей параметры через переменные
{{tool_input.*}}. - Команда выполняется, результат сохраняется в переменную.
- ИИ получает результат и продолжает диалог с учётом новой информации.
За один ход диалога ИИ может вызвать до 3 инструментов подряд.
Настройка инструмента
Нажмите кнопку 🛠️ Инструменты в блоке ИИ-диалога, затем Добавить инструмент.
| Поле | Описание |
|---|---|
| Название | Идентификатор в snake_case — ИИ обращается к инструменту по нему (например, get_weather) |
| Описание для ИИ | Объясняет ИИ, что делает инструмент и когда его вызывать |
| Команда | Нода-команда, которую выполняет инструмент |
| Переменная результата | Переменная, из которой читается ответ команды (например, api_response) |
| Параметры | Данные, которые ИИ передаёт в команду |
Параметры инструмента
Параметры — это значения, которые ИИ подставляет в переменные {{tool_input.имя}} внутри блоков связанной команды.
Как настроить:
- Откройте связанную команду и вставьте
{{tool_input.имя_параметра}}в нужные поля (URL, тело запроса, текст, и т.д.):https://api.example.com/weather?city={{tool_input.city}}&units={{tool_input.units}} - Вернитесь в редактор инструмента, выберите эту команду — параметры
cityиunitsпоявятся автоматически. - Укажите описание каждого параметра — ИИ использует его, чтобы понять, какое значение передать:
city→ «Город, для которого запрашивается погода»units→ «Единицы измерения: celsius или fahrenheit»
- Выберите тип (
string/number/boolean) и отметьте обязательные параметры.
Если вы изменили команду после выбора — нажмите кнопку Пересканировать рядом с полем «Команда».
Переменная результата
После выполнения команды ИИ читает одну переменную и передаёт её значение себе как результат инструмента.
Убедитесь, что команда записывает нужный результат в эту переменную. Например, если используется блок API-запроса с сохранением в api_response, укажите api_response в поле «Переменная результата».
Отличие от «Префикса результата» блока диалога: Переменная результата инструмента — это временный ответ конкретной команды, доступный только ИИ внутри текущего хода. Префикс результата блока — это итоговые данные всего диалога, доступные следующим нодам сценария.
Пример: инструмент поиска по каталогу
Команда search_catalog:
- Блок API-запроса:
GET https://mystore.com/api/search?q={{tool_input.query}}&limit={{tool_input.limit}} - Результат сохраняется в переменную
search_result
Инструмент в ИИ-диалоге:
- Название:
search_catalog - Описание: «Поиск товаров в каталоге по текстовому запросу»
- Команда:
search_catalog - Переменная результата:
search_result - Параметры:
query(string, обяз.) — «Поисковый запрос пользователя»limit(number) — «Максимальное количество результатов»
Системный промпт:
Ты помощник интернет-магазина. Помогай пользователям найти товары.
Используй инструмент search_catalog, когда пользователь что-то ищет.
Связи на канвасе
- Фиолетовое ребро → нода после завершения диалога
- Серые пунктирные рёбра 🛠️ → команды, вызываемые инструментами ИИ
Советы
- Один блок = одна задача. Не пытайтесь собрать в одном диалоге слишком много разных данных.
- Описывайте параметры точно. От описания зависит, насколько правильно ИИ заполнит значение.
- Тестируйте инструменты отдельно. Убедитесь, что команда-инструмент корректно работает с тестовыми данными до подключения к ИИ.
- Ограничение в 3 вызова. За один ход ИИ может вызвать не более 3 инструментов подряд — чтобы избежать зацикливания.
- Стриминг несовместим с кнопками и опросами. Если разрешены inline/reply-кнопки или опросы — стриминговый режим отключается автоматически.
