次の方法で共有


Microsoft Agent Framework エージェントの種類

Microsoft Agent Framework では、さまざまなユース ケースと要件に対応するために、複数の種類のエージェントがサポートされています。

すべてのエージェントは、すべてのエージェントの種類に一貫性のあるインターフェイスを提供する共通の基底クラスである AIAgent から派生します。 これにより、マルチエージェント オーケストレーションなどの一般的なエージェントに依存しない、より高いレベルの機能を構築できます。

すべてのエージェントは、すべてのエージェントの種類に一貫性のあるインターフェイスを提供する共通の基底クラスである Agent から派生します。 これにより、マルチエージェント オーケストレーションなどの一般的なエージェントに依存しない、より高いレベルの機能を構築できます。

既定のエージェント ランタイム実行モデル

Microsoft Agent Framework 内のすべてのエージェントは、構造化ランタイム モデルを使用して実行されます。 このモデルは、決定論的ループでのユーザー操作、モデル推論、およびツールの実行を調整します。

AI エージェントの図

Important

Microsoft Agent Framework を使用して、サードパーティのサーバーまたはエージェントで動作するアプリケーションを構築する場合は、ご自身の責任で実行してください。 サードパーティのサーバーまたはエージェントと共有されているすべてのデータを確認し、データの保持と場所に関するサードパーティのプラクティスを認識することをお勧めします。 データが組織の Azure コンプライアンスと地理的境界の外に流れるかどうか、および関連する影響を管理するのは、お客様の責任です。

推論サービスに基づく単純なエージェント

Agent Framework を使用すると、さまざまな推論サービスに基づいて簡単なエージェントを簡単に作成できます。 Microsoft.Extensions.AI.IChatClient実装を提供する推論サービスを使用して、これらのエージェントを構築できます。 Microsoft.Agents.AI.ChatClientAgentは、IChatClient実装のエージェントを提供するために使用されるエージェント クラスです。

これらのエージェントは、すぐに使用できる幅広い機能をサポートします。

  1. 関数呼び出し。
  2. ローカルのチャット履歴管理またはサービスによって提供されるチャット履歴管理を用いた複数ターンの会話。
  3. カスタム サービスによって提供されるツール (MCP、コード実行など)。
  4. 構造化された出力。

これらのエージェントのいずれかを作成するには、選択したChatClientAgent実装を使用してIChatClientを構築するだけです。

using Microsoft.Agents.AI;

var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");

これらのエージェントをさらに簡単に作成できるように、Agent Framework には多くの一般的なサービスのヘルパーが用意されています。 詳細については、各サービスのドキュメントを参照してください。

基になる推論サービス Description サポートされているサービス チャット履歴ストレージ InMemory/カスタム チャット履歴ストレージがサポートされています
Azure AI Foundry Agent Azure AI Foundry Agents Service をバックエンドとして使用するエージェント。 イエス いいえ
Azure AIファウンドリモデルチャットコンプリション ChatCompletion 経由でバックエンドとして Azure AI Foundry Service にデプロイされたモデルのいずれかを使用するエージェント。 いいえ イエス
Azure AI Foundry モデルの応答 応答を介してバックエンドとして Azure AI Foundry Service にデプロイされたモデルのいずれかを使用するエージェント。 イエス イエス
Azure OpenAI ChatCompletion Azure OpenAI ChatCompletion サービスを使用するエージェント。 いいえ イエス
Azure OpenAI 応答 Azure OpenAI Responses サービスを使用するエージェント。 イエス イエス
OpenAI ChatCompletion OpenAI ChatCompletion サービスを使用するエージェント。 いいえ イエス
OpenAI 応答 OpenAI 応答サービスを使用するエージェント。 イエス イエス
OpenAI アシスタント OpenAI Assistants サービスを使用するエージェント。 イエス いいえ
その他 IChatClient 他の Microsoft.Extensions.AI.IChatClient 実装を使用してエージェントを作成することもできます。 場合により異なる 場合により異なる

複雑なカスタム エージェント

IChatClientのラッパーではなく、完全にカスタマイズされたエージェントを作成することもできます。 エージェント フレームワークは、 AIAgent 基本型を提供します。 この基本型は、すべてのエージェントのコア抽象化であり、サブクラス化すると、エージェントの動作と機能を完全に制御できます。

