Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Struktura 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
Wszystkie agenty w programie Microsoft Agent Framework wykonują przy użyciu ustrukturowanego modelu środowiska uruchomieniowego. Ten model koordynuje interakcję użytkownika, wnioskowanie modelu i wykonywanie narzędzi w pętli deterministycznej.
Ważna
Jeśli używasz platformy agentów Microsoft do tworzenia aplikacji działających z dowolnymi serwerami, agentami, kodem lub modelami innych niż Azure Direct ("Systemy innych firm"), robisz to na własne ryzyko. Systemy innych firm to produkty inne niż Microsoft na podstawie postanowień dotyczących Microsoft produktów i podlegają własnym postanowieniom licencyjnym innych firm. Ponosisz odpowiedzialność za wszelkie użycie i powiązane koszty.
Zalecamy przejrzenie wszystkich danych udostępnianych i otrzymanych z systemów innych firm oraz zapoznanie się z praktykami innych firm w zakresie obsługi, udostępniania, przechowywania i lokalizacji danych. Twoim zadaniem jest zarządzanie tym, czy dane będą przepływać poza granice zgodności i geograficzne organizacji w Azure oraz jakie będą z tym związane implikacje. Upewnij się, że zapewnione są odpowiednie uprawnienia, granice i zatwierdzenia.
Odpowiadasz za dokładne przeglądanie i testowanie aplikacji, które tworzysz przy użyciu platformy Microsoft Agent Framework w kontekście konkretnych przypadków użycia, oraz podejmowanie wszelkich odpowiednich decyzji i dostosowań. Obejmuje to implementowanie własnych odpowiedzialnych środków zaradczych dotyczących sztucznej inteligencji, takich jak metaprompt, filtry zawartości lub inne systemy bezpieczeństwa oraz zapewnienie, że aplikacje spełniają odpowiednie standardy dotyczące jakości, niezawodności, bezpieczeństwa i wiarygodności. Zobacz też: Często zadawane pytania dotyczące przezroczystości
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 udostępniająca implementację Microsoft.Extensions.AI.IChatClient może służyć do kompilowania tych agentów.
Microsoft.Agents.AI.ChatClientAgent jest klasą agenta używaną do udostępniania 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 |
|---|---|---|---|
| Microsoft Agent usługi Foundry | Agent, który używa Usługi Agenta Foundry jako back-endu. | Tak | Nie. |
| Modele Foundry Ukończenia Czatu | Agent, który używa dowolnego z modeli wdrożonych w usłudze Foundry jako zaplecza za pośrednictwem chatCompletion. | Nie. | Tak |
| Odpowiedzi modeli odlewni | Agent, który używa dowolnego z modeli wdrożonych w usłudze Foundry Service jako zaplecze poprzez Responses. | Tak | Tak |
| Foundry Anthropic | Agent, który używa modelu Claude'a za pośrednictwem usługi Foundry Anthropic Service jako zaplecza. | Nie. | Tak |
| Azure OpenAI ChatCompletion | Agent korzystający z usługi Azure OpenAI ChatCompletion. | Nie. | Tak |
| Odpowiedzi Azure OpenAI | Agent korzystający z usługi odpowiedzi Azure OpenAI. | Tak | Tak |
| Antropiczny | Agent, który używa modelu Claude'a za pośrednictwem usługi Anthropic jako jego zaplecze. | Nie. | 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 |
Inne IChatClient |
Do utworzenia agenta można również użyć dowolnej innej implementacji Microsoft.Extensions.AI.IChatClient. |
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. |
Referencja opcji zestawu SDK Azure i OpenAI
W przypadku korzystania z usług Foundry, Azure OpenAI, OpenAI lub Anthropic, masz do wyboru różne zestawy 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 odlewnicze | SDK Azure OpenAI 2 | Azure. AI. OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Modele odlewnicze | Zestaw OpenAI SDK 3 | Otwarta sztuczna inteligencja | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Modele odlewnicze | SDK wnioskowania w Azure AI 2 | Azure.AI.Inferencja | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Agentów odlewni | Azure AI Projects SDK + Foundry Sztucznej Inteligencji Agentów Microsoft | Azure.AI.Projects / Microsoft.Agents.AI.Foundry | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | pakiet SDK Azure OpenAI 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 |
| Microsoft Foundry Anthropic | Zestaw SDK Anthropic Foundry | Anthropic.Foundry | Wymagana nazwa zasobu |
| Antropiczny | Zestaw SDK antropotyczny | Antropiczny | Brak wymaganego adresu URL lub nazwy zasobu |
- Upgrading from Azure OpenAI to Foundry
- Zalecamy korzystanie z zestawu OpenAI SDK.
- Chociaż zalecamy używanie zestawu OpenAI SDK do uzyskiwania dostępu do modeli foundry, modele 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 Azure można również użyć poświadczeń 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
.AsAIAgent(model: model, instructions: "You are good at telling jokes.", name: "Joker");
Korzystanie z zestawu SDK projektów sztucznej inteligencji Azure
Ten zestaw SDK może służyć do nawiązywania połączenia z usługami Foundry.
Podczas tworzenia AIProjectClient należy podać prawidłowy adres URL punktu końcowego projektu.
Zapoznaj się z powyższą tabelą, aby uzyskać prawidłowy adres URL do użycia.
AIAgent agent = new AIProjectClient(
new Uri(serviceUrl),
new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Korzystanie z zestawu SDK projektów sztucznej inteligencji Azure z agentami Foundry
Ten SDK jest używany zarówno dla agentów opartych na interfejsie Responses API, jak i wersjonowanych agentów Foundry. Zapoznaj się z powyższą tabelą, aby uzyskać prawidłowy adres URL do użycia.
var aiProjectClient = new AIProjectClient(new Uri(serviceUrl), new DefaultAzureCredential());
AIAgent agent = aiProjectClient.AsAIAgent(
model: deploymentName,
instructions: "You are good at telling jokes.",
name: "Joker");
Korzystanie z Foundry Anthropic SDK
Zasób jest nazwą poddomeny / pierwszym członem nazwy przed '.services.ai.azure.com' w identyfikatorze URI punktu końcowego.
Przykład: https://(resource name).services.ai.azure.com/anthropic/v1/chat/completions
var client = new AnthropicFoundryClient(new AnthropicFoundryApiKeyCredentials(apiKey, resource));
AIAgent agent = client.AsAIAgent(
model: deploymentName,
instructions: "Joker",
name: "You are good at telling jokes.");
Korzystanie z zestawu SDK antropicznego
var client = new AnthropicClient() { ApiKey = apiKey };
AIAgent agent = client.AsAIAgent(
model: deploymentName,
instructions: "Joker",
name: "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 SupportsChatGetResponse protokołu, który definiuje standard 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.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential
agent = Agent(
client=FoundryChatClient(
credential=DefaultAzureCredential(),
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
model=os.getenv("FOUNDRY_MODEL"),
),
instructions="You are a helpful assistant",
)
response = await agent.run("Hello!")
Alternatywnie możesz użyć metody wygody na kliencie czatu:
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential
agent = FoundryChatClient(
credential=DefaultAzureCredential(),
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
model=os.getenv("FOUNDRY_MODEL"),
).as_agent(
instructions="You are a helpful assistant"
)
Uwaga / Notatka
W tym przykładzie pokazano użycie elementu FoundryChatClient, ale ten sam wzorzec dotyczy dowolnego klienta czatu, który implementuje SupportsChatGetResponse. Zobacz omówienie dostawców, aby uzyskać więcej informacji 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 |
|---|---|---|
| Foundry Agent | Agent, który używa usługi agenta jako zaplecza. | Tak |
| Azure OpenAI Chat Completion | Agent korzystający z usługi Azure OpenAI Chat Completion. | Nie. |
| Azure Odpowiedzi OpenAI | Agent korzystający z usługi odpowiedzi OpenAI Azure. | 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 |
| 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 GitHub Copilot. | 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 w usłudze Foundry
- Przykłady przesyłania strumieniowego Azure OpenAI Chat Completion
- Przykłady przesyłania strumieniowego odpowiedzi w Azure OpenAI
- Przykłady przesyłania strumieniowego za pomocą czatu OpenAI
- Przykłady strumieniowania odpowiedzi 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.foundry import FoundryChatClient
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 = FoundryChatClient(
credential=credential,
project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
model=os.getenv("FOUNDRY_MODEL"),
).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. |