Microsoft Foundry モデル プロバイダー

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参照してください。

応答エージェント (直接推論)

AsAIAgentAIProjectClientをモデルと命令と共に直接使用します。 これは、ほとんどのシナリオで推奨される開始点です。

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 コネクタ ( FoundryChatClientFoundryAgentFoundryEmbeddingClientFoundryMemoryProvider) を提供します。
  • 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_ENDPOINTFOUNDRY_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_locationsearch_context_sizeに制限されます。
  • get_bing_grounding_tool (試験段階) — Bing Search Azure リソースを使用して独自の Grounding を使用します。 countfreshnessmarketset_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,
)

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",
)

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 を使用します。

次のステップ