Инфраструктура размещённого агента с Azure Developer CLI

Important

Элементы, помеченные предварительным просмотром в этой статье, в настоящее время находятся в предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и Microsoft не рекомендует использовать её для рабочих нагрузок в производственной среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.

Azure Developer CLI (azd) может генерировать инфраструктуру Bicep или Terraform на основе сервисов, объявленных в azure.yaml. Выберите Terraform с azd ai agent init --infra=terraform или Bicep с --infra=bicep. Запуск azd provision применит выбранную инфраструктуру.

Подготовка инфраструктуры и развертывание агента являются отдельными. Terraform или Bicep управляют вспомогательными ресурсами Azure; azd deploy создает версию плоскости данных для размещённого агента. Сведения об управлении самим агентом с помощью Terraform вместо azd см. в статье "Развертывание размещенного агента с помощью Terraform".

Что подготавливается

По умолчанию azd ai agent init не создает файлы конфигурации инфраструктуры как кода. Используйте --infra или --infra=bicep, чтобы добавить инфраструктуру с помощью Bicep. Используйте --infra=terraform, чтобы добавить инфраструктуру Terraform и задать infra.provider: terraform.

При добавлении инфраструктуры с помощью Bicep шаблоны основаны на репозитории azd-ai-starter-basic и создают следующие ресурсы Azure:

Resource Purpose
Группа ресурсов Упорядочивает все ресурсы. Название: rg-<agent-name>.
Учетная запись служб ИИ Учетная запись Microsoft Foundry.
Проект литейного производства Содержит функции агента и ИИ.
Развертывания моделей Модели, которые использует агент, например gpt-4.1-mini.
Реестр контейнеров Azure (Реестр контейнеров Azure) Хранит образы контейнеров агента.
Application Insights Мониторинг производительности агента и данные телеметрии.
Рабочая область Log Analytics Централизованный сбор логов.
Манажируемая идентичность Системно назначаемое удостоверение проекта, которое используется для аутентификации шаблона удостоверения агента в Microsoft Entra ID и содержит назначения ролей на уровне платформы.

Шаблоны условно создают дополнительные ресурсы в зависимости от сервисов и зависимостей, объявленных в azure.yaml:

  • Параметры возможностей агента — объявляют Azure ресурсы, которые содержат состояние агента, векторные данные и файлы. Задайте их, когда агентам нужно использовать принадлежащее вам хранилище.
  • Обоснование с помощью Bing или обоснование с помощью Bing Custom Search — для инструмента веб-поиска.
  • Поиск с использованием ИИ Azure — для обоснования с помощью поиска.
  • служба хранилища Azure — для операций с файлами.

структура проекта

Для Bicep созданный проект имеет следующую структуру:

infra/
|-- main.bicep                 # Main deployment template (subscription-scoped)
|-- main.parameters.json       # Parameter bindings to azd environment variables
|-- abbreviations.json         # Naming convention abbreviations
\-- core/
    |-- ai/                    # Foundry account, project, and connections
    |-- host/                  # Container registry
    |-- monitor/               # Application Insights and Log Analytics
    |-- search/                # Azure AI Search (conditional)
    \-- storage/               # Azure Storage (conditional)

Как передаются параметры

В Bicep файл main.parameters.json сопоставляет переменные среды azd с параметрами:

{
  "environmentName": { "value": "${AZURE_ENV_NAME}" },
  "location": { "value": "${AZURE_LOCATION}" },
  "aiFoundryResourceName": { "value": "${AZURE_AI_ACCOUNT_NAME}" },
  "aiProjectDeploymentsJson": { "value": "${AI_PROJECT_DEPLOYMENTS=[]}" }
}

Во время azd provisionazd разрешает эти ссылки ${VAR} из среды (.azure/<env>/.env) и передает их для развертывания Bicep. Выходные данные развертывания, такие как конечная точка проекта Foundry, имя развертывания модели и конечная точка реестра контейнеров, записываются обратно в среду для использования с помощью azd deployazd ai agent runкоманд ресурсов.azd ai

Инфраструктура Terraform

Для нового проекта azd ai agent init --infra=terraform генерирует, например, следующие файлы:

infra/
|-- main.tf
|-- provider.tf
|-- variables.tf
|-- outputs.tf
|-- main.tfvars.json
\-- .azd-foundry

Службы на основе контейнеров также могут создавать container-registry.tf. Существующие проекты могут сохранять свою инфраструктуру и получить отдельный слой Foundry в составе infra/foundry/. Используйте фактически созданный макет, а не перемещайте файлы между слоями.

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

main.tfvars.json привязывает входные данные инфраструктуры к значениям среды azd. outputs.tf передаёт azd такие значения, как конечная точка проекта Foundry, после развертывания. Эти привязки являются частью рабочего процесса azd; Не предполагайте, что созданный файл параметров работает без изменений с автономным terraform applyфайлом.

Чтобы настроить инфраструктуру Terraform, измените созданные .tf файлы, сохраните выходные данные, необходимые службам агента, и запустите azd provision. Перед применением изменений инфраструктуры просмотрите план Terraform.

Состояние Terraform и CI/CD

Созданные файлы не инициализируют бэкенд удалённого состояния. При командных развертываниях перед настройкой CI/CD настройте состояние, хранящееся в служба хранилища Azure, отдельные ключи состояния для каждой среды и необходимые разрешения для бэкенда.

См. статью Настройка CI/CD с Terraform для процесса развертывания и статью Использование Terraform с azd для настройки серверной части.

Ограничения вытеснения Terraform

Путь извлечения Terraform не поддерживает конфигурацию службы network: в текущем расширении агентов Foundry. Просмотрите существующие ограничения ресурсов перед удалением проекта, который уже имеет инфраструктуру. Извлечение не является общим переносом состояния Bicep в Terraform, а удаление производственных ресурсов не является обязательным условием для внедрения Terraform.

Существующие ресурсы

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

Существующий ресурс Переменные среды, которые нужно задать
Учетная запись служб ИИ AZURE_AI_ACCOUNT_NAME
Container Registry AZURE_CONTAINER_REGISTRY_RESOURCE_ID и AZURE_CONTAINER_REGISTRY_ENDPOINT.
Application Insights APPLICATIONINSIGHTS_CONNECTION_STRING и APPLICATIONINSIGHTS_RESOURCE_ID.

Задайте эти переменные azd env set перед запуском azd provision.

Настройка инфраструктуры

Каталог infra/ относится к стандартной инфраструктуре azd. Чтобы добавить или изменить ресурсы Bicep:

  1. Измените infra/main.bicep или добавьте новые модули в разделе infra/core/.
  2. Добавьте новые параметры в main.parameters.json с привязками ${VAR}.
  3. Установите соответствующие azd переменные среды с помощью azd env set.
  4. Выполните команду azd provision , чтобы применить изменения.

Изменения в файлах Bicep сохраняются во всех развертываниях.

Ограничения региона

Шаблон main.bicep ограничивает location регионами, в которых поддерживаются размещённые агенты. Если необходимо выполнить развертывание в регионе, который не входит в список разрешенных, обновите декоратор @allowed в main.bicep.