Azure Functions でホストされるスキル

Azure Functions でホストされるスキルは、Azure Functions 上でクラウドでホストされるイベント駆動型のインテリジェントな機能を構築するためのプログラミング モデルです。 Markdown、自然言語命令、宣言的設定で挙動を定義します。 Azure Functionsのトリガーやバインディングを通じてホストされたスキルをアプリケーションに統合したり、必要に応じて自分のコードをツールとして持ち込むこともできます。

Important

Azure Functions Hosted Skillsは現在プレビュー中です。 機能、構成名、およびサポートされているコネクタは、一般公開前に変更される可能性があります。

Azure Functionsのホスト型スキルアプリは、ホスト型スキルプログラミングモデルを使用する関数型アプリです。 .agent.mdファイルに定義されたAIタスクが含まれており、タスクはオプションでSKILL.mdファイルの再利用可能なMarkdownガイダンスを利用できます。 この記事では、 ホストスキル はプログラミングモデルを指し、 タスク は個別の実行可能なユニットを 指し、 スキルは再利用可能なMarkdownガイダンスを指します。

Scenarios

Azure Functions ホスティングスキルは、イベント駆動型でツール豊富なAIワークロードに最適です。 一般的なシナリオは次のとおりです。

  • リクエストを受け取り、ツールを呼び出し、構造化された応答を返すHTTPタスク
  • 日々のレポート、ダイジェスト、クリーンアップ、または照合ワークフローを実行するスケジュールされたタスク
  • モデルの推論やツール呼び出しが必要な作業項目を処理するタスクをキューイングやメッセージで処理します。
  • 新しいファイルや変更されたファイル、レコード、データベースの行に反応するデータ変更タスク
  • 管理されたコネクターからのイベントに反応するコネクタトリガータスク(Teamsメッセージ、Outlookメール、カレンダーイベントなど)。

Tip

Azure Functions ホストスキルを試すには、「Azure Functions hosted skills でイベント駆動型AIアプリを作る」をご覧ください。 azdテンプレートを使えば、動作するアプリを数分でAzureに展開できます。

なぜAIアプリでFunctionsを使うのか?

本番のAIワークロードには、プロンプトやモデル以上のものが必要です。 作業を開始する、外部システムを呼び出す、会話履歴を保持する、信頼できないコードを安全に実行する、シークレットなしで認証する、テレメトリを出力する、オンデマンドでスケーリングする信頼性の高い方法が必要です。

Functionsはこれらの運用上の課題に対してイベント駆動型の計算モデルを提供します。 Azure Functionsのホストスキルは、同じモデルをAIコードに適用します。 そのメリットは次のとおりです。

  • AIタスクが作業単位です。 各タスクは宣言型設定と自然言語命令を備えた別個の .agent.md ファイルで定義されています。
  • イベントがタスクを始める。 関数はスケジュール、HTTPリクエスト、キューメッセージ、ブロブの変更、イベントグリッドイベント、Service Busメッセージ、その他対応イベントからAIタスクを起動します。
  • 機能は、必要なときにコードを使用して最初に構成されます。 タスクはリモートMCPサーバー、コネクターネームスペースでホストされたMCPサーバー、スキル、サンドボックス化されたコード実行に設定できます。 アプリ固有のロジック用に自分でPythonベースのツールを書いてみてください。
  • Azure Functionsホスティングは内蔵されています。 Azure Functionsのホストスキルは、Flex ConsumptionPremium専用(App Service)プランをサポートしています。 Flex Consumptionはスケール・トゥ・ゼロ、秒単位請求、自動スケーリングを提供します。 すべてのプランはマネージドID、仮想ネットワーク統合、アプリケーションインサイトをサポートしています。
  • 配管の運用はあなたの代わりに対応します。 ランタイムはタスク発見、トリガー登録、ツールアセンブリ、セッション履歴、オプションの組み込みエンドポイントを管理します。

他のMicrosoft AIプラットフォームとも連携

