Использование Функции Azure с помощью службы агента Foundry (классическая модель)

Примечание

Этот документ ссылается на агентов Microsoft Foundry (classic).

🔍 Просмотреть новую документацию Функции Azure. Агенты (классические) в настоящее время устарели и будут удалены 31 марта 2027 года. Используйте новые агенты в общедоступной службе Microsoft Foundry Agents. Следуйте инструкциям по миграции , чтобы обновить рабочие нагрузки.

Функции Azure — это бессерверная служба вычислений, которую можно использовать для расширения агентов службы агентов Foundry с помощью пользовательских средств, созданных с помощью кода. Этот подход особенно полезен, если вам нужен агент для интеграции с системами в вашей организации.

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

  • Масштабирование до нуля для бессерверного размещения с оплатой за потребление.
  • Доступ на основе удостоверений к ресурсам в Azure, включая ресурсы в виртуальных сетях.
  • Декларативные подключения к источнику данных через входные и выходные привязки.

Когда следует использовать Функции Azure по сравнению с вызовами функций

Хотя вызов функций позволяет определить инструменты, которые выполняются в процессе с кодом агента, использование пользовательских инструментов на Функции Azure предоставляет дополнительные корпоративные возможности, когда они необходимы.

  • Разделение проблем: изоляция бизнес-логики от кода агента, включение независимых циклов разработки, тестирования и развертывания.
  • Централизованное управление: создание многократно используемых средств, которые могут использовать несколько агентов, приложений или команд.
  • Изоляция безопасности: управление доступом агента к средствам отдельно от доступа к корпоративным ресурсам. Этот подход позволяет назначать агентам только те конкретные разрешения, которые необходимы для вызова инструмента, не предоставляя прямой доступ к базам данных, API или сетям.
  • External dependencies: используйте библиотеки, отличные от Microsoft, определенные среды выполнения или устаревшие системные интеграции.
  • Сложные операции: выполнение многоэтапных рабочих процессов и преобразований данных или перенос вычислительно интенсивных операций.
  • Асинхронная обработка: выполнение длительных операций с возможностями повторных попыток и отказоустойчивой обработкой сообщений.

Настройки интеграции

Служба агентов Foundry предоставляет два основных способа для доступа агентов к инструментам, размещенным на Функции Azure.

Функция Серверы протокола контекста модели (MCP) инструменты на базе хранения очередей Azure
Как это работает? Агенты подключаются к приложению-функции в Azure с помощью протокола MCP. Само функциональное приложение служит пользовательским сервером MCP, представляя ваши отдельные функции как инструменты. Пользовательский сервер MCP абстрагирует сложность размещения и предоставления средств из проекта агента и способствует повторному использованию кода. Агенты взаимодействуют с кодом средства в приложении-функции в Azure через хранилище очередей путем размещения сообщений в очереди, которая активирует выполнение кода средства. Приложение-функция прослушивает входные очереди, обрабатывает сообщения асинхронно и возвращает ответ на вторую очередь.
Когда его использовать? ✔ Лучше всего использовать стандартный отраслевый протокол для интеграции средств агента.
✔ Обеспечивает синхронное взаимодействие в режиме реального времени с немедленными ответами.
✔ Лучше всего подходит для асинхронных рабочих процессов, которые не требуют ответов в режиме реального времени.
✔ Идеально подходит для фоновой обработки и надежной доставки сообщений с возможностями повторных попыток.
Конфигурация пакета SDK Универсальное средство MCP Конкретное средство Функции Azure
Начало работы Как использовать функции Azure с MCP Как использовать Функции Azure с очередями

Для функций триггера HTTP можно также интегрировать, описывая функцию с помощью спецификации OpenAPI и регистрируя ее в качестве вызываемого средства с помощью средства OpenAPI в конфигурации агента. Этот подход обеспечивает гибкость для существующих функций на основе HTTP, но для определения спецификации API требуется дополнительная настройка.

Поддерживаемые модели

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

Создание и развертывание примера интеграции инструментов, основанной на очереди

В остальной части этой статьи показано, как использовать пример интерфейса командной строки разработчика Azure (azd), который настраивает проект службы агента Foundry с функциями для поддержки интеграции инструментов на основе очередей для агентов.

Примечание

Подробные инструкции по определению и размещению инструментов на основе функций в качестве MCP серверов см. в разделе Размещение MCP серверов в Функции Azure.

Необходимые условия

Поддержка использования

поддержка Azure ИИ пакет SDK Python C# SDK пакет SDK Java REST API Базовая настройка агента Настройка стандартного агента
✔️ ✔️ ✔️ ✔️ ✔️

