Agent Framework では、エージェント機能を拡張するさまざまな種類のツールがサポートされています。 ツールを使用すると、エージェントは外部システムとの対話、コードの実行、データの検索などを行うことができます。
ツールの種類
| ツールの種類 | Description |
|---|---|
| 関数ツール | エージェントが会話中に呼び出すことができるカスタム コード |
| コード インタープリター | サンドボックス環境でコードを実行する |
| ファイル検索 | アップロードしたファイルを検索する |
| Web 検索 | Web で情報を検索する |
| ホストされている MCP ツール | プロバイダー ランタイムによって呼び出された MCP サーバー |
| ローカル MCP ツール | ローカルまたはカスタム ホスト上で実行されている MCP サーバー |
| Foundry ツールボックス | Foundry プロジェクトで管理される、ホストされているツール構成の名前付きバージョン付きバンドル |
| ツールの種類 | Description |
|---|---|
| 関数ツール | エージェントが会話中に呼び出すことができるカスタム コード |
| コード インタープリター | サンドボックス環境でコードを実行する |
| ファイル検索 | アップロードしたファイルを検索する |
| Web 検索 | Web で情報を検索する |
| ホストされている MCP ツール | プロバイダー ランタイムによって呼び出された MCP サーバー |
| ローカル MCP ツール | ローカルまたはカスタム ホスト上で実行されている MCP サーバー |
| Foundry ツールボックス | Foundry プロジェクトで管理される、ホストされているツール構成の名前付きバージョン付きバンドル |
| 画像生成 | Foundry/OpenAI Responses ランタイムでのホストされたイメージの生成 |
| Shell | OpenAI 応答ランタイムでのホストシェルの実行 - GitHub Copilot CLI の組み込みのシェル/ファイル/URL ランタイム ツールとは異なります |
| Bingグラウンディング | Bing Search リソースを使用した独自の Grounding を使用した Web グラウンド — 試験段階 |
| Bingカスタム検索 | Bing、キュレーションされたドメイン リストに限定された接地 - プレビュー |
| Azure AI 検索 | Foundry 接続を使用してAzure AI 検索インデックスのクエリを実行する (試験段階) |
| SharePoint | SharePointコンテンツの答え - プレビュー |
| Microsoft Fabric | Fabric データ エージェントのクエリを実行する - プレビュー |
| メモリ検索 | Foundry マネージド メモリ ストアを検索する - プレビュー |
| コンピュータ利用 | デスクトップ環境またはブラウザー環境を駆動する - プレビュー |
| ブラウザーの自動化 | Azure Playwright を使用してブラウザーを駆動する - プレビュー |
| エージェント対エージェント (A2A) ツール | Foundry エージェントからツールとしてリモート A2A エージェントを呼び出す - プレビュー |
注
試験段階またはプレビュー段階とマークされたツールは、関連するプロバイダー ページに文書化され、プロセスで初めて使用されるときにExperimentalWarningが出力されます。
ツールの承認
ツール承認 は、モデルが結果を受け取る前に、人間がループ内で決定することで、すべてのツール呼び出し (関数ツール、ホステッド ツール、MCP ツール呼び出し) をゲートできるフレームワーク機能です。 これは、.NETとPythonの両方でフレームワークの関数呼び出しチャット クライアントによって処理されるため、クライアントがツールをローカルで呼び出すプロバイダーで動作します。プロバイダーごとの機能ではありません。 承認がセッション、ストリーミング、ミドルウェアとやり取りする方法など、完全なパターンについては、「 ツールの承認」 ページを参照してください。
プロバイダー サポート マトリックス
OpenAI プロバイダーと Azure OpenAI プロバイダーは、それぞれ異なるツール機能を備えた 2 種類のクライアント (応答とチャットの完了) を提供します。 Azure OpenAI クライアントは、OpenAI に相当するものをミラー化します。 Copilot Studio および A2A エージェントはリモート サービスで実行されるため、エージェント フレームワーク クライアントを介してではなく、リモート エージェントで機能が構成されます。これらはマトリックスに一覧表示されません。
| ツールの種類 | 応答 | チャットの完了 | ファウンドリ | Anthropic | オラマ | GitHub Copilot |
|---|---|---|---|---|---|---|
| 関数ツール | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| コード インタープリター | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| ファイル検索 | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Web 検索 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ホストされている MCP ツール | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| ローカル MCP ツール | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
注
Responses および Chat Completion 列は、OpenAI と Azure OpenAI の両方に適用されます。Azureバリアントは、OpenAI 対応するツールサポートと同じツール サポートを反映しています。 非推奨の OpenAI Assistants API は文書化されなくなりました。移行ガイダンスについては、Semantic Kernel 移行ガイド を参照してください。
プロバイダー サポート マトリックス
OpenAI プロバイダーと Azure OpenAI プロバイダーはそれぞれ、異なるツール機能を備えた複数のクライアントの種類を提供します。 Azure OpenAI クライアントは、OpenAI に相当するものをミラー化します。 Foundry 列はFoundryChatClientに適用されます。FoundryAgentの場合、ツールは Foundry エージェント定義で構成されます (FoundryAgentの動作と機能しない機能を参照)。
Copilot Studio および A2A エージェントはリモート サービスで実行されるため、エージェント フレームワーク クライアントを介してではなく、リモート エージェントで機能が構成されます。これらはマトリックスに一覧表示されません。
| ツールの種類 | 応答 | チャットの完了 | ファウンドリ | Anthropic | オラマ | Foundry Local | GitHub Copilot |
|---|---|---|---|---|---|---|---|
| 関数ツール | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | ⚠️¹ | ✅ |
| コード インタープリター | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| ファイル検索 | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Web 検索 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 画像生成 | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
ホステッド シェル (get_shell_tool) |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 組み込みのシェル/ファイル システム/URL フェッチ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅² |
| ホストされている MCP ツール | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
| ローカル MCP ツール | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Foundry ツールボックス | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Bing接地 (試験段階) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Bing カスタム検索 (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Azure AI 検索 (試験段階) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| SharePoint (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Microsoft Fabric (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| メモリ検索 (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| コンピューターの使用 (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ブラウザーの自動化 (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| エージェント間 (A2A) ツール (プレビュー) | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
¹ 関数呼び出しをサポートする選択されたローカル モデルに依存します。
² GitHub Copilot CLI ランタイムに組み込まれており、アクセス許可ハンドラーによって制御されます。 OpenAI の get_shell_toolとは異なるサーフェス。
注
Responses および Chat Completion 列は、OpenAI と Azure OpenAI の両方に適用されます。Azureバリアントは、OpenAI 対応するツールサポートと同じツール サポートを反映しています。 ローカル MCP ツールは、関数ツールをサポートする任意のプロバイダーと連携します。
エージェントを関数ツールとして使用する
エージェントを別のエージェントの関数ツールとして使用して、エージェントの構成とより高度なワークフローを有効にすることができます。 内部エージェントは関数ツールに変換され、外部エージェントに提供され、必要に応じて呼び出すことができます。
.AsAIFunction()のAIAgentを呼び出して、別のエージェントに提供できる関数ツールに変換します。
// Create the inner agent with its own tools
AIAgent weatherAgent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
instructions: "You answer questions about the weather.",
name: "WeatherAgent",
description: "An agent that answers questions about the weather.",
tools: [AIFunctionFactory.Create(GetWeather)]);
// Create the main agent and provide the inner agent as a function tool
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
instructions: "You are a helpful assistant.",
tools: [weatherAgent.AsAIFunction()]);
// The main agent can now call the weather agent as a tool
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));
Warnung
DefaultAzureCredential は開発には便利ですが、運用環境では慎重に考慮する必要があります。 運用環境では、待機時間の問題、意図しない資格情報のプローブ、フォールバック メカニズムによる潜在的なセキュリティ リスクを回避するために、特定の資格情報 ( ManagedIdentityCredential など) を使用することを検討してください。
エージェント .as_tool() 呼び出して、別のエージェントに提供できる関数ツールに変換します。
import os
from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential
# Create the inner agent with its own tools
weather_agent = OpenAIChatCompletionClient(
model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
credential=AzureCliCredential(),
).as_agent(
name="WeatherAgent",
description="An agent that answers questions about the weather.",
instructions="You answer questions about the weather.",
tools=get_weather
)
# Create the main agent and provide the inner agent as a function tool
main_agent = OpenAIChatCompletionClient(
model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
credential=AzureCliCredential(),
).as_agent(
instructions="You are a helpful assistant.",
tools=weather_agent.as_tool()
)
# The main agent can now call the weather agent as a tool
result = await main_agent.run("What is the weather like in Amsterdam?")
print(result.text)
ツール名、説明、引数名をカスタマイズすることもできます。
weather_tool = weather_agent.as_tool(
name="WeatherLookup",
description="Look up weather information for any location",
arg_name="query",
arg_description="The weather query or location"
)