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

Работа агента в процессе

В зависимости от вашей задачи, агент может работать в процессе по-разному: быть частью сложной автоматизации, напрямую отвечать пользователю в чате или вести полноценный диалог.

Из этой статьи вы узнаете, как настроить агента для разных задач:

Ответ пользователю

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

Агент с автоматическим ответом

Процесс будет работать так:

подсказка

При этом вы можете получить ответ агента и далее использовать его в процессе с помощью функции Context.getLastFunctionResult().

Диалог с агентом

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

Предположим, у нас есть процесс агента поддержки:

Агент поддержки
  • У агента включена опция Отправлять ответ пользователю.

  • Перед блоком агента выполняется функция Support.createIssue, которая регистрирует новое обращение в поддержку. После блока агента выполняется функция Support.closeIssue, которая закрывает обращение.

    подсказка

    Support.createIssue и Support.closeIssue — это пользовательские функции, которые мы создали заранее для этого примера.

В таком процессе на каждое сообщение пользователя будет создаваться новое обращение. Обращение также будет закрываться после каждого ответа агента.

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

  1. Перейдите в настройки блока Агент.

  2. На вкладке НастройкиГенерация и поведение включите опцию Режим диалога. При этом опция Отправлять ответ пользователю включится автоматически.

  3. Выберите блок, в который должен происходить переход после достижения цели. Это можно сделать двумя способами:

    • В настройках агента на вкладке Процесс выберите блок в поле Следующий шаг процесса.
    • Просто присоедините блок к выходу агента на холсте.
    подсказка

    В нашем примере это уже блок с функцией Support.closeIssue.

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

Агент как функция

Если вы хотите использовать ответ агента в других блоках или как-то дополнительно обрабатывать его, то используйте агента в качестве функции. Для этого:

  1. Отключите настройку Отправлять ответ пользователю. Агент будет генерировать ответ, но не будет отправлять его в чат.
  2. В следующем блоке получите ответ агента с помощью системной функции Context.getLastFunctionResult().

Например, вы можете генерировать тело письма через агента и использовать этот текст в следующем блоке:

  1. Добавьте системную функцию Email.send и соедините с агентом.
  2. У функции в параметре content укажите {{Context.getLastFunctionResult()}}. Тогда в параметр будет подставляться результат последней выполненной функции, в данном случае это будет ответ агента.
Агент и функция

В итоге процесс будет работать так:

Мультиагентные процессы

Преимущества

Преимущества использования нескольких агентов в одном процессе:

  • Разделение ответственности

    Каждый агент выполняет узкую роль — LLM лучше справляется с одной задачей.

  • Контроль данных

    Вы можете контролировать, какие данные получает каждый агент, и не передавать лишнюю информацию.

  • Гибкость и масштабируемость

    Легко добавлять новых агентов для дополнительных задач.

Такой подход облегчает разработку сложных процессов и повышает надежность.

Как настроить процесс

В примере ниже показан процесс с тремя агентами. В этом процессе пользователь может получить консультацию по питанию или попросить составить план тренировок.

Первое сообщение пользователя попадет к агенту-оркестратору, который определит, к какому из двух специализированных агентов (по питанию или по тренировкам) нужно перенаправить запрос. Пользователь сможет продолжить диалог с выбранным агентом или переключиться на другого. Если цель достигнута или пользователь откажется от помощи, процесс завершится — будет выполнена функция Feedback.sendForm.

подсказка

Feedback.sendForm — это пользовательская функция, которую мы создали заранее для этого примера.

Мультиагентный процесс
Отображение связей между агентами

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

Стрелки на холсте показывают, куда перейдет процесс после того, как агент-специалист (например, «Нутрициолог») полностью завершит свою работу. В нашем примере он вернет управление обратно «Помощнику».

Рассмотрим настройки каждого из агентов.

  • Агент «Помощник» — это оркестратор, который перенаправит запрос к нужному агенту.

    • У агента включена опция Режим диалога, чтобы он мог поддерживать диалог с пользователем и процесс не завершался после первого ответа.

    • На вкладке Процесс в секции Передача управления другим агентам выбраны Нутрициолог и Тренер. Это позволяет агенту-оркестратору классифицировать запросы и передавать их нужному агенту.

      Оркестратор учитывает цели агентов, чтобы правильно классифицировать запросы.

      подсказка

      Вы также можете включить опцию Включая новых созданных агентов. Так любые новые агенты в процессе будут автоматически доступны для оркестратора.

  • Агенты «Тренер» и «Нутрициолог» — это специализированные агенты, которые обрабатывают запросы по своим направлениям.

    • У каждого агента включена опция Режим диалога, чтобы они могли поддерживать диалог с пользователем и процесс не завершался после первого ответа.

    • Следующий шаг процесса у каждого агента — это агент оркестратор.

      Если у пользователя нет больше вопросов или вопрос не по теме агента:

      1. Диалог перейдет к агенту-оркестратору.
      2. Оркестратор может передать запросу другому агенту или посчитать, что можно завершить диалог.

Процесс работает так: