Microsoft Agent Framework では、それぞれ異なるツール機能を持つ異なる API サーフェスを対象とする、2 種類の Azure OpenAI クライアントがサポートされています。 応答は推奨されるプライマリ クライアントです。ホストされているツールの完全なセットをサポートします。 広範なモデルの互換性が必要な場合、または既存のチャット補完の統合を維持する必要がある場合は、チャット補完を使用します。
| クライアントの種類 | API | 最適な用途 |
|---|---|---|
| 応答 (推奨) | Responses API | ホストされたツール (コード インタープリター、ファイル検索、Web 検索、ホストされた MCP) を使用したフル機能のエージェント |
| チャットの完了 | Chat Completions API | 単純なエージェント、広範なモデルのサポート |
Tip
直接の OpenAI 同等物 (OpenAIChatClient、 OpenAIChatCompletionClient) については、 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 プロバイダー ページに表示されるようになりました。 このページは、OpenAIChatCompletionClient、OpenAIChatClient、OpenAIEmbeddingClient、デプロイ名からmodelへのマッピング、credentialやazure_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 のサンプルを参照してください。