Azure: как выбрать между навыками и сабагентами в ИИ-системах
Когда разработчики создают сложные ИИ-системы на базе больших языковых моделей, они часто задаются вопросом: что использовать — навыки или субагентов? Ответ зависит от нескольких факторов, включая переиспользуемость, сложность задачи и долгосрочную поддерживаемость. Инженер Azure Кишорекумар Паттаби

Когда разработчики создают сложные ИИ-системы на базе больших языковых моделей, они часто задаются вопросом: что использовать — навыки или субагентов? Ответ зависит от нескольких факторов, включая переиспользуемость, сложность задачи и долгосрочную поддерживаемость. Инженер Azure Кишорекумар Паттабираман в недавней статье в блоге Azure Architecture предлагает практические критерии для выбора, подчеркивая важность простоты и модульности. Эти рекомендации особенно актуальны для команд, работающих с агентными фреймворками вроде Semantic Kernel, AutoGen и LangGraph, где правильный выбор архитектурного элемента напрямую влияет на производительность и стоимость системы.
Что такое навыки и субагенты в контексте ИИ-агентов
Прежде чем углубляться в критерии выбора, важно четко определить, что представляют собой навыки и субагенты. Навыки (skills) — это изолированные функции, которые агент может вызывать для выполнения конкретного действия. Они подобны инструментам в арсенале агента: каждое действие атомарно и не зависит от других. Например, навык может отправлять электронное письмо, выполнять SQL-запрос или получать данные о погоде. Навыки легко комбинировать, они переиспользуемы в разных сценариях и контекстах.
Субагенты (sub-agents) — это автономные агенты, которые работают внутри основного агента. У каждого субагента есть собственная цель, и он может использовать навыки для ее достижения. Субагенты позволяют разбивать сложные процессы на управляемые подзадачи, каждая из которых выполняется специализированным агентом. Например, в системе обработки заказов субагент может отвечать за всю цепочку: проверку наличия товара, обработку платежа и уведомление клиента. В отличие от навыков, субагенты более самостоятельны и могут принимать решения в процессе выполнения задачи.
Критерии выбора: когда использовать навыки, а когда субагентов
Паттабираман выделяет несколько ключевых факторов, которые следует учитывать при проектировании ИИ-систем. Основной вопрос — насколько действие или функция является базовым и переиспользуемым. Если это простая операция, которая может понадобиться в разных контекстах, — например, отправка электронной почты или выполнение SQL-запроса, — то её логично оформить как навык. Навыки в агентных фреймворках — это изолированные функции, которые агент может вызывать по мере необходимости, и они легко комбинируются.
С другой стороны, если задача требует многошагового планирования, взаимодействия с внешними сервисами и принятия решений в процессе выполнения, то лучше создать субагента. Субагенты — это автономные агенты, которые работают в рамках основного агента, имеют собственную цель и могут использовать навыки для её достижения. Они позволяют разбить сложный процесс на управляемые подзадачи, каждая из которых выполняется специализированным агентом.
Паттабираман также обращает внимание на простоту: не стоит создавать субагента, если задача решается одним навыком. Излишняя сложность усложняет отладку и поддержку системы. Долгосрочная поддерживаемость — ещё один важный аспект: навыки проще тестировать и обновлять, чем субагентов, поэтому для стабильных, часто используемых операций предпочтительнее навыки.
Как определить, нужен ли субагент для вашей задачи?
Один из самых частых вопросов, который возникает у разработчиков: как понять, что задача достаточно сложна для субагента? Паттабираман предлагает начать с анализа задачи: является ли она атомарной и независимой? Если да — навык. Если задача требует последовательности шагов, возможно, с ветвлениями и условиями, то субагент. Например, если вам нужно просто получить информацию о товаре, это навык. Но если вам нужно обработать заказ, включая проверку наличия, расчет стоимости, оформление доставки и отправку уведомления, — это уже многошаговый процесс, который лучше делегировать субагенту.
Дополнительный критерий — переиспользуемость. Если функция будет использоваться в разных контекстах, то навык — лучший выбор, так как его можно легко подключить к разным агентам. Субагенты же, как правило, привязаны к конкретному сценарию и менее переиспользуемы. Например, навык отправки email пригодится в любом агенте, а субагент, который обрабатывает заказы, вряд ли понадобится для других задач.
Также стоит помнить о производительности: субагенты добавляют дополнительные вызовы к модели, что увеличивает задержку и стоимость. Поэтому для простых операций лучше обходиться навыками, а субагентов приберечь для действительно сложных сценариев. В облачных системах, где каждый вызов API оплачивается, это особенно важно.
Предыстория и контекст: почему эта тема стала актуальной
В последние годы наблюдается взрывной рост интереса к агентным архитектурам в ИИ. Фреймворки вроде Semantic Kernel, AutoGen, LangGraph и другие предоставляют разработчикам инструменты для создания систем, где агенты могут планировать, использовать инструменты и взаимодействовать друг с другом. Однако с ростом сложности возникают и проблемы: как организовать код, чтобы он был поддерживаемым и масштабируемым?
Рекомендации Azure — это попытка дать практические ориентиры. Они основаны на опыте Microsoft в создании корпоративных ИИ-решений. В частности, в Azure AI Foundry и Azure Machine Learning команды используют агентные паттерны для автоматизации рабочих процессов, и накопленный опыт позволил сформулировать эти принципы.
Как применить эти рекомендации на практике?
Главный вопрос, который возникает у разработчиков: как конкретно решить, что использовать — навык или субагента? Паттабираман предлагает начать с анализа задачи: является ли она атомарной и независимой? Если да — навык. Если задача требует последовательности шагов, возможно, с ветвлениями и условиями, то субагент.
Важно также учитывать, будет ли функция использоваться в других контекстах. Если да, то навык — лучший выбор, так как его можно легко подключить к разным агентам. Субагенты же, как правило, привязаны к конкретному сценарию и менее переиспользуемы.
Также стоит помнить о производительности: субагенты добавляют дополнительные вызовы к модели, что увеличивает задержку и стоимость. Поэтому для простых операций лучше обходиться навыками, а субагентов приберечь для действительно сложных сценариев.
Технические детали: как устроены навыки и субагенты в Azure
В экосистеме Azure навыки реализуются через так называемые плагины в Semantic Kernel. Плагин — это набор функций, которые агент может вызвать. Функции могут быть как простыми (например, получить текущую погоду), так и более сложными, но они всегда выполняют одно действие. Субагенты в Azure реализуются через агентные группы или процессы, где каждый агент имеет свою роль и может использовать навыки.
Паттабираман приводит пример: в системе обработки заказов навык может проверять наличие товара на складе, а субагент — обрабатывать весь заказ, включая проверку, оплату и уведомление клиента. Такой подход позволяет изолировать логику и упрощает тестирование.
Кого затронут эти рекомендации
Рекомендации Azure будут полезны всем, кто разрабатывает ИИ-агентов: от инженеров, создающих внутренние корпоративные решения, до стартапов, строящих пользовательские продукты. Особенно актуально это для разработчиков на платформе Microsoft, но принципы универсальны и применимы в любых агентных фреймворках.
В России и СНГ также растёт интерес к агентным ИИ-системам, особенно в банковской сфере, ритейле и логистике. Многие компании экспериментируют с автоматизацией клиентской поддержки и внутренних процессов. Применение этих критериев поможет избежать типичных ошибок — излишней сложности и плохой поддерживаемости.
Что будет дальше
Можно ожидать, что Microsoft продолжит развивать инструменты для работы с агентами, упрощая создание и оркестрацию субагентов. Возможно, появятся более формализованные паттерны и готовые шаблоны для типовых сценариев. Также стоит следить за развитием Semantic Kernel и AutoGen, где эти концепции активно развиваются.
В ближайшее время стоит ожидать больше публикаций от Azure Architecture Center с примерами и лучшими практиками, так как тема агентных систем остаётся одной из самых горячих в ИИ-индустрии.
Итог
Выбор между навыками и субагентами — это не просто техническое решение, а стратегическое, влияющее на архитектуру всей системы. Следуя рекомендациям Azure, разработчики смогут создавать более чистые, поддерживаемые и масштабируемые ИИ-решения. Ключевой вывод: используйте навыки для простых, переиспользуемых операций, а субагентов — для сложных, многошаговых задач. Следите за обновлениями Azure Architecture Center, чтобы быть в курсе новых рекомендаций.