このクイック スタートでは、Azure Developer CLI (azd) を使用して、サーバーレス エージェントをAzure Functionsにデプロイします。 サンプルには、次の 2 つのエージェントが含まれています。
- ブラウザーでデプロイされたアプリをテストするために使用できるチャット エージェント。 このエージェントは、セキュリティで保護されたPythonコードの実行を使用して、Web を参照できます。
- タイマーによってトリガーされるエージェント。最近のMicrosoftブログの投稿を収集し、それらを要約し、Microsoft 365 Outlook コネクタ用のマネージド MCP サーバーから MCP ツールを介してダイジェストを電子メールで送信できます。
このプロジェクトでは、Azure Functions サーバーレス エージェント ランタイムを使用します。 マークダウン ファイルでエージェントを定義し、 agents.config.yamlでアプリ全体のランタイムの既定値を構成し、 mcp.jsonでリモート MCP サーバーを接続し、他の関数アプリと同様にアプリをデプロイします。
このテンプレートは、Flex Consumption 関数アプリ、ストレージ、監視、Microsoft Foundry プロジェクトとモデルのデプロイ、Azure Container Apps動的セッション プール、および必要な ID 割り当てをプロビジョニングします。 電子メール配信を有効にすると、コネクタの名前空間、Microsoft 365 Outlook接続、およびコネクタのマネージド MCP サーバーもプロビジョニングされます。
このクイック スタートを完了すると、アプリで Flex 従量課金プランと関連するAzure リソースが使用されるため、Azure アカウントにわずかなコストが発生する可能性があります。
Prerequisites
-
Azure Developer CLI (
azd)。 - Azure CLI。 Azure Cloud ShellでAzure CLIコマンドを実行することもできます。
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- サブスクリプションでリソース グループ、関数アプリ、マネージド ID、Microsoft Foundry リソース、モデル デプロイ、Azure Container Apps セッション プール、コネクタ名前空間、接続を作成するためのアクセス許可。
- 電子メール配信を有効にするには、サインインできるMicrosoft 365 アカウント、電子メールを送信できるアカウント、および受信者アドレスとして使用してエージェントの出力を確認できます。
プロジェクトを初期化する
azd init コマンドを使用して、サンプル リポジトリからローカル プロジェクトを作成します。
Visual Studio Code で、プロジェクトを作成するフォルダーまたはワークスペースを開きます。
ターミナルで、次の
azd initコマンドを実行します。azd init --template Azure-Samples/functions-quickstart-serverless-agents-azd -e serverless-agentsこのコマンドは、サーバーレス エージェントサンプル リポジトリからプロジェクト ファイルをプルし、現在のフォルダー内のプロジェクトを初期化します。
-eフラグは、現在のazd環境に名前を付けます。これはデプロイ状態を追跡し、Azureリソース名で使用されます。タイマー エージェントによって使用される受信者の電子メール アドレスを設定して、電子メール配信を有効にします。 このクイック スタートの後半で、電子メールを送信するMicrosoft 365 Outlook接続を承認するには、Microsoft 365 アカウントにサインインする必要があります。
azd env set TO_EMAIL <recipient@example.com><recipient@example.com>を自分のメール アドレスに置き換えるか、組織の電子メール ポリシーで許可されている別の受信者に置き換えます。 一部の組織では、コネクタベースの電子メールを内部受信者に制限したり、外部受信者をブロックしたりするため、テスト メッセージを自分に送信することが最も信頼性の高いオプションです。Note
このサンプルでは、電子メール配信は省略可能です。 この設定を省略した場合、
azd upでは、コネクタ名前空間、Microsoft 365 Outlook接続、またはマネージド MCP サーバーは作成されません。 タイマー エージェントは引き続き実行され、最後の応答でダイジェストが返されるため、ログまたは Application Insights で実行を確認できます。
プロジェクトを確認する
デプロイする前に、サーバーレス エージェント アプリを定義するプロジェクト ファイルを確認します。
| ファイルまたはフォルダー | Purpose |
|---|---|
src/main.agent.md |
チャット エージェントを定義し、デバッグ チャット UI の組み込みエンドポイントを有効にします。 このエージェントは、セキュリティで保護されたPythonコード実行を使用でき、Microsoft 365 Outlookマネージド MCP サーバーは使用しません。 |
src/daily_microsoft_blog_summary.agent.md |
タイマーによってトリガーされるMicrosoftブログの概要エージェントを定義します。 YAML フロント マターはタイマー トリガーを宣言し、マークダウン本文にはエージェント命令が含まれています。 |
src/agents.config.yaml |
モデルのデプロイや、アプリ内のエージェントによって使用される動的セッション プール エンドポイントAzure Container Apps含む、アプリ全体のランタイムの既定値を定義します。 |
src/mcp.json |
エージェントが使用できるリモート MCP サーバーを一覧表示します。 このテンプレートでは、src は関数アプリ のプロジェクト ルートであり、このファイルには、電子メール配信が有効な場合にMicrosoft 365 Outlook用のマネージド MCP サーバー エンドポイントが含まれています。 |
infra/ |
関数アプリ、ストレージ、監視、Foundry リソース、モデルデプロイ、セッション プール、オプションのコネクタ名前空間リソース、ID 構成をプロビジョニングするために、azd によって使用されるBicep ファイルが含まれます。 |
src/function_app.py |
Functions ホストに必要なブートストラップ ファイル。 通常、このファイルを編集する必要はありません。 |
タイマーによってトリガーされるエージェントは、 daily_microsoft_blog_summary.agent.mdで定義されます。 フロントマターはタイマースケジュールを宣言し、マークダウン命令は、最近のMicrosoftブログ投稿を収集し、ダイジェストを作成し、TO_EMAILが構成されたときに電子メールを送信するようにエージェントに指示します。
Azure にデプロイ
azd up を使用して、Azureリソースをプロビジョニングし、関数アプリをデプロイします。
ターミナルで、初期化されたプロジェクトのルートから次のコマンドを実行します。
azd upメッセージが表示されたら、リソース グループに使用するAzureサブスクリプションと場所を選択します。
テンプレートでは、Bicep パラメーターをカスタマイズしない限り、既定の Microsoft Foundry モデルデプロイ設定が使用されます。
コマンドが完了すると、アプリはAzureの新しい関数アプリにデプロイされます。 デプロイ出力には、作成されたリソースへのリンクが含まれます。
接続を承認する
TO_EMAIL が設定されると、Microsoft 365 Outlook接続とマネージド MCP サーバーを使用してコネクタ名前空間が作成されます。 このセットアップにより、タイマー エージェントはカスタム Outlook API コードなしでコネクタ ツールを介して電子メールを送信できます。 エージェントが電子メールを送信する前に、電子メールを送信できるMicrosoft 365 アカウントにサインインして接続を承認します。
TO_EMAIL設定していない場合は、このセクションをスキップします。
Azure portal で、
Connector Namespaceを検索します。azdによって作成されたコネクタ名前空間リソースを開きます。 リソースは、azdによって作成されたリソース グループ内にあり、その名前はrg-で始まり、azd init中に選択した環境名が含まれます (例のコマンドを使用した場合serverless-agents)。リソースを選択すると、コネクタ名前空間ポータルが開きます。これは、名前空間内の接続、トリガー、および MCP サーバーを参照および管理するための別のエクスペリエンスです。
コネクタ名前空間ポータルで、Microsoft 365 Outlook コネクタを見つけて、デプロイによって作成された接続を開きます。
Authenticate を選択し、電子メールを送信できるMicrosoft 365 アカウントでサインインします。
認証が成功すると、関数アプリのマネージド ID は、承認された接続を使用して電子メールを送信するマネージド MCP サーバーを呼び出すことができます。
デバッグ チャット エージェントを使用する
このサンプルには、Azure Container Apps動的セッション プールを介してPythonコード実行を使用できるチャット エージェントが含まれています。 チャット UI は、デプロイされたエージェント アプリをテストするためのデバッグ画面です。
azd upが完了したら、デプロイ出力に表示されている関数アプリ エンドポイントを開き、/agents/main/に移動します。 チャット UI が読み込まれると、エージェントのチャット エンドポイントを呼び出すことができるように、関数キーの入力を求められます。
アプリの既定の関数キーを取得します。
az functionapp keys list \
--resource-group <RESOURCE_GROUP> \
--name <FUNCTION_APP_NAME> \
--query "functionKeys.default" \
--output tsv
返されたキーをチャット UI プロンプトに貼り付けます。
チャット エージェントに、現在の公開情報またはコード実行の利点を問い合わせてみてください。 たとえば、What's the weather in Seattle right now? または Compare the current weather in Seattle and New York. に尋ねてください
チャット エージェントは、Microsoft 365 Outlookマネージド MCP サーバーを使用しません。 電子メール配信は、タイマーによってトリガーされるブログの概要エージェントによってのみ使用されます。
タイマー エージェントをオンデマンドで実行する
エージェントは設定されたタイマー スケジュールに従って自動的に実行されます。 すぐにテストするには、Azure ポータルからタイマーによってトリガーされる関数を手動で実行します。
Azure ポータルで、
azdによって作成された関数アプリを開きます。[ 概要 ] ブレードで 、[ 関数] を選択し、タイマーによってトリガーされるエージェント関数
daily_microsoft_blog_summaryを選択します。[Code + Test]\(コード + テスト\) を選択します。
[ ログ] を選択して、この関数のログ ストリームを開きます。
[ テスト/実行] を選択し、要求本文を
{}のままにして、[ 実行] を選択します。
要求は受け入れられた応答を返し、関数の実行はバックグラウンドで開始されます。
実行を監視する
タイマーによってトリガーされる関数のコード + テストの [ログ] ペインに戻ります。 ログには、関数の実行メッセージとランタイム メッセージが表示されます。 ランタイム ログ レベルによっては、モデルとツールのアクティビティも表示される場合があります。
また、Application Insights を使用して、テレメトリが取り込まれた後の実行を確認することもできます。
関数アプリの左側のメニューで、[ Application Insights] を選択します。
関連付けられている Application Insights リソースを開きます。
トランザクション検索またはログを使用して、関数を手動で実行したときに開始された実行を見つけます。
関数の実行が正常に完了したことがログに表示されたら、実行は完了です。 電子メール配信が有効になっていて、Microsoft 365 Outlook接続が承認されている場合は、受信者の受信トレイでMicrosoftブログ ダイジェストを確認します。 それ以外の場合は、関数ログまたは Application Insights でエージェントの最終的な応答を確認します。
リソースをクリーンアップする
完了したら、次のコマンドを使用して、関数アプリと関連リソースをAzureから削除します。
azd down