Учимся делать мультиагентную систему за 1 вечер

Продолжаем погружаться в мир AI агентов 😎

Учимся делать мультиагентную систему за 1 вечер

Это продолжение курса по созданию агентов. Серия 1.3. (нумерацию упростил). Создаем мультиагентную систему на ADK.

Теория.

Мультиагентная система — это система состоящая из нескольких агентов, и имеющая следующие характеристики:

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

Я также рекомендую почитать пост про лучшие практики по созданию мультиагентной системы от Anthropic.

И также рекомендую освежить (или прочитать если пропустили) пост про то, как делать нельзя, чтобы не слить деньги на ветер при создании мультиагентной системы.

Есть три основных архитектуры мультиагентной системы:

  1. Централизованная — есть агент-координатор, который разбивает запрос юзера на подзадачи и отдает другим агентам-исполнителям
  2. Децентрализованная — агенты действуют независимо и общаются между собой. В таком случае необходимо четко определять правила взаимодействия, чтобы все это не вылилось в хаос
  3. Гибридная — смесь первых двух в разных пропорциях и формах. Например, несколько агентов-координаторов между собой взаимодействуют децентрализованно. Но у каждого есть своя "команда", которую они координируют

Теперь прыгаем в код.

Практика.

По аналогии с ноутбуком из прошлой серии — копируем себе новый Kaggle ноутбук. И галочку напротив GOOGLE_API_KEY в Secretes нужно снова включить.

Секция 1 ноутбука просто сетапит его по аналогии с первой серией.

В секции 2 начинается мякотка. Сначала мы сделаем централизованную систему из двух агентов: рисерчера (он будет гуглить в интернете) и суммаризатора.

  1. Создаем агента рисерчера. Процесс идентичен тому, как мы создавали агента в предыдущей серии. Но есть нюанс. Теперь мы прописываем "output_key". Этот ключ поможет нам дальше найти результаты работы этого агента другим агентам в рамках сессии взаимодействия
  2. Дальше создается агент суммаризатор. Точно также, только с другой инструкцией
  3. Далее нам нужен агент-координатор, чтобы управлять двумя этими красавцами. Создаем опять агента. Но в инструкции мы прописываем ему пошаговый процесс с вызовом других агентов: вызови рисерчера, дальше вызови суммаризатора, верни саммари от него юзеру". И в тулы этого агента мы ставим других агентов вот таким образом: tools=[AgentTool(research_agent), AgentTool(summarizer_agent)]. Обратите внимание, что координатор через такое указание тулов получит доступ к имени и описанию, которые мы написали для каждого агента в пунктах 1 и 2. Поэтому от качества нейминга и описания напрямую зависит, как хорошо координатор будет их вызывать. Не пожалейте времени, чтобы качественно тут все описать.
  4. Запускаем любой запрос — получаем ответ от нашего координатора

Ура, вы только что сделали простейшую мультиагентную систему!

Дальше уже для самостоятельного изучения прокликайте ноутбук до конца.

Секция 3 расскажет о Sequential Workflow — иногда вы не хотите полагаться на ризонинг агента-координатора. Вам нужно просто последовательно вызвать ряд субагентов (это называется Pipeline). В ADK это решается через SequentialAgent

Секция 4 расскажет про Parallel Workflows — когда агентам нет смысла делать работу последовательно, вы можете запускать их работать одновременно, а в конце суммаризовать их результаты. Для этого в ADK есть ParallelAgent

Секция 5 расскажет про Loop Workflows — используется, когда нужно добиться вполне конкретного результата. И до его достижения останавливать работу агентов вы не хотите. Здесь будет двухуровневая обертка через LoopAgent, который сам упакован в SequentialAgent. Хороший брейнтизер!

That's all guys! Stay tuned — в следующий разберем детальнее тулы и MCP (уж сколько раз он вам точно уши мозолил!)

Подписывайтесь на Telegram Заместители. Там будем дальше разбирать процесс создания AI агентов и систем на базе

Начать дискуссию