Azure Functionsのホスティングスキルは、他のMicrosoft AI製品と補完的であり、併用可能です。 彼らの得意分野は、Azure Functions上でクラウドホスト型のイベント駆動型インテリジェント機能を構築し、親しみやすいプログラミングモデルで構築することです。 ホストスキルはHTTPやMCPを通じて他のアプリケーション、エージェント、エージェントハーネスで利用できる機能を公開できます。

あなたのシナリオに最適なAzure機能を選択してください:

Scenario Option
決定論的関数を別のAIクライアントのツールとして公開する Azure Functions MCP 拡張機能
人による承認を含む、長時間実行される多段階のオーケストレーション Durable Functions
カスタムホスティングなしでAIエージェントを作成・管理 Microsoft FoundryまたはCopilot Studio

Projectの定義

Azure Functionsのホスト型スキルアプリは、標準的なPython v2関数アプリプロジェクトであり、ランタイム固有のファイルとともにデプロイされます。 以下のプロジェクトファイルは、Python関数アプリで常に必要です:

File Purpose
function_app.py create_function_app() をインポートし、構成されたAzure Functions アプリを返します。
host.json Azure Functions ホストを構成します。
requirements.txt ホストされたSkillsランタイムパッケージと、アプリ固有のPython依存関係が含まれています。

詳細については、PythonアプリのAzure Functions開発者参考ガイドをご覧ください。

エージェントランタイムファイル

ランタイムはこれらのファイルやフォルダを発見し、アプリプロジェクトとともにデプロイします:

ファイルまたはフォルダー Purpose
*.agent.md AIタスクを定義します。 YAMLのフロントマターがタスクを設定し、マークダウンの本文が指示となります。 プロジェクトには少なくとも1つの .agent.md ファイルが必要です。
agents.config.yaml (任意)モデル、タイムアウト、サンドボックス設定などのアプリ全体のランタイムデフォルトを定義します。
mcp.json AIタスクがツールとして使用できるリモートHTTP MCPサーバーを定義し、メール送信やTeamsの操作などの操作のためのコネクタツールも含まれます。
tools/ (任意)MCPサーバー、接続、スキル、サンドボックス実行などで提供されていない機能を提供するために作成したカスタムPythonツールが含まれています。
skills/ (任意)必要に応じてAIタスクが読み込める再利用可能な SKILL.md プロンプトアセットが含まれています。

.agent.md ファイルは、YAML フロントマターの後に Markdown の指示が続く構成になっています。 この例は、毎日午後3時(UTC)に実行されるタイマートリガー型AIタスクを定義しています:

---
name: Daily Tech News Email
description: Fetches top tech news and emails a summary daily.

trigger:
  type: timer_trigger
  args:
    schedule: "0 0 15 * * *"
---

You are a news assistant. When triggered, do the following:

1. Gather today's top technology news from reputable sources.
1. Summarize the stories in a concise HTML email body.
1. Email the summary to $TO_EMAIL with the subject "Daily Tech News Summary".

冒頭部分では、タスクがどのように呼び出されるかを定義しています。 マークダウン本文は、実行時にランタイムがモデルに渡す命令ブロックです。 環境変数の置換により、命令と構成値は、 $TO_EMAILなどのアプリ設定を参照できます。

.agent.md ファイルは1つのAIタスクを定義しています。 ファイル名はAzure関数名と組み込みエンドポイントのルートセグメントを派生させます。 nameフィールドはログ、ラベル、ドキュメントの表示名です。

エージェントファイルフィールド、アプリ設定オプション、変数置換ルールの全リストについては、Azure Functions hosted skills referenceを参照してください。

アプリの起動プロセス

Functionsホストがアプリを読み込むと、 create_function_app メソッドはプロジェクト内の .agent.md ファイル、MCPサーバー、スキル、カスタムツールを発見します。 設定の検証、各タスクのツールの組み立て、必要なトリガーやエンドポイントの登録を行います。

トリガーが発動すると、ランタイムは解決された命令、モデル、ツール、セッション履歴とともにタスクを構築し、その後Microsoft Agent Frameworkを使って実行します。

イベントからAIタスクをトリガーします

