ホストされるエージェントは、Foundry Agent Service でコードを実行します。 この記事では、そのコードを ツールボックス に接続して、エージェントが 1 つのモデル コンテキスト プロトコル (MCP) エンドポイントを介してツールボックス ツールを検出して呼び出します。
GitHub Copilotのようなコーディング エージェントを使用する場合、Microsoft Foundry Skill は、ホストされているエージェントをツールボックス エンドポイントに接続し、サンプルを独自のツールに適応するのに役立ちます。
前提条件
- 少なくとも 1 つのツールと既定のバージョンを含む ツールボックス 。
- デプロイされたモデルを含む Microsoft Foundry プロジェクト。
- ホステッド エージェント プロジェクト。 エージェントとツールボックスを一緒に作成するには、 ツールボックスのクイック スタートを完了します。
- Foundry プロジェクトにアクセスできる開発 ID。 サンプルを実行する前に、
az loginまたはazd auth loginを使用してローカルにサインインします。 - ツールボックス内の各ツールが利用するサービスに必要なアクセス許可。 OAuth または Microsoft Entra ID パススルーを使用するツールについては、エージェントをデプロイする前にツールボックス認証を確認してください。
ツールボックス エンドポイントを選択する
ツールボックスの default_versionに従う必要があるエージェントには、ツールボックス コンシューマー エンドポイントを使用します。
https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/mcp?api-version=v1
別のツールボックス バージョンを既定に昇格すると、このエンドポイントを使用するエージェントは、エンドポイントの変更や再デプロイなしで新しいバージョンを取得します。
バージョン固有の開発者エンドポイントは、昇格の前に変更できないバージョンをテストする必要がある場合にのみ使用します。
https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<toolbox-name>/versions/<version>/mcp?api-version=v1
ツールボックスに対してエージェントを認証する
エージェントは、Microsoft Entra ID とhttps://ai.azure.com/.default スコープを使用してツールボックス エンドポイントに対して認証を行います。 各ツールボックス ツールの接続によって、ダウンストリーム サービスに到達する ID または資格情報が決まります。
ダウンストリーム API キーまたは OAuth トークンをエージェント コードに含めないでください。 ツールボックス ツールが参照するプロジェクト接続でこれらの資格情報を構成します。 サポートされている認証の種類、同意、ロールの要件の詳細については、「 ツールボックス認証」を参照してください。
ホストされるエージェントを接続する
Microsoft Agent Framework を使用する
保守Pythonサンプルでは、Agent Framework ホスティング パッケージのFoundryToolboxを使用します。 クラスは、ツールボックスを TOOLBOX_ENDPOINTから、または FOUNDRY_PROJECT_ENDPOINT および TOOLBOX_NAMEから解決します。 また、MCP 要求を認証し、ホストされるランタイムの要求ごとの呼び出し ID を転送します。
サンプルを初期化する前に、Python 3.12 以降、Azure Developer CLI (azd) 1.25 以降、および microsoft.foundry 拡張機能をインストールしてください。
hosted-agent ツールボックス サンプルからプロジェクトを初期化します。
mkdir my-toolbox-agent && cd my-toolbox-agent azd ai agent init -m https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/agent-framework/responses/04-foundry-toolbox/azure.yamlツールボックス名を設定します。 このサンプルでは、プロジェクト エンドポイントと次の名前からコンシューマー エンドポイントを構築します。
azd env set TOOLBOX_NAME <toolbox-name>エージェントをローカルで実行します。
azd ai agent run別のターミナルで、エージェントがツールボックス ツールを検出したことを確認します。
azd ai agent invoke --local "List the tools you can use and briefly describe each one."
応答には、ツールボックスが MCP tools/listから返すツールが一覧表示されます。 応答にツールボックス ツールが含まれていない場合は、「接続のトラブルシューティング」を参照してください。
LangGraph を使用する
LangGraph を使用してホストエージェント コードをビルドする場合は、 AzureAIProjectToolbox を使用します。 統合により、ツールボックス ツールが LangChain ツールとして読み込み、コンシューマー エンドポイントへの認証が処理されます。
LangChain Azure統合とそのホスティング依存関係をインストールします。
pip install "langchain-azure-ai[hosting]>=1.2.8"hosted-agent 環境で
FOUNDRY_PROJECT_ENDPOINTを設定します。 ランタイムは、デプロイ後にこの値を提供します。 ローカル開発用に自分で設定します。ツールボックス名でツールを読み込みます。
import asyncio
from langchain_azure_ai.tools import AzureAIProjectToolbox
async def load_tools():
toolbox = AzureAIProjectToolbox(toolbox_name="<toolbox-name>")
tools = await toolbox.get_tools()
print("\n".join(tool.name for tool in tools))
asyncio.run(load_tools())
出力には、ツールボックスが MCP tools/listから返す名前が含まれています。
<tool-name>
<tool-name>
リファレンス:AzureAIProjectToolbox
- 読み込まれたツールを LangGraph エージェントに渡し、ツールボックス ツールのいずれかを必要とするプロンプトを実行します。 完全な実装については、 LangGraph ツールボックスのサンプルを参照してください。
Agent Framework Foundry ホスティング統合を使用して、名前でツールボックスを登録します。
AddFoundryToolboxes は、 FOUNDRY_PROJECT_ENDPOINTからコンシューマー エンドポイントを構築し、起動時に MCP tools/list を呼び出し、検出されたツールを各エージェント要求に追加します。
保守対象のサンプルを実行する前に、.NET 10 SDK とAzure CLIをインストールします。
パブリック ホスト型ツールボックス のサンプルから開始するか、Foundry ホスティング パッケージを既存の Agent Framework ホストに追加します。
ローカル開発用に次の環境変数を設定します。
AZURE_AI_PROJECT_ENDPOINT=https://<account>.services.ai.azure.com/api/projects/<project> AZURE_AI_MODEL_DEPLOYMENT_NAME=<model-deployment-name> TOOLBOX_NAME=<toolbox-name>Foundry は、デプロイされたコンテナーに
FOUNDRY_PROJECT_ENDPOINTを提供します。 ツールボックス名はTOOLBOX_NAMEのままにします。他のFOUNDRY_*変数名は、ホストされているランタイムによって予約されます。Program.csで、エージェントをAddFoundryResponsesに登録し、ツールボックスをAddFoundryToolboxes(credential, toolboxName)に登録します。 Web アプリケーションをビルドした後、MapFoundryResponsesする前にRunを呼び出します。 パブリック サンプルには、必要なインポート、パッケージ、エージェントの構築、および資格情報のセットアップが含まれています。ホストを起動し、ツールボックス ツールを必要とするプロンプトでホストを呼び出します。 ホストがツールボックス ツールを列挙できない場合、
/readinessエンドポイントは異常な状態を返します。
この記事のホスト型エージェント ツールボックスの統合は、Pythonと.NETで使用できます。 別のランタイムから MCP エンドポイントを呼び出すには、MCP Streamable HTTP クライアントを使用し、 https://ai.azure.com/.defaultのトークンを使用して認証し、ホステッド エージェント ランタイム コントラクトを実装します。
この記事のホスト型エージェント ツールボックスの統合は、Pythonと.NETで使用できます。 別のランタイムから MCP エンドポイントを呼び出すには、MCP Streamable HTTP クライアントを使用し、 https://ai.azure.com/.defaultのトークンを使用して認証し、ホステッド エージェント ランタイム コントラクトを実装します。
Microsoft Foundry Toolkit for Visual Studio Codeを使用して、ツールボックスに接続されているホストエージェント サンプルをスキャフォールディングします。
プロジェクトをスキャフォールディングする前に、Visual Studio Code、Microsoft Foundry Toolkit 拡張機能、およびプログラミング言語用の拡張パックをインストールします。
- アクティビティ バーで Foundry Toolkit を選択します。
- [ マイ リソース] でプロジェクトを展開し、[ ツール] を展開します。
- [ ツールボックス ] タブでツールボックスを見つけてから、[ コード テンプレートの生成 ] を選択します。
- コマンド パレットで、プロジェクト フォルダーを選択します。
- 生成された
README.mdを開き、ローカルでの実行とデプロイの手順を完了します。 - ツールボックス ツールが必要なプロンプトを実行し、エージェントが期待されるツールを呼び出していることを確認します。
ツールボックス名を、 FOUNDRY_PROJECT_ENDPOINTからコンシューマー エンドポイントを構築するホステッド エージェント サンプルに渡します。
これらのコマンドを実行する前に、Azure Developer CLI (azd) バージョン 1.25 以降と microsoft.foundry 拡張機能をインストールしてください。
ツールボックスとその現在の既定のバージョンを調べます。
azd ai toolbox show <toolbox-name> --output json出力では、
endpointプロパティが使用されます。 このコマンドによって返されるエンドポイントは、選択したバージョンを識別し、そのバージョンをテストするのに役立ちます。ツールボックス名を
azd環境に格納します。azd env set TOOLBOX_NAME <toolbox-name>ホストされるエージェントをローカルで実行するには、次のコマンドを使用します。
azd ai agent run代わりに、ホストされているエージェントをデプロイするには、次を使用します。
azd deploy
アプリケーションが完全な URL のみを受け入れる場合は、TOOLBOX_ENDPOINT を ツールボックス エンドポイントを選択 のバージョンなしのコンシューマー エンドポイントに設定してください。
ツールの承認を強制する
MCP tools/list によって返される各エントリには、 _meta.tool_configuration.require_approval 値を含めることができます。
| 価値 | 必要なランタイム動作 |
|---|---|
always |
提案されたツール名と引数をユーザーに表示し、明示的な承認を待ち、承認後にのみツールを呼び出します。 呼び出しごとにこのプロセスを繰り返します。 |
never |
承認プロンプトなしでツールを呼び出します。 |
ツールボックス MCP エンドポイントは、tools/callがrequire_approvalされている場合、alwaysをブロックしません。 エージェント ランタイムは、すべての呼び出しの前に設定を適用する必要があります。 システム プロンプト命令だけでは、承認は強制されません。
ランタイムが保留中のツール呼び出しを一時停止し、ユーザーの決定を収集し、その正確な呼び出しを再開または拒否できない限り、 require_approval: never を使用します。 ツールボックス ツールで値を構成するには、「ツールの 承認を構成する」を参照してください。
接続のトラブルシューティング
| 症状: | 原因と解決策 |
|---|---|
| エージェントはツールボックス ツールを返しません。 | ツールボックスに既定のバージョンがあり、ツールボックス名が一致し、エージェント ID が Foundry プロジェクトにアクセスできることを確認します。 |
| 起動または準備が失敗します。 | ツールボックスは、そのすべてのツール ソースをまとめて列挙します。 失敗した接続、使用できない MCP サーバー、または無効な許可されたツール名がないか、エージェント ログを確認します。 そのソースを修正または削除し、新しいバージョンを作成して公開します。 |
ツールは、 401 または 403を返します。 |
ツールのプロジェクト接続で構成されているエージェントからツールボックスへの ID とダウンストリーム認証を確認します。 これらは個別の承認境界です。 |
| ツールが同意を要求します。 | サインインしているユーザーに同意要求を返し、同意後に通話を再開します。 ツールボックス認証のテナントとロールの要件を確認します。 |
| バージョンの変更は表示されません。 | エージェントがバージョン管理されていないコンシューマー エンドポイントを使用していること、および目的のバージョンを default_versionに昇格したことを確認します。 |