Azure OpenAI

Microsoft Agent Framework では、それぞれ異なるツール機能を持つ異なる API サーフェスを対象とする、2 種類の Azure OpenAI クライアントがサポートされています。 応答は推奨されるプライマリ クライアントです。ホストされているツールの完全なセットをサポートします。 広範なモデルの互換性が必要な場合、または既存のチャット補完の統合を維持する必要がある場合は、チャット補完を使用します。

クライアントの種類 API 最適な用途
応答 (推奨) Responses API ホストされたツール (コード インタープリター、ファイル検索、Web 検索、ホストされた MCP) を使用したフル機能のエージェント
チャットの完了 Chat Completions API 単純なエージェント、広範なモデルのサポート

Tip

直接の OpenAI 同等物 (OpenAIChatClientOpenAIChatCompletionClient) については、 OpenAI プロバイダーのページを参照してください。 ツールのサポートは同じです。

Note

Azure OpenAI Assistants API は非推奨です。 新しいコードでは、Responses クライアントを使用する必要があります。 既存の Assistants ベースのアプリから移行する場合は、Semantic Kernel移行ガイドを参照してください。

はじめに

必要な NuGet パッケージをプロジェクトに追加します。

dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease

すべての Azure OpenAI クライアントの種類は、最初に AzureOpenAIClientを作成します。

using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;

AzureOpenAIClient client = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new DefaultAzureCredential());

Warning

DefaultAzureCredential は開発には便利ですが、運用環境では慎重に考慮する必要があります。 運用環境では、待機時間の問題、意図しない資格情報のプローブ、フォールバック メカニズムによる潜在的なセキュリティ リスクを回避するために、特定の資格情報 ( ManagedIdentityCredential など) を使用することを検討してください。

レスポンスクライアント

Responses クライアントは推奨されるプライマリ クライアントであり、コード インタープリター、ファイル検索、Web 検索、ホステッド MCP など、豊富なツールサポートを提供します。

var responsesClient = client.GetResponsesClient();

AIAgent agent = responsesClient.AsAIAgent(
    model: "gpt-4o-mini",
    instructions: "You are a helpful coding assistant.",
    name: "CodeHelper");

Console.WriteLine(await agent.RunAsync("Write a Python function to sort a list."));

サポートされているツール: 関数ツール、ツール承認、コード インタープリター、ファイル検索、Web 検索、ホストされた MCP、ローカル MCP ツール。

チャット完了クライアント

チャット完了クライアントは、Chat Completions API を使用してエージェントを簡単に作成する方法を提供します。 広範なモデル互換性が必要な場合や、既存のチャット補完の統合が必要な場合に使用します。

var chatClient = client.GetChatClient("gpt-4o-mini");

AIAgent agent = chatClient.AsAIAgent(
    instructions: "You are good at telling jokes.",
    name: "Joker");

Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));

サポートされているツール: 関数ツール、Web 検索、ローカル MCP ツール。

アシスタントクライアント

Note

Azure OpenAI Assistants API は非推奨です。 Agent Framework はアシスタント クライアントを文書化しなくなりました。新しいコードには上記の Responses クライアントを使用します。 既存のアプリの移行については、Semantic Kernel移行ガイドを参照してください。

関数ツール

カスタム関数ツールは、任意の Azure OpenAI エージェントに提供できます。

using System.ComponentModel;
using Microsoft.Extensions.AI;

[Description("Get the weather for a given location.")]
static string GetWeather([Description("The location to get the weather for.")] string location)
    => $"The weather in {location} is cloudy with a high of 15°C.";

AIAgent agent = new AzureOpenAIClient(
    new Uri(endpoint),
    new DefaultAzureCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(instructions: "You are a helpful assistant", tools: [AIFunctionFactory.Create(GetWeather)]);

Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));

ストリーミング応答

await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
    Console.Write(update);
}

Tip

実行可能な完全な例については、 .NET サンプル を参照してください。

エージェントの使用

どちらのクライアントの種類でも、同じエージェント操作 (ストリーミング、スレッド、ミドルウェア) をサポートする標準の AIAgent が生成されます。

詳細については、 作業の開始に関するチュートリアルを参照してください。

Tools

Azure OpenAI .NET クライアントは、一致する OpenAI クライアントとツール サーフェイスを共有します。 クライアントごとの完全なマトリックスについては、OpenAI プロバイダー ページを参照してください。Responses と Chat Completion Azureバリアントは、直接 OpenAI に相当するものを反映しています。

ツール 応答 チャットの完了
関数ツール
ツールの承認
コード インタープリター
ファイル検索
Web 検索
ホストされている MCP ツール
ローカル MCP ツール