ランタイムはアプリ内で複数のトリガーをサポートしていますが、 .agent.md ファイルごとにトリガーは1つだけです。 トリガー定義には、 typeargs オブジェクトがあります。 typeはトリガーバインディングを識別し、argsはどのイベントがAIタスクを開始するかを設定するトリガー固有の設定を含みます。

一般的なトリガー パターンは次のとおりです。

Pattern
HTTPタスク 要求を受信し、ツールを呼び出し、構造化された応答を返します。
スケジュールされたタスク 日次レポート、ダイジェスト、クリーンアップ、または調整ワークフローを実行します。
キューまたはメッセージタスク モデルの推論またはツール呼び出しを必要とする作業項目を処理します。
ストレージまたはデータベースイベントタスク 変更されたファイル、レコード、またはイベントに対応します。
コネクタによってトリガーされるタスク 管理型コネクター(Teamsメッセージ、Outlookメール、コネクターがサポートするカレンダーイベントなど)からのイベントに反応します。

トリガー設定の詳細、サポート型、args参照については、ホストされたスキルリファレンスAzure Functionsを参照してください。

対応AIツール

Azure Functionsのホストスキルは、いくつかの種類のツールをサポートしています。 まずは構成済みの機能を使用し、それらのオプションに収まらないアプリ固有のロジックにはカスタム Python ツールを使用します。

リモート MCP サーバー

mcp.jsonでリモートHTTPまたはストリーム可能なHTTP MCPサーバーを定義します。 ランタイムはこれらのサーバーを発見し、すべてのAIタスクにそのツールを利用可能にします。 タスクが他のサービスでホストされているツールを呼び出す必要がある場合や、アプリをまたいで機能を作成する必要がある場合には、リモートMCPサーバーを使用します。

Azure コネクタ

コネクターは、AIタスクがカスタムAPIクライアントコードなしで外部サービスと連携できるようにします。 コネクターネームスペースは、Microsoft 365 Outlook、Teams、Salesforce、SAP、SQLなどのサービスのための接続、トリガー、MCPサーバーをホストします。 コネクタトリガーを使って外部イベントからタスクを開始し、コネクタMCPツールを使ってタスク命令からサービスアクションを呼び出します。

スキル

再利用可能なプロンプトアセットを skills/ フォルダの下に保存してください。 各スキルフォルダには名前、説明、マークダウンの指示が記載された SKILL.md ファイルが含まれています。 ランタイムは自動的にスキルを発見し、AIタスクに利用可能にします。 スキルは基本的な指示を簡潔に保ちつつ、必要に応じてドメイン固有のガイダンスを提供できます。

サンドボックス実行

ランタイムはAzure Container Apps動的セッションを活用して、AIタスクに execute_python ツールを付与できます。 このツールはPythonを孤立したセッションプールで実行し、コード実行やデータ分析に便利です。 セッションプールエンドポイントを agents.config.yamlで設定してください。

カスタム Python ツール

アプリ固有の機能はカスタムPythonツールを使ってください。 .pyフォルダにtools/ファイルを追加し、実行時パッケージの@toolで関数を装飾します。 ランタイムはこれらのツールを自動的に発見し登録します。

各ツールタイプの設定詳細、フィールドテーブル、コード例については、Azure Functions Hosted skills referenceを参照してください。

セッションと状態

マルチターン対話にはセッション履歴が必要です。 Azureでは、ランタイムは関数アプリのAzureWebJobsStorageアカウントを通じてセッション履歴をBlob Storageに保存します。 ローカル開発の場合、ランタイムはファイルベースのセッション履歴にフォールバックされます。 サンドボックス実行はセッション認識も備えており、無関係な実行には分離されたセッションを使用します。

Observability

azure-functions-agents-runtime バージョン 0.1.0b6 以降、ランタイムには、現在も活発に開発中で今後変更される可能性があるオブザーバビリティ機能セットが含まれています。

最新の設定詳細、テレメトリフィールド、使用ガイダンスについては、ランタイムリポジトリのドキュメントをご利用ください: