Udostępnij przez


Typy agentów programu Microsoft Agent Framework

Program Microsoft Agent Framework zapewnia obsługę kilku typów agentów, aby uwzględnić różne przypadki użycia i wymagania.

Wszyscy agenci pochodzą z wspólnej klasy bazowej , AIAgentktóra zapewnia spójny interfejs dla wszystkich typów agentów. Dzięki temu można tworzyć wspólne, niezależne od agentów funkcje wyższego poziomu, takie jak koordynacje wielu agentów.

Ważne

Jeśli używasz programu Microsoft Agent Framework do tworzenia aplikacji działających z serwerami lub agentami innych firm, robisz to na własne ryzyko. Zalecamy przejrzenie wszystkich danych udostępnianych serwerom lub agentom innych firm i zapoznanie się z praktykami innych firm w zakresie przechowywania i lokalizacji danych. Twoim zadaniem jest zarządzanie tym, czy dane będą przepływać poza zgodność z Azure i granice geograficzne Twojej organizacji oraz zrozumienie wszelkich powiązanych skutków.

Proste agenty oparte na usługach wnioskowania

Struktura agentów ułatwia tworzenie prostych agentów na podstawie wielu różnych usług wnioskowania. Każda usługa wnioskowania zapewniająca implementację Microsoft.Extensions.AI.IChatClient może służyć do kompilowania tych agentów. Microsoft.Agents.AI.ChatClientAgent to klasa agenta używana do dostarczania agenta dla dowolnej implementacji IChatClient.

Te programy wspierają szeroką gamę funkcji dostępnych od razu:

  1. Wywoływanie funkcji
  2. Konwersacje wielowątkowe z zarządzaniem lokalną historią czatu lub zarządzanie historią czatu jako usługa
  3. Narzędzia dostarczane przez dostosowaną usługę (np. MCP, wykonywanie kodu)
  4. Strukturalne dane wyjściowe

Aby utworzyć jednego z tych agentów, po prostu skonstruuj ChatClientAgent używając wybranej implementacji IChatClient.

using Microsoft.Agents.AI;

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

Aby ułatwić tworzenie tych agentów dla wielu popularnych usług, mamy także asystentów. Aby uzyskać więcej informacji, zobacz dokumentację dla każdej usługi:

Podstawowa usługa inferencji Description Obsługiwane przechowywanie historii czatów serwisowych Obsługiwane niestandardowe przechowywanie historii czatów
Azure AI Foundry Agent Agent, który używa usługi Azure AI Foundry Agents Service jako zaplecza. Tak Nie.
Przygotowanie modelów ChatCompletion przy użyciu Azure AI Foundry Agent, który używa dowolnego z modeli wdrożonych w usłudze Azure AI Foundry Service jako zaplecza za pośrednictwem chatCompletion. Nie. Tak
Odpowiedzi modeli Azure AI Foundry Agent, który używa dowolnego z modeli wdrożonych w usłudze Azure AI Foundry Service jako zaplecza za pośrednictwem odpowiedzi. Nie. Tak
Azure OpenAI ChatCompletion Agent korzystający z usługi Azure OpenAI ChatCompletion. Nie. Tak
Odpowiedzi usługi Azure OpenAI Agent korzystający z usługi Azure OpenAI Responses. Tak Tak
OpenAI ChatCompletion Agent korzystający z usługi OpenAI ChatCompletion. Nie. Tak
Odpowiedzi openAI Agent korzystający z usługi Odpowiedzi OpenAI. Tak Tak
Asystenci openAI Agent korzystający z usługi OpenAI Assistants. Tak Nie.
Inne IChatClient Do utworzenia agenta można również użyć dowolnej innej Microsoft.Extensions.AI.IChatClient implementacji. Varies Varies

Złożeni agenci niestandardowi

Istnieje również możliwość utworzenia w pełni niestandardowych agentów, które nie są tylko obudowami wokół elementu IChatClient. Struktura agentów udostępnia typ podstawowy AIAgent. Ten typ podstawowy jest główną abstrakcją dla wszystkich agentów, która, gdy jest podklasowana, umożliwia pełną kontrolę nad zachowaniem i możliwościami agenta.

Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą agentów niestandardowych .

Proxy dla agentów zdalnych

Struktura agenta udostępnia gotowe AIAgent implementacje dla typowych protokołów agentów hostowanych przez usługę, takich jak A2A. Dzięki temu można łatwo nawiązać połączenie z agentami zdalnymi i korzystać z nich z poziomu aplikacji.

Aby uzyskać więcej informacji, zobacz dokumentację dla każdego typu agenta:

Protokół Description
A2A Agent, który służy jako serwer proxy agentowi zdalnemu za pośrednictwem protokołu A2A.

Dokumentacja opcji zestawu SDK platformy Azure i interfejsu OpenAI

W przypadku korzystania z usług Azure AI Foundry, Azure OpenAI lub OpenAI masz różne opcje zestawu SDK do łączenia się z tymi usługami. W niektórych przypadkach istnieje możliwość użycia wielu zestawów SDK do łączenia się z tą samą usługą lub używania tego samego zestawu SDK do łączenia się z różnymi usługami. Poniżej znajduje się lista różnych opcji dostępnych za pomocą adresu URL, którego należy użyć podczas nawiązywania połączenia z poszczególnymi. Pamiętaj, aby zastąpić <resource> i <project> rzeczywistymi nazwami zasobów i projektów.

