Перейти к основному содержимому

🧠 AI-блоки в сценариях

В конструкторе сценариев AI доступен как отдельный пакет блоков — «ИИ». Каждый блок берёт данные из полей и переменных сценария (синтаксис {{…}}), выполняет AI-операцию и сохраняет результат в переменную для следующих шагов.

Всего таких блоков 12: девять работают в сценариях любого типа, три — только в сценариях типа «Поддержка», потому что им нужен текущий чат. В палитре все они собраны в одну карточку «ИИ-блок»; конкретный блок выбирается в панели свойств в поле «Режим» (см. Блоки). Отдельно от них стоит блок «AI-агент»: он не делает один вызов модели, а ведёт разговор целиком — см. Агентский режим.

Кому доступно. Добавлять и настраивать блоки может участник проекта с ролью «Редактор» и выше.

Выбор модели​

Модель выбирается не по имени, а тиром — поле «Модель» со значениями «Быстрая», «Умная», «Продвинутая» и подписью «Скорость vs качество ответа». У блока «AI-агент» те же тиры подписаны «Быстрая», «Базовая», «Точная». Какая именно нейросеть стоит за тиром, решает платформа; она может смениться без изменений в вашем сценарии. Подробнее — AI-возможности.

Поле есть не у всех блоков. Там, где его нет, тир зафиксирован разработчиками и изменить его нельзя.

БлокПоле «Модель»Значение по умолчанию
ИИ — генерацияестьУмная
ИИ — JSON по схемеестьУмная
ИИ — извлечение данныхестьУмная
ИИ — классификацияестьБыстрая
ИИ — тональностьестьБыстрая
ИИ — язык текстаестьБыстрая
ИИ — переводнет—
ИИ — модерациянет—
ИИ — выбор вариантанет—
ИИ — ответ по базенет—
ИИ — сводка чатанет—
ИИ — классификация чатанет—

Температуры у AI-блоков нет — она настраивается только у блока «AI-агент».

Порог уверенности и ветка «Не уверена»​

У блоков «ИИ — классификация», «ИИ — тональность», «ИИ — ответ по базе» и «ИИ — классификация чата» есть поле «Порог уверенности» — число от 0 до 1, по умолчанию 0.6. Подпись поля объясняет логику: если уверенность модели ниже порога — сценарий уходит в ветку «Не уверена».

У таких блоков на канве появляется дополнительный выход. Если модель не уверена в ответе, сценарий уходит именно туда — это штатный путь эскалации на человека вместо неверного автоответа. Типовая схема: основной выход ведёт в автоматический ответ, выход «Не уверена» — в передачу чата сотруднику или в уведомление.

Уверенность дополнительно записывается в переменную <имя>_confidence, где <имя> — имя переменной результата. Её можно проверить условием и построить более сложную логику.

Как подбирать порог

Чем выше порог, тем чаще сценарий будет уходить к человеку и тем реже ошибаться. Начните со значения по умолчанию и корректируйте, глядя на реальные запуски.

Ветка «Ошибка»​

У всех AI-блоков, кроме «ИИ — модерация», есть выход «Ошибка». Туда блок уходит, если AI-сервис недоступен или ответ не удалось разобрать, а причина записывается в error_message; переменная результата при этом остаётся пустой.

Разводите «Ошибку»

Если выход «Ошибка» не разведён, а блок ушёл в него, запуск завершится с ошибкой — причина будет видна в шаге трассы. Для важной маршрутизации разводите этот выход, например, на передачу диалога сотруднику.

Системный промпт​

У блоков «ИИ — генерация», «ИИ — JSON по схеме» и «ИИ — ответ по базе» есть необязательное поле «Системный промпт»: в нём задают роль, тон и правила — например, «Отвечай как поддержка Fixorix: профессионально, но тепло, не обещай возвраты и сроки». Поле поддерживает шаблоны {{…}}. Если оставить его пустым, блок работает без системной инструкции.

Для «ИИ — ответ по базе» этот текст подмешивается поверх базовых правил ответа по базе: правила безопасности и запрет выдумывать факты остаются в силе. Пустое поле — стандартная персона.

Блоки для сценариев любого типа​

ИИ — генерация​

Генерирует свободный текст по описанию.

ПолеНазначение
Шаблон промптаИнструкция для модели, поддерживает переменные {{…}}
Сохранить ответ вИмя переменной для результата
МодельТир (по умолчанию «Умная»)
Системный промптРоль, тон и правила (необязательно)

