Microsoft объявила стабильным базовый API Agent Skills для Python в Microsoft Agent Framework. Он позволяет подключать к ИИ-агентам переиспользуемые пакеты с инструкциями, справочными материалами и скриптами, которые загружаются по мере необходимости.
Ранее поддержка Agent Skills в Python считалась экспериментальной. Теперь же для использования основного API не требуется включать экспериментальные возможности фреймворка.
Что такое Agent Skills
Agent Skills — открытая спецификация для упаковки предметных знаний и сценариев работы ИИ-агентов. Отдельный навык может включать:
-
инструкции для модели;
-
справочные документы;
-
шаблоны и другие статические ресурсы;
-
скрипты, которые агент может запускать при выполнении задачи.
В файловом варианте каждый навык хранится в отдельном каталоге. Основным файлом служит SKILL.md: в нём указываются название, описание и подробные инструкции.
expense-report/├── SKILL.md├── references/│ └── policy.md├── assets/│ └── report-template.md└── scripts/ └── validate.py
Описание навыка помогает модели определить, подходит ли он для текущей задачи. Дополнительные документы и скрипты не добавляются в контекст заранее.
Подробнее о том, как устроен подход Agent Skills и как с его помощью можно развивать агентов без дообучения, разбирали в отдельном материале.
Как загружаются навыки
Agent Skills используют поэтапную загрузку данных.
Сначала агент получает только названия и краткие описания доступных навыков. Когда запрос соответствует одному из них, модель может вызвать инструмент load_skill и загрузить полные инструкции из SKILL.md.
Если для выполнения задачи нужны дополнительные материалы, агент обращается к ним через read_skill_resource. Для запуска входящего в навык скрипта используется run_skill_script.
Получается четыре этапа:
-
Агент узнаёт о доступных навыках.
-
Загружает инструкции выбранного навыка.
-
При необходимости читает справочные материалы.
-
При необходимости запускает скрипты.
Такой подход позволяет не хранить все корпоративные регламенты, инструкции и сценарии в системном промпте и не расходовать контекстное окно на информацию, которая не относится к текущему запросу.
Например, внутреннему помощнику можно подключить отдельные навыки для адаптации новых сотрудников, оформления командировок и проверки требований информационной безопасности. При вопросе о первом рабочем дне агент загрузит инструкции по адаптации, не добавляя в контекст остальные документы.
Три способа описывать навыки
Стабильный API поддерживает три варианта создания Agent Skills.
Файловые навыки хранятся в каталогах с SKILL.md, справочными документами и скриптами. Такой формат подходит для общего репозитория, где инструкции могут поддерживать разные команды.
Навыки на основе классов описываются с помощью Python-классов. Их можно распространять как обычные пакеты, в том числе через внутренний PyPI.
Навыки, определённые в коде, создаются непосредственно внутри приложения. Этот вариант подходит, когда инструкции и ресурсы формируются динамически или зависят от состояния приложения.
Все три вида подключаются через единый поставщик навыков, а для агента выглядят одинаково во время выполнения.
Как подключить Agent Skills
Для файловых навыков используется SkillsProvider. Компонент ищет каталоги с файлами SKILL.md, сообщает агенту о доступных навыках и регистрирует инструменты для загрузки инструкций и ресурсов.
Пример из анонса Microsoft:
import asyncioimport osfrom pathlib import Pathfrom agent_framework import Agent, SkillsProviderfrom agent_framework.foundry import FoundryChatClientfrom azure.identity import AzureCliCredentialasync def main() -> None: client = FoundryChatClient( project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], model=os.environ.get("FOUNDRY_MODEL", "gpt-4o-mini"), credential=AzureCliCredential(), ) # Ищем файловые навыки в каталоге с файлами SKILL.md. # Для доверенных навыков отключаем подтверждение загрузки инструкций # и чтения ресурсов. Запуск скриптов по-прежнему требует разрешения. skills_dir = Path(__file__).parent / "skills" skills_provider = SkillsProvider.from_paths( skill_paths=str(skills_dir), disable_load_skill_approval=True, disable_read_skill_resource_approval=True, ) async with Agent( client=client, instructions="You are a helpful assistant.", context_providers=[skills_provider], ) as agent: response = await agent.run("Help me with onboarding.") print(response.text)if __name__ == "__main__": asyncio.run(main())
Код ожидает, что рядом с приложением находится каталог skills. Каждый его подкаталог с файлом SKILL.md будет обнаружен как отдельный навык.
project/├── app.py└── skills/ └── onboarding/ ├── SKILL.md ├── references/ │ └── company-policy.md └── scripts/ └── validate.py
В примере клиент модели создаётся через FoundryChatClient. Адрес проекта передаётся в переменной окружения FOUNDRY_PROJECT_ENDPOINT, а модель можно указать через FOUNDRY_MODEL. Для аутентификации используется AzureCliCredential.
Параметры disable_load_skill_approval и disable_read_skill_resource_approval отключают ручное подтверждение только для загрузки инструкций и чтения ресурсов. Автоматического разрешения на запуск скриптов они не дают.
Кроме того, для фактического выполнения файловых скриптов разработчик должен передать в SkillsProvider собственный script_runner. Без него попытка запустить скрипт завершится ошибкой.
Что предусмотрено для рабочих систем
По умолчанию инструменты load_skill, read_skill_resource и run_skill_script требуют подтверждения. Для доверенных операций разработчик может выборочно отключить его, оставив контроль над действиями с повышенным риском.
Также в API появились:
-
фильтрация доступных навыков;
-
кэширование;
-
объединение навыков из нескольких источников;
-
подключение собственных источников и реестров.
Фильтрация позволяет, например, выдавать разным агентам или клиентам разные наборы навыков из общей библиотеки.
Файловые скрипты выполняются не самим SkillsProvider, а через переданный разработчиком исполнитель. Поэтому изоляция процессов, ограничение ресурсов, проверка входных данных и журналирование остаются ответственностью команды, которая разворачивает систему. Microsoft рекомендует запускать такие сценарии в изолированной среде и ограничивать список разрешённых файлов.
Что изменилось
Сам механизм Agent Skills существовал в Microsoft Agent Framework и раньше, но Python API находился в экспериментальном статусе. В новом релизе Microsoft объявила стабильными его основные интерфейсы.
Практический смысл обновления — в появлении стандартного способа хранить и распространять инструкции, предметные знания и исполняемые сценарии для агентов. Вместо одного разрастающегося системного промпта команды могут поддерживать отдельные версионируемые пакеты и подключать их к нескольким приложениям.
При этом стабильный статус API не делает содержимое навыков автоматически безопасным. Инструкции, внешние материалы и исполняемый код необходимо проверять так же, как любые другие зависимости, влияющие на поведение системы.
Разобраться на практике, как строятся современные ИИ-агенты и какие подходы помогают управлять их возможностями, можно на бесплатных уроках:
-
21 июля, 20:00. «Разработка ИИ-приложений с Claude Code». Записаться
-
23 июля, 20:00. «Когнитивные архитектуры: ReAct, Reflection и RAG». Записаться
Источник: habr.com