詳細については、 カスタム エージェントのドキュメントを参照してください。

リモート エージェントのプロキシ

Agent Framework は、A2A などの一般的なサービスホスト型エージェント プロトコルに対して、すぐに利用可能な AIAgent 実装を提供します。 これにより、アプリケーションからリモート エージェントに簡単に接続して使用できます。

詳細については、各エージェントの種類のドキュメントを参照してください。

プロトコル Description
A2A A2A プロトコルを介してリモート エージェントへのプロキシとして機能するエージェント。

Azure および OpenAI SDK のオプション リファレンス

Azure AI Foundry、Azure OpenAI、または OpenAI サービスを使用する場合、これらのサービスに接続するためのさまざまな SDK オプションがあります。 場合によっては、複数の SDK を使用して同じサービスに接続したり、同じ SDK を使用して異なるサービスに接続したりできます。 各 URL に接続するときに使用する必要があるさまざまなオプションの一覧を次に示します。 <resource><project>は、実際のリソース名とプロジェクト名に置き換えてください。

AI サービス SDK Nuget ウェブアドレス
Azure AI Foundry モデル Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource>.services.ai.azure.com/
Azure AI Foundry モデル OpenAI SDK 3 OpenAI https://ai-foundry-<resource>.services.ai.azure.com/openai/v1/
Azure AI Foundry モデル Azure AI 推論 SDK 2 Azure.AI.Inference https://ai-foundry-<resource>.services.ai.azure.com/models
Azure AI Foundry Agents Azure AI Persistent Agents SDK (Azure AI の永続エージェント用 SDK) Azure.AI.Agents.Persistent https://ai-foundry-<resource>.services.ai.azure.com/api/projects/ai-project-<project>
Azure OpenAI1 Azure OpenAI SDK 2 Azure.AI.OpenAI https://<resource>.openai.azure.com/
Azure OpenAI1 OpenAI SDK OpenAI https://<resource>.openai.azure.com/openai/v1/
OpenAI OpenAI SDK OpenAI URL は必要ありません
  1. Azure OpenAI から Azure AI Foundry へのアップグレード
  2. OpenAI SDK を使用することをお勧めします。
  3. OpenAI SDK を使用して Azure AI Foundry モデルにアクセスすることをお勧めしますが、Azure AI Foundry Models では、OpenAI だけでなく、さまざまなベンダーのモデルがサポートされています。 これらのモデルはすべて、OpenAI SDK を介してサポートされています。

OpenAI SDK の使用

上の表に示すように、OpenAI SDK を使用して複数のサービスに接続できます。 接続しているサービスによっては、 OpenAIClientの作成時にカスタム URL の設定が必要になる場合があります。 サービスに応じて異なる認証メカニズムを使用することもできます。

カスタム URL が必要な場合 (上記の表を参照)、OpenAIClientOptions を使用して設定できます。

var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };

クライアントの作成時に API キーを使用できます。

OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);

Azure サービスを使用する場合は、API キーの代わりに Azure 資格情報を使用することもできます。

OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)

Warnung

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

OpenAIClient を作成したら、使用する特定のサービスのサブ クライアントを取得し、そこから AIAgent を作成できます。

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

Azure OpenAI SDK の使用

この SDK を使用して、Azure OpenAI サービスと Azure AI Foundry Models サービスの両方に接続できます。 どちらの方法でも、 AzureOpenAIClientの作成時に正しいサービス URL を指定する必要があります。 正しく使用する URL については、上の表を参照してください。

AIAgent agent = new AzureOpenAIClient(
    new Uri(serviceUrl),
    new DefaultAzureCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Azure AI Persistent Agents SDK の使用

この SDK は、Azure AI Foundry Agents サービスでのみサポートされます。 正しく使用する URL については、上の表を参照してください。

var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
    model: deploymentName,
    name: "Joker",
    instructions: "You are good at telling jokes.");

推論サービスに基づく単純なエージェント

Agent Framework を使用すると、さまざまな推論サービスに基づいて簡単なエージェントを簡単に作成できます。 チャット クライアントの実装を提供する推論サービスを使用して、これらのエージェントを構築できます。 これを行うには、 SupportsChatGetResponseを使用して、クライアントが標準の Agent クラスで使用するためにサポートする必要があるメソッドの標準を定義します。