Выходы: «Далее» и «Ошибка» (AI-сервис не ответил; заполняется error_message). Пример: персональное приветствие по имени клиента.

ИИ — JSON по схеме​

Генерирует структурированный JSON заданного вида — когда результат нужен не текстом, а объектом с полями.

ПолеНазначение
Шаблон промптаЧто нужно сформировать, поддерживает переменные
JSON-схема ответаСтруктура ожидаемого JSON, например {"name": "string"}
Сохранить результат вИмя переменной; в неё кладётся объект
МодельТир (по умолчанию «Умная»)
Системный промптРоль, тон и правила, с которыми модель заполняет схему (необязательно)

Выходы: «Далее» и «Ошибка» (сервис недоступен или ответ не соответствует схеме). Пример: собрать из свободного текста карточку заявки с полями «тема», «срочность», «контакт».

ИИ — классификация​

Относит значение переменной к одной из заданных категорий.

ПолеНазначение
Что классифицируемИмя переменной, значение которой разбираем
КатегорииСписок названий категорий — от 2 до 30
Сохранить категорию вИмя переменной для результата
МодельТир (по умолчанию «Быстрая»)
Порог уверенности0–1, по умолчанию 0.6

Выходы: «Далее», «Не уверена» и «Ошибка». Дополнительно заполняется <имя>_confidence. Если AI-сервис ответил ошибкой, блок уходит в «Ошибку» и заполняет error_message; если этот выход не разведён, запуск завершится с ошибкой.

Пример: отнести обращение к «оплата / доставка / возврат».

ИИ — извлечение данных​

Достаёт из текста структурированные данные по JSON-схеме.

ПолеНазначение
Что обрабатываемИмя переменной с исходным текстом
JSON-схемаЧто именно нужно извлечь
Сохранить результат вИмя переменной для результата
МодельТир (по умолчанию «Умная»)

Выходы: «Далее» и «Ошибка». Пример: вытащить номер заказа и email из сообщения клиента.

ИИ — выбор варианта​

Ранжирует список кандидатов и выбирает лучшие — модель сравнивает их между собой по заданному критерию.

ПолеНазначение
Критерий выбораПо чему выбираем, поддерживает переменные
Список кандидатовИмя переменной со списком вариантов
Сохранить результат вИмя переменной для результата
Сколько выбратьОт 1 до 50, по умолчанию 1
ЯзыкКод языка или auto

Выходы: «Далее», «Пусто» (ничего не подошло или список кандидатов пуст — тогда модель вообще не вызывается) и «Ошибка». В переменную кладётся список объектов с полями id, content, score и metadata, отсортированный по убыванию релевантности; краткое обоснование выбора — в <имя>_rationale.

Пример: выбрать из списка статей ту, что лучше отвечает на вопрос клиента.

ИИ — перевод​

Переводит текст на указанный язык. Подробное описание и примеры: Перевод текста.

ПолеНазначение
ТекстЧто переводим, поддерживает переменные
Целевой языкКод языка: 2–3 строчные буквы, опционально регион (en, pt-BR)
Исходный языкКод языка или auto (по умолчанию auto)
Сохранить перевод вИмя переменной для результата

Поля «Модель» нет. Выходы: «Далее» и «Ошибка». Определённый исходный язык записывается в <имя>_detected.

ИИ — тональность​

Определяет эмоциональную окраску текста и сам маршрутизирует сценарий.

ПолеНазначение
ТекстЧто оцениваем, поддерживает переменные
Сохранить тональность вИмя переменной (необязательно)
МодельТир (по умолчанию «Быстрая»)
Порог уверенности0–1, по умолчанию 0.6

Выходов пять: «Позитивный», «Нейтральный», «Негативный», «Не уверена» и «Ошибка». Если AI-сервис недоступен, блок уходит в «Ошибку» и заполняет error_message.

Пример: негативные обращения сразу переводить на сотрудника, остальные вести по автосценарию.

ИИ — модерация​

Проверяет текст на запрещённый контент.

ПолеНазначение
ТекстЧто проверяем, поддерживает переменные
Сохранить вердикт вИмя переменной (необязательно)

Поля «Модель» нет — проверка всегда идёт на быстром тире. Выходов два: «Безопасно» и «Заблокировано». В переменную кладётся объект с полями flagged (нарушение найдено или нет), severity (насколько серьёзное), categories (какие категории сработали) и rationale (пояснение). Текст считается нарушением, если хотя бы одна категория набрала 0,5 и выше.

Блок «падает закрыто»

