このクイックスタートでは、Azure Developer CLI(azd)を使ってイベント駆動型AIアプリをAzure Functionsにデプロイします。 サンプルには2つのAIタスクが含まれています:
- ブラウザでデプロイされたアプリをテストするためのチャットタスクです。 このタスクはサンドボックス化されたPythonコード実行を使い、ウェブ閲覧も可能です。
- タイマーでトリガーされるタスクで、最近のMicrosoftブログ記事を集め、それらを要約し、マネージドMCPサーバーからMCPツールを通じてダイジェストをメール送信し、Microsoft 365 Outlookコネクターとして利用できます。
このプロジェクトはAzure Functionsのホストスキルを使用しています。
.agent.mdファイルでAIタスクを定義し、agents.config.yamlでアプリ全体のランタイムデフォルトを設定し、mcp.jsonでリモートMCPサーバーを接続し、他の機能アプリと同様にアプリをデプロイします。
Important
Azure Functions Hosted Skillsは現在プレビュー中です。 機能、構成名、およびサポートされているコネクタは、一般公開前に変更される可能性があります。
テンプレートは、計算、ストレージ、監視、モデル展開、セッションプール、メール配信用のオプションコネクタリソースなど、必要なすべてのAzureリソースをプロビジョニングします。
このクイック スタートを完了すると、アプリで Flex 従量課金プランと関連するAzure リソースが使用されるため、Azure アカウントにわずかなコストが発生する可能性があります。
前提条件
-
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 サーバーは作成されません。 タイマータスクは実行され、最終応答でダイジェストを返すので、ログやアプリケーションインサイトで実行を検証できます。
プロジェクトを確認する
デプロイする前に、アプリを定義するプロジェクトファイルを確認してください:
| ファイルまたはフォルダー | Purpose |
|---|---|
src/main.agent.md |
チャットタスクを定義し、デバッグチャットUIの組み込みエンドポイントを有効にします。 このタスクはサンドボックス化されたPythonコード実行が可能で、Microsoft 365 Outlook管理されたMCPサーバーを使いません。 |
src/daily_microsoft_blog_summary.agent.md |
タイマートリガーによるブログ要約タスクを定義します。 YAMLの前面部分はタイマートリガーを宣言し、マークダウンの本文にはタスク指示が記載されています。 |
src/agents.config.yaml |
アプリ全体のランタイムデフォルトを定義し、モデル展開やアプリ内のタスクで使用されるAzure Container Apps動的セッションプールエンドポイントも含まれます。 |
src/mcp.json |
AIタスクに利用可能なリモート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 サーバーを呼び出すことができます。
デバッグチャットUIを使いましょう
サンプルには、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によって作成された関数アプリを開きます。概要ペインで「Functions」を選択し、タイマーでトリガーされる関数「
daily_microsoft_blog_summary」を選択します。[Code + Test]\(コード + テスト\) を選択します。
[ ログ] を選択して、この関数のログ ストリームを開きます。
[ テスト/実行] を選択し、要求本文を
{}のままにして、[ 実行] を選択します。
要求は受け入れられた応答を返し、関数の実行はバックグラウンドで開始されます。
実行を監視する
タイマーによってトリガーされる関数のコード + テストの [ログ] ペインに戻ります。 ログには、関数の実行メッセージとランタイム メッセージが表示されます。 ランタイム ログ レベルによっては、モデルとツールのアクティビティも表示される場合があります。
また、Application Insights を使用して、テレメトリが取り込まれた後の実行を確認することもできます。
関数アプリの左側のメニューで、[ Application Insights] を選択します。
関連付けられている Application Insights リソースを開きます。
トランザクション検索またはログを使用して、関数を手動で実行したときに開始された実行を見つけます。
関数の実行が正常に完了したことがログに表示されたら、実行は完了です。 電子メール配信が有効になっていて、Microsoft 365 Outlook接続が承認されている場合は、受信者の受信トレイでMicrosoftブログ ダイジェストを確認します。 それ以外の場合は、最終応答を関数ログやアプリケーションインサイトで確認してください。
リソースをクリーンアップする
完了したら、次のコマンドを使用して、関数アプリと関連リソースをAzureから削除します。
azd down