次の方法で共有


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

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

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

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 サービス チャット履歴ストレージのサポート カスタム チャット履歴ストレージのサポート
Azure AI Foundry Agent Azure AI Foundry Agents Service をバックエンドとして使用するエージェント。 イエス いいえ
Azure AI Foundry Models ChatCompletion 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 AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)

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

AIAgent agent = client
    .GetChatClient(model)
    .CreateAIAgent(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 AzureCliCredential())
     .GetChatClient(deploymentName)
     .CreateAIAgent(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 AzureCliCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
    model: deploymentName,
    name: "Joker",
    instructions: "You are good at telling jokes.");

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

Agent Framework を使用すると、さまざまな推論サービスに基づいて簡単なエージェントを簡単に作成できます。 チャット クライアントの実装を提供する推論サービスを使用して、これらのエージェントを構築できます。

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

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

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

from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with (
    DefaultAzureCredential() as credential,
    ChatAgent(
        chat_client=AzureAIAgentClient(async_credential=credential),
        instructions="You are a helpful assistant"
    ) as agent
):
    response = await agent.run("Hello!")

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

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

async with DefaultAzureCredential() as credential:
    agent = AzureAIAgentClient(async_credential=credential).create_agent(
        instructions="You are a helpful assistant"
    )

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

サポートされるエージェントの種類

基になる推論サービス Description サポートされているサービス チャット履歴ストレージ サポートされているカスタム チャット履歴ストレージ
Azure AI エージェント Azure AI Agents Service をバックエンドとして使用するエージェント。 イエス いいえ
Azure OpenAI チャットの完了 Azure OpenAI チャット補完サービスを使用するエージェント。 いいえ イエス
Azure OpenAI 応答 Azure OpenAI Responses サービスを使用するエージェント。 イエス イエス
OpenAI チャットの完了 OpenAI チャット完了サービスを使用するエージェント。 いいえ イエス
OpenAI 応答 OpenAI 応答サービスを使用するエージェント。 イエス イエス
OpenAI アシスタント OpenAI Assistants サービスを使用するエージェント。 イエス いいえ
他のチャットクライアント 他のチャット クライアント実装を使用してエージェントを作成することもできます。 場合により異なる 場合により異なる

関数ツール

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

from typing import Annotated
from pydantic import Field
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureAIAgentClient

def get_weather(location: Annotated[str, Field(description="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,
    AzureAIAgentClient(async_credential=credential).create_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather
    ) as agent
):
    response = await agent.run("What's the weather in Seattle?")

関数ツールの完全な例については、以下を参照してください。

ストリーミング応答

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

# 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_stream("What's the weather like in Portland?"):
    if chunk.text:
        print(chunk.text, end="", flush=True)

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

コード インタープリター ツール

Azure AI エージェントは、Python コードを実行するためのホストされたコード インタープリター ツールをサポートします。

from agent_framework import ChatAgent, HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with (
    DefaultAzureCredential() as credential,
    ChatAgent(
        chat_client=AzureAIAgentClient(async_credential=credential),
        instructions="You are a helpful assistant that can execute Python code.",
        tools=HostedCodeInterpreterTool()
    ) as agent
):
    response = await agent.run("Calculate the factorial of 100 using Python")

コード インタープリターの例については、次を参照してください。

カスタム エージェント

また、チャット クライアントのラッパーだけでなく、完全にカスタムのエージェントを作成することもできます。 Agent Framework には、 AgentProtocol プロトコルと BaseAgent 基本クラスが用意されています。これを実装/サブクラス化すると、エージェントの動作と機能を完全に制御できます。

from agent_framework import BaseAgent, AgentRunResponse, AgentRunResponseUpdate, AgentThread, ChatMessage
from collections.abc import AsyncIterable

class CustomAgent(BaseAgent):
    async def run(
        self,
        messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
        *,
        thread: AgentThread | None = None,
        **kwargs: Any,
    ) -> AgentRunResponse:
        # Custom agent implementation
        pass

    def run_stream(
        self,
        messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
        *,
        thread: AgentThread | None = None,
        **kwargs: Any,
    ) -> AsyncIterable[AgentRunResponseUpdate]:
        # Custom streaming implementation
        pass