Visual Studio Codeでホストされるエージェント ワークフローを作成する (プレビュー)

`Microsoft Foundry for Visual Studio Code拡張機能を使用して、ホストされている Foundry Agent ワークフローを作成、テスト、デプロイします。` ホスト型ワークフローを使用すると、複数のエージェントが順番に共同作業を行い、それぞれに独自のモデル、ツール、および手順を使用できます。

開始する前に、拡張機能を使用して Foundry Agent Service でエージェントを構築します。 その後、ホストされているワークフローをそのエージェントに追加できます。

この記事では、ワークフロー projectの作成、ローカルでの実行、実行の視覚化、Foundry ワークスペースへのデプロイについて説明します。

[前提条件]

  • デプロイされたモデルを含む Foundry プロジェクト、または Azure OpenAI リソース。
  • Microsoft Foundry for Visual Studio Code拡張機能インストールされています。
  • プロジェクトのマネージド ID には、Azure AI User ロールと AcrPull ロールが割り当てられています。 また、acrPull ロールを、ホストされるエージェントをデプロイする予定の Foundry projectのマネージド ID に割り当てます。
  • ホストエージェントが動作するサポート対象のリージョン
  • Python 3.12 以上。

ホストされるエージェント ワークフローを作成する

Foundry for Visual Studio Code拡張機能を使用して、ホストされるエージェント ワークフローを作成できます。 ホストされるエージェント ワークフローは、タスクを実行するために連携するエージェントのシーケンスです。 ワークフロー内の各エージェントは、独自のモデル、ツール、および命令を持つことができます。

  1. コマンド パレットを開きます (Ctrl+Shift+P)。

  2. 次のコマンドを実行します: >Microsoft Foundry: Create a New Hosted Agent

  3. Microsoft Agent Framework または LangGraph のいずれかのフレームワークを選択します。

  4. 単一エージェント ホテル アシスタントまたは Writer-Reviewer エージェント ワークフロー (マルチエージェント) のいずれかのテンプレートを選択します。

  5. プログラミング言語を選択します。

  6. プロジェクトに既にデプロイ済みのモデルを選択するか、モデル カタログを参照します。

  7. 新しいワークフローを保存するフォルダーを選択します。

ホストされるエージェント プロジェクトのファイルは、作業を開始するために選択したフレームワーク、テンプレート、言語に基づいて、選択したフォルダーに生成されます。 必要に応じて、そのコードを削除または変更できます。

依存関係のインストール

ホスト型エージェント プロジェクトに必要な依存関係をインストールします。 依存関係は、projectの作成時に選択したプログラミング言語によって異なります。

  1. 仮想環境を作成します。

     python -m venv .venv
    
  2. 仮想環境をアクティブにします。

    # PowerShell
    ./.venv/Scripts/Activate.ps1
    
    # Windows cmd
    .venv\Scripts\activate.bat
    
    # Unix/MacOS
    source .venv/bin/activate
    
  3. 次のパッケージをインストールします。

    pip install azure-ai-agentserver-agentframework
    
  1. project ディレクトリに移動し、次のコマンドを実行して、必要な NuGet パッケージを取得します。

    dotnet restore
    

ホストされているワークフローをローカルで実行する

サンプル ワークフロー projectは、必要な環境変数を含む .env ファイルを作成します。 Foundry 資格情報を使用して .env ファイルを作成または更新します。

PROJECT_ENDPOINT=https://<your-resource-name>.services.ai.azure.com/api/projects/<your-project-name>

MODEL_DEPLOYMENT_NAME=<your-model-deployment-name>

Important

.env ファイルをバージョン 管理にコミットしないでください。 .gitignore ファイルに追加します。

ホストされているエージェントを認証する

ホストされるエージェント サンプルは、DefaultAzureCredential を使用して認証します。 次のように、サポートされているソースのいずれかを使用して資格情報を提供するように開発環境を構成します。

  • Azure CLI (az login)
  • Visual Studio Code アカウントのサインイン
  • Visual Studio アカウントのサインイン
  • サービス プリンシパルの環境変数 (AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET)