Инициализация шаблона проекта

Этот проект использует azd для упрощения создания ресурсов Azure и развертывания кода. Это развертывание следует текущим рекомендациям по безопасным и масштабируемым развертываниям функций. Шаблон и код, используемые здесь, можно найти на сайте GitHub.

  1. Выполните следующую azd init команду в окне терминала, чтобы инициализировать проект из шаблона azd:

    azd init --template azure-functions-ai-services-agent-python
    

При появлении запроса укажите имя среды, например ai-services-agent-python. В azd среде поддерживается уникальный контекст развертывания для вашего приложения, и вы можете определить более одного. Имя среды также используется в имени группы ресурсов и других ресурсов, создаваемых в Azure.

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

    chmod +x ./infra/scripts/*.sh 
    

Предоставление ресурсов

Выполните команду azd provision, чтобы создать необходимые ресурсы в Azure:

azd provision

При появлении запроса укажите следующие необходимые параметры развертывания:

Командная строка Описание
Выбор подписки Azure для использования Выберите подписку, в которой нужно создать ресурсы.
Параметр развертывания местоположения В регионе Azure, в котором создается группа ресурсов, содержащая новые ресурсы Azure. Отображаются только регионы, поддерживающие план потребления Flex.
Параметр развертывания vnetEnabled Хотя шаблон поддерживает создание ресурсов в виртуальной сети, чтобы упростить развертывание и тестирование, выберите False.

Затем файл развертывания main.bicep считывается azd и используется для создания этих ресурсов в Azure:

  • План потребления и приложение-функция Flex
  • Платформа агента в Foundry, в том числе:
    • Сервисная учетная запись
    • Развертывание модели
    • Проект
    • Агенты
    • Поиск
    • учетная запись Azure Cosmos DB (используемая поиском)
  • служба хранилища Azure (требуется агентами Функций и ИИ) и Application Insights (рекомендуется)
  • Политики доступа и роли для учетных записей
  • Подключения между службами с помощью управляемых удостоверений (вместо хранимых строк подключения)

Эти интегрированные ресурсы Azure также можно использовать в статье Как использовать Функции Azure с очередью в связке с агентами Microsoft Foundry.

Скрипты после подготовки также создают файл local.settings.json, который требуется для локального выполнения Functions. Созданный файл должен выглядеть следующим образом:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "STORAGE_CONNECTION__queueServiceUri": "https://<storageaccount>.queue.core.windows.net",
    "PROJECT_CONNECTION_STRING": "<project connection for AI Project>"
    }
}

Запуск приложения в Visual Studio Code

  1. Откройте папку в новом терминале.
  2. Выполните команду кода code ., чтобы открыть проект в Visual Studio Code.
  3. В палитре команд (F1) введите Azurite: Start, которое позволяет выполнять отладку с локальным хранилищем для среды выполнения функций.
  4. Нажмите клавишу Run/Debug (F5), чтобы запуститься в отладчике. Выберите Отладить в любом случае, если появится сообщение о том, что локальный эмулятор не запущен.
  5. Отправка конечных точек POST prompt соответственно с помощью средства тестирования HTTP. Если у вас установлено расширение RestClient, можно выполнять запросы непосредственно из файла проекта test.http.

Развертывание в Azure

Выполните следующую команду azd deploy, чтобы опубликовать код вашего проекта в функциональное приложение и связанные ресурсы Azure, которые вы только что подготовили.

azd deploy

После завершения успешной публикации azd предоставляет конечные точки URL-адресов новых функций, но без значений ключей функций, необходимых для доступа к этим конечным точкам. Чтобы получить ключи для конечных точек ваших функций, можно использовать команду Функции Azure Core Tools func azure functionapp list-functions с параметром --show-keys. Для получения дополнительной информации см. раздел Работа с ключами доступа в Функции Azure.

Повторное развертывание кода

Вы можете также выполнить команду azd up столько раз, сколько необходимо, чтобы одновременно подготовить ресурсы Azure и развернуть обновления кода в функциональном приложении.

Примечание

Развернутые файлы кода всегда перезаписываются последним пакетом развертывания.

Очистка ресурсов

Когда вы закончите работу с функциональным приложением и связанными ресурсами, используйте эту команду, чтобы удалить функциональное приложение и связанные с ним ресурсы из Azure и избежать дополнительных затрат (--purge не оставляет возможность восстановления ресурса ИИ и восстанавливает квоту).

azd down --purge