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.

Wszyscy agenci pochodzą z wspólnej klasy bazowej , Agentktó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.

Domyślny model wykonywania środowiska uruchomieniowego agenta

Agenci w programie Microsoft Agent Framework wykonują przy użyciu strukturalnego modelu środowiska uruchomieniowego. Ten model koordynuje interakcję użytkownika, wnioskowanie modelu i wykonywanie narzędzi w pętli deterministycznej.

Diagram agenta sztucznej inteligencji

Ważne

Jeśli używasz programu Microsoft Agent Framework do tworzenia aplikacji działających z serwerami lub agentami innych firm, możesz to zrobić 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 granice geograficzne i zgodność platformy Azure w organizacji oraz wszelkie powiązane implikacje.

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ę 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 wieloetapowe z zarządzaniem lokalną historią czatu lub zarządzanie historią czatu zapewniane jako usługa.
  3. Narzędzia udostępnione przez usługę niestandardową (na przykład 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 jeszcze łatwiej tworzyć tych agentów, platforma Agent Framework udostępnia pomocników dla wielu popularnych usług. Aby uzyskać więcej informacji, zobacz dokumentację dla każdej usługi.

Podstawowa usługa wnioskowania Opis Obsługiwane przechowywanie historii czatów usługi Obsługiwane przechowywanie historii czatów w InMemory/niestandardowe
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. Tak 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 bazowy typ stanowi główną abstrakcję dla wszystkich agentów, który po utworzeniu podklasy umożliwia pełną kontrolę nad zachowaniem i funkcjonalnością 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ół Opis
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 DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)

Ostrzeżenie

DefaultAzureCredential jest wygodne do programowania, ale wymaga starannego rozważenia w środowisku produkcyjnym. W środowisku produkcyjnym rozważ użycie określonego poświadczenia (np. ManagedIdentityCredential), aby uniknąć problemów z opóźnieniami, niezamierzonego sondowania poświadczeń i potencjalnych zagrożeń bezpieczeństwa wynikających z mechanizmów awaryjnych.

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)
    .AsAIAgent(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 DefaultAzureCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(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 DefaultAzureCredential());
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. Można to zrobić przy użyciu klasy SupportsChatGetResponse, która definiuje standard dla metod, które klient musi obsługiwać do użycia z klasą standardową Agent .

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 oferowane przez usługi niestandardowe (na przykład MCP, wykonywanie kodu)
  4. Strukturalne dane wyjściowe
  5. Odpowiedzi streamingowe

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

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

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

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

Uwaga / Notatka

W tym przykładzie pokazano użycie klienta AzureOpenAIResponsesClient, ale ten sam wzorzec dotyczy dowolnego klienta czatu, który implementuje SupportsChatGetResponse. Zobacz omówienie dostawców, aby uzyskać więcej szczegółów na temat innych klientów.

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

Obsługiwani dostawcy czatów

Podstawowa usługa inferencji Opis Obsługiwane przechowywanie historii czatów serwisowych
Azure AI Foundry Agent Agent, który używa usługi Azure AI Agents Service jako zaplecza. Tak
Kompletacja czatu Azure OpenAI Agent korzystający z usługi uzupełniania czatów Azure OpenAI. Nie.
Odpowiedzi usługi Azure OpenAI Agent korzystający z usługi Azure OpenAI Responses. Tak
Asystenci usługi Azure OpenAI Agent korzystający z usługi Azure OpenAI Assistants. Tak
Zakończenie czatu OpenAI Agent korzystający z usługi uzupełniania czatu OpenAI. Nie.
Odpowiedzi openAI Agent korzystający z usługi Odpowiedzi OpenAI. Tak
Asystenci openAI Agent korzystający z usługi OpenAI Assistants. Tak
Anthropic Claude Agent, który korzysta z modeli Anthropic Claude. Nie.
Podłoże skalne Amazonii Agent, który korzysta z modeli Amazon Bedrock za pośrednictwem klienta czatu Agent Framework Bedrock. Nie.
GitHub Copilot Agent korzystający z zaplecza zestawu SDK Copilot usługi GitHub. Nie.
Ollama (zgodne z protokołem OpenAI) Agent, który używa lokalnie hostowanych modeli Ollama za pośrednictwem interfejsów API zgodnych z platformą OpenAI. Nie.
Dowolny inny obiekt ChatClient Możesz również użyć dowolnej innej implementacji SupportsChatGetResponse , aby utworzyć agenta. Varies

Niestandardowe przechowywanie historii czatów jest obsługiwane, gdy obsługiwany jest stan konwersacji oparty na sesji.

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

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

Aby uzyskać więcej wzorców wywołań, zobacz Running Agents (Uruchamianie agentów).

Narzędzia funkcji

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

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

Aby zapoznać się z narzędziami i wzorcami narzędzi, zobacz Omówienie narzędzi.

Agenty niestandardowe

Aby uzyskać w pełni niestandardowe implementacje (na przykład agentów deterministycznych lub agentów opartych na interfejsie API), zobacz Agenty niestandardowe. Ta strona obejmuje implementowanie SupportsAgentRun lub rozszerzanie BaseAgent, w tym aktualizacje przesyłania strumieniowego za pomocą AgentResponseUpdate.

Inne typy agentów

Struktura agenta obejmuje również agentów opartych na protokole, takich jak:

Typ agenta Opis
A2A Agent proxy, który umożliwia połączenie i wywołuje zdalnych agentów zgodnych ze standardem A2A.

Dalsze kroki