Если проверить текст не удалось — сервис недоступен, запрос упал, — блок уходит по ветке «Заблокировано», а не пропускает сообщение дальше; так же он поступает с пустым текстом. Это сделано намеренно: при сбое безопаснее задержать сомнительный текст, чем пропустить. Разводите эту ветку так, чтобы она была безопасна и для ложного срабатывания: например, на передачу диалога сотруднику.

Этой же проверкой пользуется блок «AI-агент», когда включено «Проверять ответы агента модерацией».

ИИ — язык текста​

Определяет язык текста и сохраняет его код.

ПолеНазначение
ТекстЧто анализируем, поддерживает переменные
Сохранить код языка вИмя переменной для кода языка
МодельТир (по умолчанию «Быстрая»)

Выходы: «Далее» и «Ошибка». Удобно ставить перед блоком «ИИ — перевод», чтобы переводить только чужие языки.

Блоки только для сценариев «Поддержка»​

Этим блокам нужен текущий чат, поэтому в палитре они появляются только в сценариях типа «Поддержка».

ИИ — ответ по базе​

Готовит обоснованный ответ по базе знаний проекта с учётом истории текущего чата (RAG). Возвращает не список статей, а готовый текст ответа.

ПолеНазначение
ЗапросВопрос для поиска по базе, поддерживает переменные
Сохранить ответ вИмя переменной для текста ответа
Кол-во результатовСколько релевантных фрагментов учесть: 1–50, по умолчанию 5
Сообщений из историиСколько последних сообщений чата видит модель: 1–200, по умолчанию 20. Чем больше, тем выше шанс, что ответ уедет на прошлую тему
Порог релевантностиМинимальная релевантность документа, чтобы он вообще попал в ответ (0–1); пусто — значение сервиса
ЯзыкКод языка или auto
Порог уверенности0–1, по умолчанию 0.6. Влияет только на выбор выхода после ответа, а не на поиск
Системный промптТон и роль поверх базовых правил ответа по базе (необязательно)

Поля «Модель» нет. Выходов четыре:

  • «Далее» — ответ получен, уверенность не ниже порога;
  • «Не уверена» — ответ получен, но уверенность ниже порога (например, подходящих документов в базе не нашлось и модель отвечала по переписке);
  • «Не найдено» — в базе нет обоснованного ответа: сервис вернул пустой текст;
  • «Ошибка» — чат не определился или запрос к сервису не удался; причина в error_message, переменная результата остаётся пустой.

Уверенность записывается в <имя>_confidence. Наполнение базы знаний: База знаний.

ИИ — сводка чата​

Делает краткую сводку по всей переписке текущего чата и кладёт её в переменную.

ПолеНазначение
Сохранить сводку вИмя переменной для текста сводки
ЯзыкКод языка или auto

Выходы: «Далее» и «Ошибка». Если чат не определился или сервис ответил ошибкой, блок уходит в «Ошибку» и заполняет error_message.

Пример: перед созданием тикета положить сводку диалога в описание.

ИИ — классификация чата​

Определяет намерение (интент) и тональность текущего чата по его истории.

ПолеНазначение
Сохранить результат вИмя переменной; в неё кладётся объект целиком
Порог уверенности0–1, по умолчанию 0.6

Выходы: «Далее», «Не уверена» и «Ошибка» (чат не определился или классификация не удалась). Дополнительно заполняются <имя>_intent (код намерения), <имя>_sentiment (тональность) и <имя>_confidence. Для маршрутизации удобно поставить следом блок «Условие» или «Переключатель» по <имя>_intent.

Ограничения​

  • Не больше 200 AI-вызовов на один запуск сценария. Счётчик общий на весь запуск: в него входят AI-блоки (в том числе внутри циклов), вызовы навыков AI-агента и его поиск по базе знаний. Ходы самого агента в счётчик не входят — их ограничивают собственные лимиты блока «AI-агент». Между ожиданиями ответа клиента счётчик не сбрасывается. При превышении запуск завершается с ошибкой.
  • Результат зависит от качества входных данных, формулировки промпта и выбранного тира.
  • Блоки «ИИ — ответ по базе», «ИИ — сводка чата» и «ИИ — классификация чата» доступны только в сценариях типа «Поддержка».
  • Неразведённый выход «Ошибка» при сбое AI-сервиса завершает запуск с ошибкой.
  • AI-ответ — это данные, а не решение: для ответственных шагов оставляйте ветку эскалации на человека.

→ AI-возможности · Агентский режим · Создание и изменение сценария через ИИ · Улучшение промпта