Usługa sztucznej inteligencji SDK Nuget URL
Modele rozwiązania Azure AI Foundry Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Modele rozwiązania Azure AI Foundry Zestaw OpenAI SDK 3 Otwarta sztuczna inteligencja https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Modele rozwiązania Azure AI Foundry Azure AI Inference SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Agenci usługi Azure AI Foundry SDK usługi Azure AI dla agentów trwałych 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 Otwarta sztuczna inteligencja <https:// resource.openai.azure.com/openai/v1/>
OpenAI OpenAI SDK Otwarta sztuczna inteligencja Brak wymaganego adresu URL
  1. Aktualizacja z Azure OpenAI do Azure AI Foundry
  2. Zalecamy korzystanie z zestawu OpenAI SDK.
  3. Chociaż zalecamy używanie zestawu OpenAI SDK do uzyskiwania dostępu do modeli usługi Azure AI Foundry, modele usługi Azure AI Foundry obsługują modele od wielu różnych dostawców, a nie tylko openAI. Wszystkie te modele są obsługiwane za pośrednictwem zestawu OpenAI SDK.

Korzystanie z zestawu OpenAI SDK

Jak pokazano w powyższej tabeli, pakiet SDK OpenAI może służyć do łączenia się z wieloma usługami. W zależności od usługi, z którą nawiązujesz połączenie, może być konieczne ustawienie niestandardowego adresu URL podczas tworzenia elementu OpenAIClient. Można również użyć różnych mechanizmów uwierzytelniania w zależności od usługi.

Jeśli wymagany jest niestandardowy adres URL (zobacz tabelę powyżej), możesz ustawić go za pomocą elementu OpenAIClientOptions.

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

Podczas tworzenia klienta można użyć klucza interfejsu API.

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

W przypadku korzystania z usługi platformy Azure można również użyć poświadczeń platformy Azure zamiast klucza interfejsu API.

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

Po utworzeniu OpenAIClient możesz uzyskać podklienta dla konkretnej usługi, której chcesz użyć, a następnie utworzyć AIAgent na jego podstawie.

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

Korzystanie z zestawu Azure OpenAI SDK

Ten zestaw SDK może służyć do nawiązywania połączenia zarówno z usługami Azure OpenAI, jak i Azure AI Foundry Models. Tak czy inaczej, podczas tworzenia AzureOpenAIClientpliku należy podać prawidłowy adres URL usługi. Zapoznaj się z powyższą tabelą, aby uzyskać prawidłowy adres URL do użycia.

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

Korzystanie z zestawu SDK trwałych agentów usługi Azure AI

Ten zestaw SDK jest obsługiwany tylko w przypadku usługi Azure AI Foundry Agents. Zapoznaj się z powyższą tabelą, aby uzyskać prawidłowy adres URL do użycia.

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

Proste agenty oparte na usługach wnioskowania

Struktura agentów ułatwia tworzenie prostych agentów na podstawie wielu różnych usług wnioskowania. Każda usługa wnioskowania, która zapewnia implementację klienta czatu, może służyć do kompilowania tych agentów.

Te programy wspierają szeroką gamę funkcji dostępnych od razu:

  1. Wywoływanie funkcji
  2. Konwersacje wielowątkowe z zarządzaniem lokalną historią czatu lub zarządzanie historią czatu jako usługa
  3. Narzędzia dostarczane przez dostosowaną usługę (np. MCP, wykonywanie kodu)
  4. Strukturalne dane wyjściowe
  5. Odpowiedzi streamingowe

Aby utworzyć jednego z tych agentów, po prostu skonstruuj ChatAgent przy użyciu wybranej implementacji klienta czatu.

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

Alternatywnie możesz użyć metody wygody na kliencie czatu:

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

Szczegółowe przykłady można znaleźć w poniższych sekcjach dokumentacji specyficznych dla agenta.

Obsługiwane typy agentów

Podstawowa usługa inferencji Description Obsługiwane przechowywanie historii czatów serwisowych Obsługiwane niestandardowe przechowywanie historii czatów
Agent sztucznej inteligencji platformy Azure Agent, który używa usługi Azure AI Agents Service jako zaplecza. Tak Nie.
Kompletacja czatu Azure OpenAI Agent korzystający z usługi uzupełniania czatów Azure OpenAI. Nie. Tak
Odpowiedzi usługi Azure OpenAI Agent korzystający z usługi Azure OpenAI Responses. Tak Tak
Zakończenie czatu OpenAI Agent korzystający z usługi uzupełniania czatu OpenAI. Nie. Tak
Odpowiedzi openAI Agent korzystający z usługi Odpowiedzi OpenAI. Tak Tak
Asystenci openAI Agent korzystający z usługi OpenAI Assistants. Tak Nie.
Dowolny inny obiekt ChatClient Do utworzenia agenta można również użyć dowolnej innej implementacji klienta czatu. Varies Varies

Narzędzia funkcji

Możesz udostępnić agentom narzędzia funkcji na potrzeby rozszerzonych możliwości:

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

Aby zapoznać się z kompletnymi przykładami narzędzi funkcji, zobacz:

Odpowiedzi w strumieniowaniu

Agenci obsługują zarówno regularne, jak i przesyłane strumieniowo odpowiedzi:

# 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)

Aby zapoznać się z przykładami przesyłania strumieniowego, zobacz:

Narzędzia interpretera kodu

Agenci sztucznej inteligencji platformy Azure obsługują narzędzia interpretera kodu hostowanego do wykonywania kodu w języku 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")

Aby zapoznać się z przykładami interpretera kodu, zobacz:

Agenty niestandardowe

Istnieje również możliwość utworzenia w pełni niestandardowych agentów, które nie są po prostu nakładkami wokół klienta czatu. Struktura agenta udostępnia protokół i AgentProtocol klasę BaseAgent bazową, która po zaimplementowaniu/podklasie umożliwia pełną kontrolę nad zachowaniem i możliwościami agenta.

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