Note

ツール承認 はフレームワークの関数呼び出しチャット クライアントによって提供されるため、基になる API に関係なく、関数ツール呼び出しで機能します。

Python ガイダンス

Important

Python Azure OpenAI ガイダンスが OpenAI プロバイダー ページに表示されるようになりました。 このページは、OpenAIChatCompletionClientOpenAIChatClientOpenAIEmbeddingClient、デプロイ名からmodelへのマッピング、credentialazure_endpointなどの明示的な Azure ルーティング入力、Azure の選択後のapi_version構成、完全なbase_url URL に関するガイダンス.../openai/v1使用します。 OPENAI_API_KEYも存在する場合、明示的な Azure ルーティング入力を渡さない限り、汎用クライアントは OpenAI にとどまります。 AZURE_OPENAI_*設定のみが存在する場合、Azure 環境フォールバックは引き続き機能します。 古い Python AzureOpenAI* 互換性クラスは現在の agent_framework.azure 名前空間から削除されているため、古いコードを agent_framework.openaiに移行します。 新しい Python ソリューションの場合は、Azure OpenAI 固有のパスに留まるのではなく、Microsoft Foundry を使用してモデルをデプロイし、 FoundryChatClient でモデルに接続することをお勧めします。 代わりに Foundry プロジェクト エンドポイントまたは Foundry エージェント サービスが必要な場合は、 Foundry プロバイダーのページを参照してください。 より広範な移行チェックリストについては、 Python の重要な変更ガイドを参照してください。

Tools

Python Azure OpenAI では、直接 OpenAI と同じ agent_framework.openai クライアントが使用されるため、ツール サーフェイスは同じです。 クライアントごとの完全なマトリックスについては、「 OpenAI プロバイダー」ページの「ツール」セクション を参照してください。

Azure OpenAI

Go では、Azure OpenAI は、直接 OpenAI と同じopenaiprovider パッケージを使用し、Azure固有のクライアント初期化を行います。

Installation

go get github.com/microsoft/agent-framework-go

Azure OpenAI エージェントを作成する

import (
    "cmp"
    "fmt"
    "os"

    "github.com/microsoft/agent-framework-go/agent"
    "github.com/microsoft/agent-framework-go/provider/openaiprovider"

    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    openai "github.com/openai/openai-go/v3"
    "github.com/openai/openai-go/v3/azure"
)

endpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
deployment := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
apiVersion := cmp.Or(os.Getenv("AZURE_OPENAI_API_VERSION"), "2025-01-01-preview")

token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
    panic(err)
}

a := openaiprovider.NewChatCompletionsAgent(
    openai.NewClient(
        azure.WithEndpoint(endpoint, apiVersion),
        azure.WithTokenCredential(token),
    ),
    openaiprovider.AgentConfig{
        Model: deployment,
        Instructions: "You are a helpful assistant.",
        Config: agent.Config{
            Name:         "AzureAgent",
        },
    },
)

resp, err := a.RunText(ctx, "Hello!").Collect()

Warning

azidentity.NewDefaultAzureCredential は開発には便利ですが、運用環境では慎重に考慮する必要があります。 運用環境では、待機時間の問題、意図しない資格情報のプローブ、フォールバック メカニズムによる潜在的なセキュリティ リスクを回避するために、 azidentity.NewManagedIdentityCredentialなどの特定の資格情報を使用することを検討してください。

Responses API を使用する

Azure OpenAI デプロイで Responses API がサポートされている場合は、同じAzure構成済みの OpenAI クライアントでopenaiprovider.NewResponsesAgentを使用します。

responsesAgent := openaiprovider.NewResponsesAgent(
    openai.NewClient(
        azure.WithEndpoint(endpoint, apiVersion),
        azure.WithTokenCredential(token),
    ),
    openaiprovider.AgentConfig{
        Model: deployment,
        Instructions: "You are a helpful assistant.",
        Config: agent.Config{
            Name: "AzureResponsesAgent",
        },
    },
)

response, err := responsesAgent.RunText(ctx, "Summarize the latest deployment status.").Collect()
if err != nil {
    return err
}
fmt.Println(response.String())

環境変数

Variable 説明
AZURE_OPENAI_ENDPOINT お使いの Azure OpenAI リソースのエンドポイント
AZURE_OPENAI_DEPLOYMENT_NAME デプロイ/モデル名
AZURE_OPENAI_API_VERSION API のバージョン (例: 2025-01-01-preview)

Tip

完全な例については、Azure OpenAI Chat Completions のサンプルResponses のサンプルを参照してください。

次のステップ