サンプルを実行する前に、Azure CLI az account show または az account get-access-token コマンドを実行して、ローカルで認証を確認します。

ホストされるエージェントは、対話モードまたはコンテナー モードで実行できます。

エージェントインスペクターでホストされているエージェントを実行する

Visual Studio Codeでホストされているエージェントをローカルで実行するには、F5 キーを選択します。 これにより、エージェントインスペクターが開き、アプリケーションが実行されます。

これにより、次の操作が行われます。

  1. エージェント サーバーを起動します。agentdev CLI は、ポート 8087 でエージェントを HTTP サーバーとしてラップし、debugpy をポート 5679 にアタッチします。
  2. エージェントの検出: UI は、使用可能なエージェント/ワークフローを /agentdev/entitiesからフェッチします。
  3. ストリームの実行: チャット入力は /v1/responses に移動し、リアルタイムの視覚化のために SSE 経由でイベントをストリーミングします。
  4. コード ナビゲーションを有効にする: ワークフロー ノードをダブルクリックして、対応するソース ファイルをエディターで開きます。
  5. ローカル エージェントとのチャット や応答の表示、デバッグ用のブレークポイントのヒットなどを有効にします。

サンプル ワークフロー projectは、必要な環境変数を含む .env ファイルを作成します。 Foundry 資格情報を使用して .env ファイルを作成または更新します。

  1. オペレーティング システムに基づいて環境変数を設定します。

    $env:AZURE_AI_PROJECT_ENDPOINT="https://<your-resource-name>.services.ai.azure.com/api/projects/<your-project-name>"
    $env:AZURE_AI_MODEL_DEPLOYMENT_NAME="your-deployment-name"
    

ホストされているエージェントを認証する

ホストされるエージェント サンプルは、DefaultAzureCredential を使用して認証します。 次のように、サポートされているソースのいずれかを使用して資格情報を提供するように開発環境を構成します。

  • Azure CLI (az login)
  • Visual Studio Code アカウントのサインイン
  • Visual Studio アカウントのサインイン
  • サービス プリンシパルの環境変数 (AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET)

サンプルを実行する前に、Azure CLI az account show または az account get-access-token コマンドを実行して、ローカルで認証を確認します。

ホストされるエージェントは、対話モードまたはコンテナー モードで実行できます。

対話型モードでホストされたエージェントを実行する

開発とテストのために、ホストされたエージェントを直接実行します。

dotnet restore
dotnet build
dotnet run

コンテナー モードでホストされるエージェントを実行する

ヒント

コンテナー エージェントを開始する前にローカルプレイグラウンドを開き、視覚化が正しく機能することを確認します。

コンテナー モードでエージェントを実行するには:

  1. Visual Studio Code コマンド パレットを開き、Microsoft Foundry: Open Container Agent Playground Locally コマンドを実行します。
  2. 次のコマンドを使用して、コンテナー化されたホステッド エージェントを初期化します。
    dotnet restore
    dotnet build
    dotnet run
    
  3. プレイグラウンド インターフェイスを介してエージェントに要求を送信します。 たとえば、「手頃な価格で運転が楽しい新しい電動SUVのスローガンを作成する」などのプロンプトを入力します。
  4. プレイグラウンド インターフェイスでエージェントの応答を確認します。

ホストされたエージェント ワークフローの実行を視覚化する

Foundry for Visual Studio Code拡張機能は、ワークフロー内のエージェントが対話して共同作業する方法を示すリアルタイム実行グラフを提供します。 このビジュアライゼーションを利用するには、プロジェクトでオブザーバビリティを有効にします。

csproj ファイルに次の参照を追加します。

<ItemGroup>
    <PackageReference Include="OpenTelemetry" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.10" />
</ItemGroup>

次のコード スニペットを含むようにプログラムを更新します。

using System.Diagnostics;
using OpenTelemetry;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

var otlpEndpoint =
    Environment.GetEnvironmentVariable("OTLP_ENDPOINT") ?? "http://localhost:4319";

