Microsoft Agent Framework では、Microsoft Foundry プロジェクト エンドポイントからの直接モデル推論がサポートされますが、アプリケーションはエージェント定義、ツール、オーケストレーションを所有しています。
サービス管理の Prompt エージェントと Hosted Agents については、「foundry Agent Service Microsoft」を参照してください。
はじめに
必要な NuGet パッケージをプロジェクトに追加します。
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
2 つの統合パターン
Microsoft Foundry 統合では、次の 2 つの異なる使用パターンが公開されています。
| Pattern | 生成された型 | Description | 次の場合に使用します。 |
|---|---|---|---|
| 応答エージェント | ChatClientAgent |
アプリは、 AIProjectClient.AsAIAgent(...)を介して実行時にモデル、命令、ツールをプログラムで提供します。 サーバー側エージェント リソースは作成されません。 |
エージェント定義を所有しており、シンプルで柔軟なセットアップが必要です。 これは、ほとんどのサンプルで使用されるパターンです。 |
| Foundry エージェント (プロンプトまたはホスト) | FoundryAgent |
サーバー管理 — プロンプト エージェントは名前付きおよびバージョン管理された定義です。ホストされるエージェントは、エージェント固有のエンドポイントを介して到達するデプロイ済みアプリケーションです。 | Foundry は、エージェント定義またはホストされたランタイムを所有します。 Foundry エージェント サービスMicrosoft参照してください。 |
応答エージェント (直接推論)
AsAIAgentのAIProjectClientをモデルと命令と共に直接使用します。 これは、ほとんどのシナリオで推奨される開始点です。
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
name: "Joker",
instructions: "You are good at telling jokes.");
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
Warning
DefaultAzureCredential は開発には便利ですが、運用環境では慎重に考慮する必要があります。 運用環境では、待機時間の問題、意図しない資格情報のプローブ、フォールバック メカニズムによる潜在的なセキュリティ リスクを回避するために、特定の資格情報 ( ManagedIdentityCredential など) を使用することを検討してください。
このパスはコード優先であり、サーバーマネージド エージェント リソースは作成しません。
エージェントの使用
応答エージェントは標準の AIAgent であり、セッション、ツール、ミドルウェア、ストリーミングをサポートします。
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine(await agent.RunAsync("Tell me a joke.", session));
Console.WriteLine(await agent.RunAsync("Now make it funnier.", session));
エージェントを実行して操作する方法の詳細については、 エージェントの概要に関するチュートリアルを参照してください。
Tools
AIProjectClient.AsAIAgent(...)から作成された Foundry Responses エージェントは、標準の Agent Framework ツール サーフェイスをサポートします。 完全な機能マトリックスについては、 ツールの概要 を参照してください。
| ツール | Notes |
|---|---|
| 関数ツール | Supported. |
| ツールの承認 | Supported. フレームワークの関数呼び出しチャット クライアントによって提供されます。 |
| コード インタープリター | Supported. |
| ファイル検索 | Supported. |
| ホストされている MCP ツール | Supported. |
| ローカル MCP ツール | Supported. |
| Microsoft Foundry ツールボックス | Supported. |
Pythonのファウンドリー
Python では、Foundry 固有のすべてのクライアントが agent_framework.foundry の下に住むようになりました。
-
agent-framework-foundryは、cloud Foundry コネクタ (FoundryChatClient、FoundryAgent、FoundryEmbeddingClient、FoundryMemoryProvider) を提供します。 -
agent-framework-foundry-localは、ローカル モデルの実行にFoundryLocalClientを提供します。
Important
このページでは、Foundry プロジェクトとモデル エンドポイントMicrosoftについて説明します。 Foundry エージェント サービスについては、「Foundry Agent Service のMicrosoft」を参照してください。 スタンドアロンの Azure OpenAI リソース エンドポイント (https://<your-resource>.openai.azure.com) がある場合は、 OpenAI プロバイダー ページの Python ガイダンスを使用します。 サポートされているモデルをローカルで実行する場合は、 Foundry Local プロバイダーのページを参照してください。
Python での Foundry チャットとエージェント パターン
| シナリオ | Python図形 | 次の場合に使用します。 |
|---|---|---|
| Foundry Responses エンドポイントを使用したプレーン推論 | Agent(client=FoundryChatClient(...)) |
アプリはエージェント定義、ツール、会話ループを所有しており、Foundry プロジェクトにモデルをデプロイする必要があります。 |
| Foundry エージェント サービスにおけるサービス管理エージェント | FoundryAgent(...) |
Foundry ポータルまたはサービス API で作成および構成された PromptAgent または HostedAgent に接続する必要があります。 |
Installation
pip install agent-framework-foundry
同じ agent-framework-foundry パッケージには、Foundry モデルとエンドポイントの埋め込みの FoundryEmbeddingClient も含まれています。
Configuration
FoundryChatClient
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com"
FOUNDRY_MODEL="gpt-4o-mini"
FoundryEmbeddingClient
FOUNDRY_MODELS_ENDPOINT="https://<apim-instance>.azure-api.net/<foundry-instance>/models"
FOUNDRY_MODELS_API_KEY="<api-key>"
FOUNDRY_EMBEDDING_MODEL="text-embedding-3-small"
FOUNDRY_IMAGE_EMBEDDING_MODEL="Cohere-embed-v3-english" # optional
FoundryChatClient はプロジェクト エンドポイントを使用します。
FoundryEmbeddingClient では、個別のモデル エンドポイントが使用されます。
適切な Python クライアントを選択する
| シナリオ | 優先クライアント | Notes |
|---|---|---|
| Azure OpenAI リソース | OpenAIChatCompletionClient / OpenAIChatClient |
OpenAI プロバイダー ページを使用します。 |
| Microsoft Foundry プロジェクトの推論 | Agent(client=FoundryChatClient(...)) |
Foundry Responses エンドポイントを使用します。 |
| MicrosoftのFoundryサービス管理エージェント | FoundryAgent |
プロンプト エージェントと HostedAgents に推奨されます。 |
| Microsoft Foundry モデル- エンドポイント埋め込み | FoundryEmbeddingClient |
FOUNDRY_MODELS_ENDPOINTとFOUNDRY_EMBEDDING_MODEL / FOUNDRY_IMAGE_EMBEDDING_MODELを使用します。 |
| Foundry ローカル ランタイム | Agent(client=FoundryLocalClient(...)) |
Foundry Local を参照してください。 |
を使用してエージェントを作成する FoundryChatClient
FoundryChatClient は Foundry プロジェクト内のデプロイ済みモデルに接続し、Responses エンドポイントを使用します。 アプリが命令、ツール、セッション処理を所有する必要がある場合は、標準の Agent とペアリングします。
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-project.services.ai.azure.com",
model="gpt-4o-mini",
credential=AzureCliCredential(),
),
name="FoundryWeatherAgent",
instructions="You are a helpful assistant.",
)
FoundryChatClient は、直接推論用の Foundry 優先のPython パスであり、ツール、構造化出力、ストリーミングをサポートします。
Tools
FoundryChatClient は、ホストされている Foundry ツールごとに静的ファクトリ メソッドを提供します。 ファクトリは、tools=でAgentに渡すか、client.get_response(..., tools=[...])に直接渡す SDK ツール オブジェクトを返します。 サービス管理エージェント ツールについては、「Foundry Agent Service のMicrosoft」を参照してください。
ファクトリはクラス メソッドであるため、ツールを作成するためにインスタンスは必要ありません。
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
agent = Agent(
client=FoundryChatClient(credential=AzureCliCredential()),
instructions="You can search the web and run code.",
tools=[
FoundryChatClient.get_web_search_tool(),
FoundryChatClient.get_code_interpreter_tool(),
],
)
ツールのサポート
次の表に、Python FoundryChatClient が現在公開しているすべてのツールを示します。
| ツール | ファクトリオン FoundryChatClient |
地位 | Detail |
|---|---|---|---|
| 関数ツール | n/a — 任意の Python の callable または @ai_function を渡せます |
GA | Python プロセスでローカルに呼び出されます。 |
| ツールの承認 | n/a — 既存のツールをラップします | GA | ホストされている MCP および関数ツールで動作します。 |
| コード インタープリター | get_code_interpreter_tool |
GA | Foundry でのサンドボックス化されたコード実行。 |
| ファイル検索 | get_file_search_tool |
GA | Foundry ベクター ストアを使用してアップロードされたファイルを検索します。 |
| Web 検索 | get_web_search_tool |
GA | Microsoft が管理する Bing を利用した Web グラウンディング。 Azure OpenAI モデルのみ。 |
| 画像生成 | get_image_generation_tool |
GA | Foundry でホストされているイメージの生成。 |
| ホスト型MCP | get_mcp_tool |
GA | Foundry によって呼び出されたリモート MCP サーバー。 |
| ローカル MCP | n/a — 使用 MCPStreamableHTTPTool / MCPStdioTool |
GA | プロセス内で実行されます。は、任意のクライアントで動作します。 |
| Microsoft Foundry ツールボックス |
MCPStreamableHTTPTool または FoundryToolbox |
ベータ |
FoundryChatClientから MCP 経由で利用され、FoundryAgent上でサーバー側に接続されます。 |
| Bingグラウンディング | get_bing_grounding_tool |
Experimental | Bing Search リソースを使用した Bring Your Own Grounding。 |
| Bingカスタム検索 | get_bing_custom_search_tool |
Preview | Bing のグラウンディングは、厳選されたドメイン リストに限定されます。 |
| Azure AI 検索 | get_azure_ai_search_tool |
Experimental | Foundry 接続を使用してAzure AI 検索インデックスを検索します。 |
| SharePoint | get_sharepoint_tool |
Preview | 回答をSharePoint のコンテンツに基づかせます。 |
| Microsoft Fabric | get_fabric_tool |
Preview | Fabric データ エージェントに対してクエリを実行します。 |
| メモリ検索 | get_memory_search_tool |
Preview | Foundry マネージド メモリ ストアを検索します。 |
| コンピュータ利用 | get_computer_use_tool |
Preview | エージェントがデスクトップまたはブラウザー環境を駆動できるようにします。 |
| ブラウザーの自動化 | get_browser_automation_tool |
Preview | Azure Playwright 接続を介してブラウザーを駆動します。 |
| エージェント間通信(A2A) | get_a2a_tool |
Preview | 別の A2A エージェントをツールとして呼び出します。 |
Note
試験段階 のファクトリは GA Foundry SDK の種類をラップしますが、ラッパー自体は GA より前に変更される可能性があります。
プレビュー ファクトリは、基になる機能がプレビュー段階にあり、変更または削除される可能性がある Foundry SDK の種類をラップします。 どちらも、プロセスで初めて使用される ExperimentalWarning を出力します。
Web 検索バリアント
Foundry では、Bingに基づく 3 つの接地オプションが公開されています。 シナリオに一致するものを選択します。
-
get_web_search_tool(GA) — セットアップ不要の既定値; Microsoft が管理する Bing リソース。 Azure OpenAI モデルのみ。user_locationとsearch_context_sizeに制限されます。 -
get_bing_grounding_tool(試験段階) — Bing Search Azure リソースを使用して独自の Grounding を使用します。count、freshness、market、set_lang、および OpenAI Foundry 以外のモデルをサポートします。 -
get_bing_custom_search_tool(プレビュー)— 独自の Bing Custom Search インスタンスを使用して、グラウンディングを厳選したドメインのセットに制限します。
3 つすべてが、Azureコンプライアンス境界の外側に検索データを送信します。 完全な比較については、 Web グラウンドの概要 を参照してください。
client = FoundryChatClient(credential=AzureCliCredential())
# Default (GA): minimal configuration
web_search = client.get_web_search_tool(
user_location={"city": "Amsterdam", "country": "NL"},
search_context_size="medium",
)
イメージの生成
get_image_generation_tool は Foundry のホストイメージ生成ツールを構成します。 モデルは応答で画像コンテンツを生成します。管理する追加のファイルはありません。
image_gen = FoundryChatClient.get_image_generation_tool(
model="gpt-image-1",
size="1024x1024",
output_format="png",
quality="high",
)
Bing グラウンディング
get_bing_grounding_tool は、Grounding with Bing Search Foundry ツールをラップするものです。 自分で Bing Search リソースを使用して Grounding を作成し、Foundry プロジェクト接続として追加してから、接続 ID を渡します。
bing = FoundryChatClient.get_bing_grounding_tool(
connection_id="/subscriptions/.../connections/my-bing",
market="en-US",
freshness="Day",
count=10,
)
Bing カスタム検索
get_bing_custom_search_tool では、グラウンディングが Bing Custom Search リソースで定義された許可リストに制限されます。
bing_custom = FoundryChatClient.get_bing_custom_search_tool(
connection_id="/subscriptions/.../connections/my-bing-custom",
instance_name="docs-only",
market="en-US",
)
Azure AI 検索
get_azure_ai_search_tool を使用すると、エージェントは Foundry プロジェクト接続を介してAzure AI 検索インデックスに対してクエリを実行できます。
ai_search = FoundryChatClient.get_azure_ai_search_tool(
index_connection_id="/subscriptions/.../connections/my-search",
index_name="product-docs",
query_type="vector_semantic_hybrid",
top_k=5,
)
SharePoint
get_sharepoint_tool は、Foundry SharePoint 接続を介して到達可能なSharePointコンテンツの回答を根拠とします。
sharepoint = FoundryChatClient.get_sharepoint_tool(
connection_id="/subscriptions/.../connections/my-sharepoint",
)
Microsoft Fabric
get_fabric_tool は Foundry 接続を介してエージェントを Microsoft Fabric データ エージェントに接続し、エージェントがFabric データに関する質問に回答できるようにします。
fabric = FoundryChatClient.get_fabric_tool(
connection_id="/subscriptions/.../connections/my-fabric",
)
メモリ検索
get_memory_search_tool では、エージェントは、必要に応じてユーザーまたはテナントをスコープとする Foundry マネージド メモリ ストアを検索できます。
memory = FoundryChatClient.get_memory_search_tool(
memory_store_name="user-preferences",
scope="{{$userId}}",
)
コンピューターの使用
get_computer_use_tool は、コンピューター使用プレビュー ツールを構成します。モデルは、ポインターとキーボードの操作を発行することで、デスクトップまたはブラウザー環境を駆動できます。
computer = FoundryChatClient.get_computer_use_tool(
environment="browser",
display_width=1280,
display_height=800,
)
ブラウザー自動化
get_browser_automation_tool は、Foundry 接続を介してエージェントを Azure Playwright Testing リソースに接続します。 エージェントは、Playwright を介して実際のブラウザーを駆動できます。
browser = FoundryChatClient.get_browser_automation_tool(
connection_id="/subscriptions/.../connections/my-playwright",
)
エージェント間コミュニケーション (A2A)
get_a2a_tool は、Foundry エージェントが呼び出すことができるように、リモート A2A エージェントをツールとして公開します。 保存されている A2A 接続の base_url (および必要に応じて agent_card_path) または project_connection_id を指定します。
a2a = FoundryChatClient.get_a2a_tool(
base_url="https://remote-agent.example.com",
agent_card_path="/.well-known/agent-card.json",
)
A2A の検出、セッション、ストリーミングに関する一般的なガイダンスについては、 A2A エージェント サービスを参照してください。
を使用して埋め込みを作成する FoundryEmbeddingClient
Foundry モデル エンドポイントからテキストまたは画像を埋め込む場合は、 FoundryEmbeddingClient を使用します。
from agent_framework.foundry import FoundryEmbeddingClient
async with FoundryEmbeddingClient() as client:
result = await client.get_embeddings(["hello from Agent Framework"])
print(result[0].dimensions)
エージェントの使用
FoundryChatClientは、ツールの呼び出し、セッション、ストリーミング応答など、標準的なPython Agentエクスペリエンスと統合されます。 ローカル ランタイムの場合は、個別の Foundry ローカル プロバイダー ページを使用します。
ホストされているツール構成の名前付きバージョン付きバンドルについては、「Foundry ツールボックスMicrosoft参照してください。
Go の Foundry
Go SDK は、github.com/microsoft/agent-framework-go/provider/foundryproviderを通じてMicrosoft Foundry エージェントを提供します。
直接推論、関数ツール、ホステッド ツール、MCP、およびサーバー エージェントの例については、 Foundry Go のサンプル を参照してください。
このパッケージでは、次の 2 つのエージェント ターゲットがサポートされています。
| Target | Go の図形 | 次の場合に使用します。 |
|---|---|---|
| Projectに基づくモデルのデプロイ | foundryprovider.ModelDeployment("gpt-4o-mini") |
アプリは、命令、ツール、会話フローを所有しています。 |
| 既存のサーバー側 Foundry エージェント | foundryprovider.ServerAgent("my-agent") |
エージェント定義は Foundry で既に構成されています。 |
Configuration
Foundry プロジェクト のエンドポイントとモデルのデプロイを設定します。
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com/api/projects/<project-id>"
FOUNDRY_MODEL="gpt-4o-mini"
プロジェクトに紐づく Foundry エージェント
コードで Agent Framework エージェントを作成し、Go アプリケーションから命令、ツール、ミドルウェア、コンテキスト プロバイダーを渡す場合は、 ModelDeployment を使用します。
import (
"context"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
endpoint := os.Getenv("FOUNDRY_PROJECT_ENDPOINT")
model := os.Getenv("FOUNDRY_MODEL")
token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(err)
}
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are good at telling jokes.",
Config: agent.Config{
Name: "Joker",
},
},
)
resp, err := a.RunText(context.Background(), "Tell me a joke about a pirate.").Collect()
既存のサーバー側 Foundry エージェント
Foundry で既に構成されているエージェントを呼び出す場合は、 ServerAgent を使用します。 サーバー側エージェントは命令とツールを所有しているため、このターゲット AgentConfig.Instructions は無視されます。
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ServerAgent("my-agent"),
foundryprovider.AgentConfig{
Config: agent.Config{
Name: "my-agent",
},
},
)
resp, err := a.RunText(ctx, "Summarize the current project status.").Collect()
Tools
プロジェクトで支援される Foundry エージェントは、ローカル ツールおよびサポートされているホスト型ツールの宣言に対応する標準の Go Agent Framework ツール インターフェイスをサポートします。
| ツール | 地位 | Notes |
|---|---|---|
| 関数ツール | サポートされている | 関数は Go プロセスで実行されます。 |
| ツールの承認 | サポートされている | ツールの自動呼び出しループを介してローカル関数ツールを使用します。 |
| コード インタープリター | サポートされている |
&hostedtool.CodeInterpreter{} を使用してください。 |
| Web 検索 | サポートされている |
&hostedtool.WebSearch{} を使用してください。 |
| ローカル MCP ツール | サポートされている |
tool/mcptoolを使用して MCP サーバーに接続し、そのツールをローカルで公開します。 |
| ホストされている MCP ツール | Go Foundry については現在文書化されていません | Go Foundry エージェントで MCP サーバーが必要な場合は、ローカル MCP ツールを使用します。 |
| Microsoft Foundry ツールボックス | 現在、Go ヘルパーを介して公開されていません。 |
ローカル関数ツールの場合は、tool.Toolagent.Config.Tools値を追加します。
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
Tools: []tool.Tool{weatherTool},
},
},
)
ホストされたコードを実行する場合は、ホストされているツール宣言を渡します。
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You solve problems with code.",
Config: agent.Config{
Tools: []tool.Tool{&hostedtool.CodeInterpreter{}},
},
},
)
クライアント ヘッダーとサービス提供モデル
Foundry は、1 回の実行で x-client-* ヘッダーを受け入れます。
foundryprovider.WithClientHeaderまたはfoundryprovider.WithClientHeadersで追加します。
resp, err := a.RunText(
ctx,
"Hello!",
foundryprovider.WithClientHeader("x-client-scenario", "docs"),
).Collect()
Foundry が x-ms-served-model 応答ヘッダーを返すと、Go プロバイダーは応答に追加し、 ServedModelとして追加のプロパティを更新します。
if servedModel, ok := resp.AdditionalProperties["ServedModel"].(string); ok {
fmt.Println(servedModel)
}
Foundry メモリプロバイダー
Agent Framework エージェントで、実行ごとに Foundry 管理のメモリ ストアに対して取得と更新を行う場合は、foundryprovider.NewMemoryProvider を使用します。
import (
"log/slog"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
memoryProvider := foundryprovider.NewMemoryProvider(
endpoint,
tokenCredential,
"memory-store-sample",
func(*agent.Session) string { return "user-123" },
foundryprovider.MemoryProviderConfig{
Logger: slog.Default(),
},
)
a := foundryprovider.NewAgent(
endpoint,
tokenCredential,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "Use known memories about the user when responding.",
Config: agent.Config{
Name: "FoundryMemoryAgent",
ContextProviders: []agent.ContextProvider{memoryProvider},
},
},
)
エンドポイントはプロジェクト スコープMicrosoft Foundry エンドポイントである必要があり、メモリ ストアはそのプロジェクトに既に存在している必要があります。 スコープ コールバックは、安定したユーザー、テナント、または会話パーティション キーを返す必要があります。
Tip
完全な実行可能な例については、 Foundry memory Go サンプル を参照してください。
現在のGoのギャップ
Go のサポートには、現在、Foundry でホストされているデプロイ/ライフサイクル/管理 API、クライアントの埋め込み、または Foundry ツールボックス用の Go 固有のヘルパー Microsoft含まれていません。 これらの操作には Foundry ポータルまたはサービス SDK を使用します。