Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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:
- Wywoływanie funkcji.
- Konwersacje wieloetapowe z zarządzaniem lokalną historią czatu lub zarządzanie historią czatu zapewniane jako usługa.
- Narzędzia udostępnione przez usługę niestandardową (na przykład MCP, wykonywanie kodu).
- 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 |
- Aktualizacja z Azure OpenAI do Azure AI Foundry
- Zalecamy korzystanie z zestawu OpenAI SDK.
- 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:
- Wywoływanie funkcji
- Konwersacje wielowątkowe z zarządzaniem lokalną historią czatu lub zarządzanie historią czatu jako usługa
- Narzędzia oferowane przez usługi niestandardowe (na przykład MCP, wykonywanie kodu)
- Strukturalne dane wyjściowe
- 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:
- Przykłady przesyłania strumieniowego usługi Azure AI
- Przykłady przesyłania strumieniowego usługi Azure OpenAI
- Przykłady strumieniowego przesyłania OpenAI
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. |