В последние годы развитие искусственного интеллекта всё больше ориентируется на создание гибких и адаптивных систем, способных самостоятельно планировать и распределять задачи. Одним из таких направлений является разработка интеллектуальных агентов, которые могут решать сложные задачи, разбивая их на подзадачи и оркестрируя их выполнение. Важным шагом в данной области стало изучение и применение рабочих процессов агентов, предложенных специалистами Anthropic. Концепции Anthropic по построению эффективных агентов открыли новый взгляд на то, как можно структурировать взаимодействие между моделями и процессами для более продуктивного решения задач разной сложности. В апреле 2025 года на конференции ICLR в Сингапуре внимание многих специалистов привлёк новый фреймворк Google под названием Agent Development Kit (ADK).
Это программное обеспечение ориентировано на создание агентных систем с использованием повторно применяемых компонентов оркестрации. Автор статьи Тимоти Леунг решил проверить — насколько возможно воспроизвести и расширить паттерны Anthropic с помощью Google ADK. Результатом стала концепция DynamicAgent — динамического агента, реализующего рекурсивное планирование с возможностью порождать на лету новые параллельные либо последовательные подзадачи, а затем делегировать их соответствующим субагентам. Anthropic заложили в свои модели несколько ключевых паттернов рабочих процессов агентов. Сюда вошли последовательные цепочки подсказок, маршрутизация задач к специализированным агентам, параллельное выполнение подзадач, а также архитектуры вида «оркестратор-исполнитель» и схемы с итеративной оптимизацией через оценивание результатов.
Основная идея DynamicAgent заключается в том, чтобы внедрить эти паттерны с возможностью не только запуска подзадач последовательно или параллельно, но и делать это рекурсивно — то есть позволять каждому созданному агенту тоже становиться управляющим, если это необходимо. Такой подход позволяет создавать иерархии агентов, обеспечивая глубину анализа до заранее установленного максимума. В своей реализации DynamicAgent работает с параметром глубины (depth), чтобы ограничивать рекурсию и не создавать слишком глубокие деревья задач. При достижении максимальной глубины или если задача признаётся достаточно простой, система использует одиночного LlmAgent — агента, который выполняет задачу напрямую, с применением мощной языковой модели. Если же задача требует распараллеливания, создаётся ParallelAgent, способный одновременного запускать несколько DynamicAgent субагентов, каждый из которых решает свою часть.
Аналогично, для последовательных задач используется SequentialAgent, обеспечивающий строго упорядоченное выполнение подзадач. Google ADK вносит свои особенности в архитектуру такой системы. Так, исходная задача передаётся через пользовательский ввод, а затем передаётся как состояние (state) между агентами с помощью ключей (output_key). Для определения плана работы используется кастомный LlmAgent — «планировщик» с заранее подготовленными инструкциями. В инструкции описаны правила, ограничения и примеры возможных ответов, оформленные как JSON, включающий тип агента и список подзадач.
Благодаря использованию библиотеки Pydantic для валидации и структуры планов достигается высокая надёжность передачи информации между компонентами. Важной особенностью является использование специальных инструкций для каждого вида агента. Планировщик анализирует основную задачу и решает, выполнять её напрямую или разбивать на более мелкие подзадачи. ParallelAgent объединяет результаты параллельных исполнителей с помощью синтезирующего агента, который собирает отдельные ответы в единый итог. SequentialAgent следит за порядком и передаёт результаты между шагами, используя дополнительные инструменты, например, identity агент для копирования конечного результата в общее состояние.
Рекурсивный подход в DynamicAgent позволяет создавать сложные структуры: каждый субагент также является экземпляром DynamicAgent и имеет собственную задачу, историю «предков» и уровень вложенности. Это обеспечивает гибкость и масштабируемость системы, поскольку любой подзадаче можно назначить самостоятельное разбиение и управление. Однако, работая с Google ADK, автор отметил ряд ограничений и особенностей, которые стоит учитывать при построении подобных систем. Во-первых, ADK пока остаётся в активной разработке и содержит некоторые незавершённые внутренние компоненты, а документация не всегда полна. Во-вторых, управление контекстом и содержимым доступных сообщений пока не совсем прозрачно, что осложняет создание глубоких рекурсивных цепочек.
Функция include_contents накладывает ограничения на то, какие данные доступны агентам, но механизм определения релевантного контекста не всегда ясен. Особая техническая сложность связана с механизмом передачи данных через output_key и тем, как эти ключи нужно правильно использовать в инструкциях. В некоторых местах документации предлагается шаблонное заполнение через `` , в других — описание результатов в свободной форме. Такая неоднозначность требует дополнительных экспериментов и опыта для выработки лучших практик. Один из архитектурных дискомфортов — это ограничение на единичного родителя для каждого агента.
То есть у одного субагента не может быть двух родителей в дереве исполнения. Это усложняет объединение управляющей логики DynamicAgent с параллельными или последовательными агентами, которым зачастую нужно совместно владеть своими подчинёнными исполнителями. В итоге пришлось адаптировать дизайн, чтобы обходить данное ограничение. Несмотря на некоторые шероховатости, использование Google ADK с рекурсивным планированием открывает новые возможности для создания интеллектуальных, самоуправляемых агентов. Они способны адаптивно подстраиваться под тип задачи, эффективно распределять нагрузку между параллельными потоками и корректно сохранять последовательность действий, когда это нужно.
Такая архитектура выглядит многообещающей для сложных систем, например, в сфере организации мероприятий, планирования проектов, автоматизированного сопровождения исследований и пр. Иллюстрацией служит пример планирования поездки на выходных в Токио. DynamicAgent разбивает задачу на последовательные этапы: сначала исследование достопримечательностей, затем составление детального маршрута, а после — параллельный анализ рекомендаций по транспорту и ресторанам. Каждая подзадача в свою очередь может быть дополнительно детализирована, если это необходимо, что обеспечивает глубину погружения и качество результатов. Таким образом, совмещение практик Anthropic по эффективному построению агентов с мощью Google ADK и подходом рекурсивного планирования формирует перспективное направление в развитии интеллектуальных систем.
Оно позволяет создавать более масштабируемые, гибкие и адаптивные решения, отвечающие современным требованиям автоматизации и искусственного интеллекта. В будущем можно ожидать, что Google продолжит совершенствовать ADK, улучшая поддержку сложных рабочих процессов, управление состоянием и расширяя возможности планировщиков. Появление интеграций с другими инструментами и выход на продуктивное использование во внутренних проектах Google лишь подкрепляют значимость данного подхода. Для разработчиков и исследователей это сигнал о необходимости внимательно следить за развитием экосистемы, экспериментировать с новыми архитектурными паттернами и развивать собственные интеллектуальные мультиагентные системы. В итоге, расширение рабочих процессов агентов Anthropic с помощью рекурсивного планирования и Google ADK демонстрирует, как современные технологии и идеи могут эффективно комбинироваться для решения сложных задач искусственного интеллекта.
Такой синтез открывает перед нами перспективы создания робастных, саморегулирующихся и многоуровневых агентных систем нового поколения.