Блок «Агент»
С помощью блока «Агент» вы можете добавить в процесс AI-агента — умного помощника на основе LLM, который сам принимает решения для достижения цели. Он способен гибко отвечать на вопросы, уточнять информацию и вызывать нужные инструменты, как это сделал бы живой оператор.
Например, если пользователь хочет оформить банковскую карту, агент может уточнить его данные, самостоятельно создать заявку на выпуск карты и сообщить номер заявки пользователю:
Как добавить агента на холст
- Перейдите в проект и на левой панели нажмите , чтобы открыть конструктор процессов.
- В верхнем левом углу холста нажмите — откроется список блоков.
- Перетащите блок Агенты → Агент на холст.
Настройки агента
Чтобы изменить настройки агента:
- Дважды нажмите на блок Агент на холсте.
- В открывшемся окне укажите настройки.
- Нажмите Сохранить.
Основные настройки
В поле Настройки → Основные → LLM выберите существующую интеграцию с LLM или добавьте новую. Если вы создадите новую интеграцию, она станет доступна в разделе Интеграции.
Агент будет использовать выбранную модель для генерации ответов, принятия решений и вызова инструментов.
Для работы агента выбранная модель LLM должна поддерживать function calling. Вы можете найти информацию о поддержке function calling в официальной документации самой модели — например, на сайте OpenAI, Google Gemini и т. д.
Промты
В разделе Настройки → Промты заполните следующие поля:
| Поле | Описание | Пример |
|---|---|---|
| Роль | Роль или персона агента в диалоге. Влияет на тон общения и на то, как агент отвечает на вопросы о себе. | Сотрудник банка |
| Цель | В диалоге агент будет пытаться выполнить указанную цель. | Создай заявку на выдачу банковской карты |
| Инструкции | Представьте, что вы даете задание новому сотруднику. Здесь укажите, как именно он должен выполнить свою работу: с чего начать, какие шаги предпринять и какие инструменты использовать. | Сначала уточни номер телефона. После этого создай заявку c помощью функции Application.create. Отвечай коротко и всегда на русском языке |
| Запрос для агента | Текст, который будет обрабатывать агент. По умолчанию агент берет текст из последнего сообщения пользователя. Заполните это поле вручную:
|
|
Мы рекомендуем подробно указывать роль, цель и инструкции для агента. Так вы сможете получать более предсказуемые и стабильные результаты.
Ответы и диалог
В разделе Настройки → Ответы и диалог вы можете настроить генерацию ответов и режим общения с пользователем.
| Поле | Описание |
|---|---|
| Температура | Регулирует креативность ответов. При высоких значениях результаты будут более творческими и менее предсказуемыми. Не рекомендуем менять параметры Температура и Top P одновременно. |
| Top P | Регулирует разнообразность ответов. При низких значениях нейросеть выбирает из меньшего количества вероятных слов, а при высоких — ответ может получиться разнообразнее. Не рекомендуем менять параметры Температура и Top P одновременно. |
| Presence penalty | Снижает вероятность повторного использования слов в тексте. Помогает сделать ответ разнообразнее по лексике. |
| Frequency penalty | Снижает вероятность слишком частого повторения одних и тех же слов. Уменьшает риск того, что агент будет зацикливаться на одинаковых фразах. |
| Максимальный размер ответа, в токенах | Максимальное количество токенов, которое модель может сгенерировать за одну итерацию. |
| Отправлять ответ пользователю | По умолчанию агент сразу отвечает пользователю в чат. Вы можете отключить эту опцию, чтобы использовать агента как функцию. Подробнее смотрите в статье Работа агента в процессе. Не действует при запуске процесса с помощью workflow-триггеров. |
| Режим диалога | Включите, чтобы агент мог продолжать диалог с пользователем, не переходя к другим блокам процесса. Подробнее смотрите в статье Работа агента в процессе. Не действует при запуске процесса с помощью workflow-триггеров. |
| Структурированный вывод | Агент возвращает ответ строго по заданной JSON-схеме вместо обычного текста. Используйте, чтобы обрабатывать ответ с помощью кода в следующих блоках. Если включен структурированный вывод:
Смотрите пример в статье Работа агента в процессе. |
В агенте может возникнуть ошибка, если LLM не поддерживает выбранные настройки или их значения, например структурированный вывод или заданное значение температуры.
Смотрите документацию провайдера, чтобы узнать об ограничениях вашей модели.
Контроль
На вкладке Контроль вы можете указать лимиты, чтобы агент не зацикливался на вызове инструментов и не обрабатывал запрос слишком долго.
Перед ответом пользователю агент может сделать несколько последовательных шагов с вызовом инструментов.
| Поле | Описание | По умолчанию | Ошибка при превышении |
|---|---|---|---|
| Шагов подряд | Максимальное количество шагов подряд без ответа пользователю. Защищает от зацикливания. Повторные попытки при ошибках не влияют на счетчик — они происходят внутри одного шага. | 5 шагов | Sequential tool calls limit exceeded |
| Инструментов за один шаг | Максимальное количество разных инструментов, которые агент может вызвать за один шаг. Несколько одинаковых инструментов в шаге не увеличивают счетчик. | 10 инструментов | Unique tool calls limit exceeded |
| Общее время работы | Максимальное время работы агента от получения сообщения до ответа пользователю. | 60 секунд | Total response timeout exceeded |
Лимиты действуют до ответа пользователю. После ответа отсчет начинается заново.
При превышении лимита агент прерывает работу с ошибкой. Текст ошибки отправляется пользователю и записывается в логи.
Контекст
На вкладке Контекст вы можете настроить, как агент использует контекст.
| Поле | Описание |
|---|---|
| Учитывать общий контекст |
|
| Сколько последних сообщений помнит агент | Максимальное количество сообщений в диалоге, отправляемых в LLM. Ограничение позволяет ускорить работу агента и уменьшить расход токенов. Если оставить поле пустым или указать 0, в LLM отправляется история сообщений полностью. В этом случае история может превысить контекстное окно LLM, и провайдер вернет ошибку. |
Поведение в процессе
На вкладке Процесс вы можете настроить логику переходов между блоками в процессе.
| Поле | Описание |
|---|---|
| Следующий шаг процесса | Указывает, какой блок будет выполнен после агента. Если при этом включена опция Режим диалога, то переход будет выполнен, только когда агент достигнет цели или пользователь не захочет продолжать диалог с агентом. Подробнее смотрите в статье Работа агента в процессе. |
| Передача управления другим агентам | Выберите других агентов, которым текущий агент сможет передать диалог с пользователем. Текущий агент анализирует цели других агентов и сам решает, кто лучше сможет обработать запрос. Подробнее смотрите в статье Работа агента в процессе. Вы также можете использовать опцию Включая новых созданных агентов, чтобы любые новые агенты также становились доступны для передачи диалога. |
Телефонный агент
Вы можете настроить поведение агента при звонках: как агент должен реагировать на перебивание и заполнять паузы.
На вкладке Настройки включите опцию Телефонный агент. После этого появятся настройки поведения в разговоре.
Эти настройки не влияют на текстовых агентов. Они применяются только при звонках.
Параметры LLM
Лимит ожидания текста от LLM (мс) — максимальное время, которое агент будет ждать ответа от LLM. Если LLM не начала отвечать за это время, дальнейшее поведение зависит от опции Режим диалога:
- Если режим включен, агент будет ждать следующей реплики пользователя.
- Если режим выключен, работа агента завершится, и процесс перейдет к следующему блоку.
Если вы настроили Заполнение пауз, то таймер ожидания ответа запустится только после такой паузы. Например, при включенном заполнении пауз (2000 мс) и лимите (5000 мс):
- Агент подождет 2 секунды.
- Начнет воспроизводить фразу-филлер и параллельно будет ждать ответа LLM в течение 5 секунд.
Суммарно бот будет ждать ответа 7 секунд.
Обработка перебиваний
| Поле | Описание |
|---|---|
| Действие агента | Настройте, что должен сделать агент, если клиент его перебивает:
|
| Что считает перебиванием |
|
| Отложить перебивание (мс) | Агент обязательно проговорит этот отрезок времени, даже если клиент начнет его перебивать. Это полезно, чтобы клиент услышал самую важную часть информации. Отсчитывается от начала ответа агента. Если клиент перебьет агента в это время, агент договорит защищенный фрагмент и только потом отреагирует на реплику клиента. |
Заполнение пауз
Пока LLM генерирует текст, возникает пауза в речи агента. Вы можете настроить заполнение этих пауз, чтобы разговор с агентом звучал более естественно:
-
Добавьте в Список фраз несколько фраз, которые агент будет говорить во время пауз. Примеры:
- «Понял, сейчас поищу информацию»
- «Хорошо, уточняю»
- «Подождите пару секунд, я проверю»
-
Укажите длину паузы в поле Сказать фразу, если молчание длится (мс). Если в начале ответа возникла пауза такой длины, то агент произнесет одну случайную фразу.
предупреждениеМы не рекомендуем указывать значение меньше 500 мс, так как это может привести к нестабильной работе агента.
Подключение инструментов к агенту
Инструмент — функция, которую может вызвать агент для выполнения цели.
Чтобы подключить инструмент:
-
Перетащите любую функцию на холст.
-
Дважды нажмите на блок функции:
- В открывшемся окне включите Режим инструмента.
- У параметров, которые должен заполнить агент, включите опцию .
- Нажмите Сохранить.
-
Соедините блок функции с блоком Агент.
К одному агенту может быть подключено несколько функций. Агент сам решает, когда и какую функцию вызвать.
Подтверждение перед вызовом
Доступно только для движка версии 2.
Если функция проводит платеж, удаляет важные данные или выполняет другое критическое действие, запросите у клиента подтверждение перед ее выполнением:
-
Дважды нажмите на блок функции.
-
На вкладке Поведение включите опцию Запрашивать подтверждение перед вызовом. Настройка отображается, только если для функции включен Режим инструмента.
-
Укажите текст сообщения. Пример:
⚠️ Удалить аккаунт?
Вы не сможете его восстановить, все данные будут также удалены -
Нажмите Сохранить.
Ответ пользователя
Агент интерпретирует ответ пользователя с помощью LLM, поэтому точность распознавания намерений зависит от возможностей выбранной модели. Если ответ положительный, агент вызовет функцию. Если отрицательный — не вызовет и продолжит диалог.
Пример диалога
Пользователь просит удалить аккаунт, агент запрашивает подтверждение:
-
👤 Пользователь:
Хочу удалить свой аккаунт
-
🤖 Ассистент:
⚠️ Удалить аккаунт? Вы не сможете его восстановить, все данные будут также удалены
{
accountId: "12341111"
}к сведениюК сообщению агент прикрепляет аргументы, с которыми будет вызвана функция. В данном случае это ID аккаунта, который будет удален.
-
Дальше пользователь подтверждает или отменяет действие:
- Подтверждение
- Отказ
👤 Пользователь:
Давай
🤖 Ассистент:
Аккаунт удален
👤 Пользователь:
Передумал, не надо
🤖 Ассистент:
Понял, не буду удалять аккаунт. Могу ли я еще чем-то помочь?