var resourceBuilder = OpenTelemetry
    .Resources.ResourceBuilder.CreateDefault()
    .AddService("WorkflowSample");

var s_tracerProvider = OpenTelemetry
    .Sdk.CreateTracerProviderBuilder()
    .SetResourceBuilder(resourceBuilder)
    .AddSource("Microsoft.Agents.AI.*") // All agent framework sources
    .SetSampler(new AlwaysOnSampler()) // Ensure all traces are sampled
    .AddOtlpExporter(options =>
    {
        options.Endpoint = new Uri(otlpEndpoint);
        options.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc;
    })
    .Build();

ホストされるエージェント ワークフローを監視して視覚化する

ホストされたエージェント ワークフローの実行をリアルタイムで監視および視覚化するには:

  1. コマンド パレットを開きます (Ctrl+Shift+P)。

  2. 次のコマンドを実行します: >Microsoft Foundry: Open Visualizer for Hosted Agents

VS Code で新しいタブが開き、実行グラフが表示されます。 視覚化は、ワークフローの進行に合わせて自動的に更新され、エージェントとその相互作用の間のフローが表示されます。

ポートの競合

ポートの競合の場合は、Foundry 拡張機能の設定で視覚化ポートを設定することで変更できます。 それには、次の手順に従います。

  1. VS Code の左側のサイドバーで、歯車アイコンを選択して設定メニューを開きます。
  2. Extensions > Microsoft Foundry Configuration を選択します。
  3. Hosted Agent Visualization Port設定を見つけて、使用可能なポート番号に変更します。
  4. VS Code を再起動して変更を適用します。

コード内のポートを変更する

ポートの競合がある場合は、 FOUNDRY_OTLP_PORT 環境変数を設定して視覚化ポートを変更します。 それに応じて、プログラムの OTLP エンドポイントを更新します。

たとえば、ポートを 4318 に変更するには、次のコマンドを使用します。

  $env:FOUNDRY_OTLP_PORT="4318"

プログラムで、新しいポート番号を使用するように OTLP エンドポイントを更新します。

var otlpEndpoint =
    Environment.GetEnvironmentVariable("OTLP_ENDPOINT") ?? "http://localhost:4318";

ホストされるエージェントをデプロイする

ホストされたエージェントをローカルでテストした後、Foundry ワークスペースにデプロイして、他のチーム メンバーやアプリケーションで使用できるようにします。

Important

前提条件に記載されているように、Foundry ワークスペースにホストされているエージェントを展開するために必要なアクセス許可を付与してください。 必要なロールの割り当てを取得するには、Azure管理者と協力する必要がある場合があります。

  1. Visual Studio Code コマンド パレットを開き、Microsoft Foundry: Deploy Hosted Agent コマンドを実行します。
  2. デプロイ設定を構成するには、ターゲット ワークスペースを選択し、コンテナー エージェント ファイル (container.py) を指定し、必要に応じて他のデプロイ パラメーターを定義します。
  3. デプロイが成功すると、ホストされたエージェントが Microsoft Foundry 拡張機能ツリー ビューの Hosted Agents (Preview) セクションに表示されます。
  4. デプロイされたエージェントを選択して、統合されたプレイグラウンド インターフェイスを使用して詳細情報とテスト機能をaccessします。
  1. Visual Studio Code コマンド パレットを開き、Microsoft Foundry: Deploy Hosted Agent コマンドを実行します。
  2. デプロイ設定を構成するには、ターゲット ワークスペースを選択し、コンテナー エージェント ファイル (<your-project-name>.csproj) を指定し、必要に応じて他のデプロイ パラメーターを定義します。
  3. デプロイが成功すると、ホストされたエージェントが Microsoft Foundry 拡張機能ツリー ビューの Hosted Agents (Preview) セクションに表示されます。
  4. デプロイされたエージェントを選択して、統合されたプレイグラウンド インターフェイスを使用して詳細情報とテスト機能をaccessします。