Azure Developer CLI を使用したホステッド エージェント インフラストラクチャ

Important

この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能がサポートされていないか、機能が制限されている可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

azd ai agent init --infraまたはazd ai agent init --infra=bicepを実行すると、Azure Developer CLI (azd) は、Bicep テンプレートを含むinfra/ ディレクトリをプロジェクトにスキャフォールディングします。 これらのテンプレートは、azure.yamlで宣言されたサービスからホストされるエージェントが必要とするAzure リソースを定義します。 azd provisionを実行すると、テンプレートがデプロイされ、インフラストラクチャが作成されます。 この記事では、これらのテンプレートがプロビジョニングする内容と、テンプレートをカスタマイズする方法について説明します。

プロビジョニングされる項目

既定では、 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> という名前です。
AI サービス アカウント Microsoft Foundry アカウント。
鋳造プロジェクト エージェントと AI の機能をホストします。
モデルの展開 エージェントが使用するモデル ( gpt-4.1-miniなど)。
Azure Container Registry エージェント コンテナー イメージを格納します。
Application Insights エージェントのパフォーマンスの監視とテレメトリ。
Log Analytics ワークスペース ログ収集の一元化。
マネージド ID Microsoft Entra ID に対してエージェント ID ブループリントを認証し、プラットフォーム ロールの割り当てを保持している、プロジェクトのシステム割り当て ID。

テンプレートは、 azure.yamlで宣言されているサービスと依存関係に基づいて、条件付きでさらに多くのリソースを作成します。

  • 機能ホスト -- Foundry プロジェクトでのホスト型エージェントのデプロイをサポートします。 会話のカスタム ストレージが必要な場合に作成されます。
  • Grounding with Bing または Grounding with Bing Custom Search -- Web 検索ツール向け。
  • Azure AI 検索 -- 検索グラウンディング用。
  • Azure Storage -- ファイル操作用。

プロジェクト構造

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)

パラメーターのフロー方法

main.parameters.json ファイルは、azd環境変数をBicepパラメーターにマップします。

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

azd provision 中に、azd は環境 (${VAR}) からこれらの .azure/<env>/.env 参照を解決して、Bicep デプロイに渡します。 Foundry プロジェクト エンドポイント、モデル デプロイ名、コンテナー レジストリ エンドポイントなどのデプロイからの出力は、 azd deployazd ai agent run、および azd ai リソース コマンドで使用するために環境に書き戻されます。

既存のリソース

Bicep テンプレートは、新しいリソースを作成する代わりに、既存のAzure リソースへの接続をサポートします。 これは、チームが既に共有インフラストラクチャを持っている場合に便利です。

既存のリソース 設定する環境変数
AI サービス アカウント 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 インフラストラクチャであるため、完全に制御できます。 リソースを追加または変更するには:

  1. infra/main.bicepを編集するか、infra/core/の下に新しいモジュールを追加します。
  2. main.parameters.json バインドを使用して${VAR}に新しいパラメーターを追加します。
  3. azdを使用して、対応するazd env set環境変数を設定します。
  4. azd provision を実行して、変更を適用します。

Bicep ファイルに対する変更は、デプロイ間で保持されます。

リージョンの制限

main.bicep テンプレートは、ホストされているエージェントがサポートされているリージョンにlocationを制限します。 許可リストにないリージョンにデプロイする必要がある場合は、@allowedmain.bicepデコレーターを更新します。