これらのエージェントは、すぐに使用できる幅広い機能をサポートします。

  1. 関数呼び出し
  2. ローカルチャット履歴管理またはサービスによるチャット履歴管理を用いた複数ターンの会話
  3. カスタム サービスによって提供されるツール (MCP、コード実行など)
  4. 構造化された出力
  5. ストリーミング応答

これらのエージェントのいずれかを作成するには、任意のチャット クライアント実装を使用して Agent を構築するだけです。

import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential

Agent(
    client=AzureOpenAIResponsesClient(credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")),
    instructions="You are a helpful assistant"
) as agent
response = await agent.run("Hello!")

または、チャット クライアントで便利な方法を使用することもできます。

from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential

agent = AzureOpenAIResponsesClient(async_credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")).as_agent(
    instructions="You are a helpful assistant"
)

この例では AzureOpenAIResponsesClient の使用を示していますが、同じパターンは、 SupportsChatGetResponseを実装するすべてのチャット クライアントに適用されます。他のクライアントの詳細については、 プロバイダーの概要 を参照してください。

詳細な例については、以下のエージェント固有のドキュメント セクションを参照してください。

サポートされているチャット プロバイダー

基になる推論サービス Description サポートされているサービス チャット履歴ストレージ
Azure AI Foundry Agent Azure AI Agents Service をバックエンドとして使用するエージェント。 イエス
Azure OpenAI チャットの完了 Azure OpenAI チャット補完サービスを使用するエージェント。 いいえ
Azure OpenAI 応答 Azure OpenAI Responses サービスを使用するエージェント。 イエス
Azure OpenAI Assistants Azure OpenAI Assistants サービスを使用するエージェント。 イエス
OpenAI チャットの完了 OpenAI チャット完了サービスを使用するエージェント。 いいえ
OpenAI 応答 OpenAI 応答サービスを使用するエージェント。 イエス
OpenAI アシスタント OpenAI Assistants サービスを使用するエージェント。 イエス
アントロピック クロード アントロピック クロード モデルを使用するエージェント。 いいえ
アマゾンの岩盤 Agent Framework Bedrock チャット クライアントを介して Amazon Bedrock モデルを使用するエージェント。 いいえ
GitHub Copilot GitHub Copilot SDK バックエンドを使用するエージェント。 いいえ
Ollama (OpenAI 互換) OpenAI 互換 API を介してローカルでホストされる Ollama モデルを使用するエージェント。 いいえ
他のチャットクライアント SupportsChatGetResponseの他の実装を使用して、エージェントを作成することもできます。 場合により異なる

カスタム チャット履歴ストレージは、セッションベースの会話状態がサポートされるたびにサポートされます。

ストリーミング応答

エージェントは、通常の応答とストリーミング応答の両方をサポートします。

# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)

# Streaming response (get results as they are generated)
async for chunk in agent.run("What's the weather like in Portland?", stream=True):
    if chunk.text:
        print(chunk.text, end="", flush=True)

ストリーミングの例については、次を参照してください。

その他の呼び出しパターンについては、「 エージェントの実行」を参照してください。

関数ツール

機能を強化するために、エージェントに関数ツールを提供できます。

import os
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient

def get_weather(location: Annotated[str, "The location to get the weather for."]) -> str:
    """Get the weather for a given location."""
    return f"The weather in {location} is sunny with a high of 25°C."

async with DefaultAzureCredential() as credential:
    agent = AzureOpenAIResponsesClient(
        async_credential=credential,
        project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
        deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"),
    ).as_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather,
    )
    response = await agent.run("What's the weather in Seattle?")

ツールとツール パターンについては、「ツールの 概要」を参照してください。

カスタム エージェント

完全にカスタムの実装 (決定論的エージェントや API に基づくエージェントなど) については、「 カスタム エージェント」を参照してください。 このページでは、SupportsAgentRunを使用したストリーミング更新プログラムなど、BaseAgentの実装やAgentResponseUpdateの拡張について説明します。

その他のエージェントの種類

Agent Framework には、次のようなプロトコルに基づくエージェントも含まれています。

エージェントの種類 Description
A2A リモート A2A 準拠エージェントに接続して呼び出すプロキシ エージェント。

次のステップ