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.
Microsoft Agent Framework obsługuje dwa Azure typy klientów OpenAI, z których każda jest przeznaczona dla innej powierzchni interfejsu API z różnymi możliwościami narzędzi. Odpowiedzi są zalecanym klientem podstawowym: obsługuje pełny zestaw hostowanych narzędzi. Użyj Chat Completion, jeśli potrzebujesz szerokiej zgodności z modelami lub masz istniejącą integrację z Chat Completions, którą chcesz zachować.
| Typ klienta | API | Najlepsze dla |
|---|---|---|
| Odpowiedzi (zalecane) | API odpowiedzi | Agenci o pełnej funkcjonalności z hostowanymi narzędziami (interpretor kodu, wyszukiwanie plików, wyszukiwanie w Internecie, hostowana aplikacja MCP) |
| Uzupełnianie czatu | API kompletacji czatu | Proste agenty, szerokie wsparcie modeli |
Tip
W przypadku bezpośrednich odpowiedników openAI (OpenAIChatClient, OpenAIChatCompletionClient), zobacz stronę dostawcy OpenAI. Obsługa narzędzi jest identyczna.
Uwaga / Notatka
Interfejs API asystentów openAI Azure jest przestarzały. Nowy kod powinien używać klienta Responses. Jeśli przeprowadzasz migrację z istniejącej aplikacji opartej na asystentach, zapoznaj się z przewodnikiem migracji Semantic Kernel.
Wprowadzenie
Dodaj wymagane pakiety NuGet do projektu.
dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
Wszystkie typy klientów usługi Azure OpenAI zaczynają się od utworzenia elementu AzureOpenAIClient:
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using OpenAI.Chat;
using OpenAI.Responses;
AzureOpenAIClient client = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new DefaultAzureCredential());
Warning
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.
Klient odpowiedzi
Klient odpowiedzi jest zalecanym klientem podstawowym i zapewnia najbogatszą obsługę narzędzi, w tym interpreter kodu, wyszukiwanie plików, wyszukiwanie w Internecie i hostowaną aplikację MCP.
var responsesClient = client.GetResponsesClient();
AIAgent agent = responsesClient.AsAIAgent(
model: "gpt-4o-mini",
instructions: "You are a helpful coding assistant.",
name: "CodeHelper");
Console.WriteLine(await agent.RunAsync("Write a Python function to sort a list."));
Obsługiwane narzędzia: Narzędzia funkcji, zatwierdzanie narzędzi, interpreter kodu, wyszukiwanie plików, wyszukiwanie w Internecie, hostowane MCP, lokalne narzędzia MCP.
Klient uzupełniania rozmów czatowych
Klient Chat Completions zapewnia prosty sposób tworzenia agentów przy użyciu interfejsu Chat Completions API. Użyj tego, gdy potrzebujesz zgodności z wieloma modelami lub masz istniejącą integrację z Chat Completions.
var chatClient = client.GetChatClient("gpt-4o-mini");
AIAgent agent = chatClient.AsAIAgent(
instructions: "You are good at telling jokes.",
name: "Joker");
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
Obsługiwane narzędzia: Narzędzia funkcji, wyszukiwanie w Internecie, lokalne narzędzia MCP.
Klient asystentów
Uwaga / Notatka
Interfejs API asystentów openAI Azure jest przestarzały. Framework Agent nie zawiera już dokumentacji klienta Assistants — do nowego kodu użyj powyższego klienta Responses. Aby przeprowadzić migrację istniejącej aplikacji, zobacz przewodnik migracji Semantic Kernel.
Narzędzia funkcji
Niestandardowe narzędzia funkcji można udostępnić dowolnym agentom usługi Azure OpenAI:
using System.ComponentModel;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using OpenAI.Chat;
[Description("Get the weather for a given location.")]
static string GetWeather([Description("The location to get the weather for.")] string location)
=> $"The weather in {location} is cloudy with a high of 15°C.";
AIAgent agent = new AzureOpenAIClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: "You are a helpful assistant", tools: [AIFunctionFactory.Create(GetWeather)]);
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));
Odpowiedzi w strumieniowaniu
await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
Console.Write(update);
}
Tip
Zobacz przykłady .NET dla kompletnych, działających przykładów.
Korzystanie z agenta
Oba typy klientów generują standard AIAgent, który obsługuje te same operacje agenta (przesyłanie strumieniowe, wątki, oprogramowanie pośredniczące).
Aby uzyskać więcej informacji, zobacz samouczki 'Pierwsze kroki'.
Tools
Klienci .NET usługi Azure OpenAI mają wspólny interfejs narzędziowy z odpowiadającymi im klientami OpenAI. Zobacz stronę dostawcy OpenAI, aby uzyskać pełną macierz dla każdego klienta — warianty Azure Responses i Chat Completions odpowiadają ich bezpośrednim odpowiednikom w OpenAI.
| Narzędzie | Responses | Zakończenie czatu |
|---|---|---|
| Narzędzia funkcji | ✅ | ✅ |
| Zatwierdzanie narzędzi | ✅ | ✅ |
| Interpreter kodów | ✅ | ❌ |
| Wyszukiwanie plików | ✅ | ❌ |
| Wyszukiwanie w Sieci Web | ✅ | ✅ |
| Hostowane narzędzia MCP | ✅ | ❌ |
| Lokalne narzędzia MCP | ✅ | ✅ |
Uwaga / Notatka
Akceptacja narzędzia jest zapewniana przez klienta czatu platformy wywołującego funkcje, dzięki czemu działa z dowolnym wywołaniem narzędzia-funkcji niezależnie od bazowego API.
Wskazówki dotyczące języka Python
Important
Wskazówki dotyczące platformy Azure OpenAI w języku Python są teraz dostępne na stronie dostawcy openAI. Użyj tej strony dla OpenAIChatCompletionClient, OpenAIChatClient i OpenAIEmbeddingClient, mapowania nazw wdrożeń na model, jawnych danych wejściowych routingu platformy Azure, takich jak credential lub azure_endpoint, konfiguracji po wybraniu Azure oraz wskazówek api_version dotyczących pełnych adresów URL base_url. Jeśli OPENAI_API_KEY jest również obecny, klienci ogólni pozostają przy OpenAI, chyba że przekażesz jawne dane wejściowe trasy Azure. Jeśli są obecne tylko ustawienia AZURE_OPENAI_*, zastępcze środowisko Azure nadal działa. Stare klasy zgodności języka Python AzureOpenAI* zostały usunięte z bieżącej agent_framework.azure przestrzeni nazw, więc należy migrować starszy kod do agent_framework.openai. W przypadku nowych rozwiązań Python zalecamy wdrażanie modeli przy użyciu Microsoft Foundry i łączenie się z nimi przy użyciu FoundryChatClient zamiast pozostawania na ścieżce specyficznej dla usługi Azure OpenAI. Jeśli potrzebujesz punktów końcowych projektu Foundry lub usługi Agenta Foundry, zobacz stronę dostawcy Foundry. Aby uzyskać szerszą listę kontrolną migracji, zobacz przewodnik po znaczących zmianach języka Python.
Tools
Python Azure OpenAI używa tych samych klientów agent_framework.openai co bezpośredni interfejs OpenAI, więc powierzchnia narzędzia jest identyczna. Zobacz sekcję „Narzędzia” na stronie dostawcy OpenAI, aby uzyskać pełną macierz dla poszczególnych klientów.
Azure OpenAI
W Go Azure OpenAI używa tego samego pakietu openaiprovider co bezpośrednio OpenAI, z inicjalizacją klienta specyficzną dla platformy Azure.
Installation
go get github.com/microsoft/agent-framework-go
Tworzenie agenta Azure OpenAI
import (
"cmp"
"fmt"
"os"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/openaiprovider"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
openai "github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/azure"
)
endpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
deployment := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
apiVersion := cmp.Or(os.Getenv("AZURE_OPENAI_API_VERSION"), "2025-01-01-preview")
token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(err)
}
a := openaiprovider.NewChatCompletionsAgent(
openai.NewClient(
azure.WithEndpoint(endpoint, apiVersion),
azure.WithTokenCredential(token),
),
openaiprovider.AgentConfig{
Model: deployment,
Instructions: "You are a helpful assistant.",
Config: agent.Config{
Name: "AzureAgent",
},
},
)
resp, err := a.RunText(ctx, "Hello!").Collect()
Warning
azidentity.NewDefaultAzureCredential jest wygodne do programowania, ale wymaga starannego rozważenia w środowisku produkcyjnym. W środowisku produkcyjnym rozważ użycie konkretnego poświadczenia, takiego jak azidentity.NewManagedIdentityCredential, aby uniknąć opóźnień, niezamierzonego sprawdzania poświadczeń oraz potencjalnych zagrożeń bezpieczeństwa wynikających z mechanizmów awaryjnych.
Korzystanie z interfejsu Responses API
Użyj openaiprovider.NewResponsesAgent tego samego klienta OpenAI skonfigurowanego dla platformy Azure, gdy wdrożenie Azure OpenAI obsługuje interfejs API Responses:
responsesAgent := openaiprovider.NewResponsesAgent(
openai.NewClient(
azure.WithEndpoint(endpoint, apiVersion),
azure.WithTokenCredential(token),
),
openaiprovider.AgentConfig{
Model: deployment,
Instructions: "You are a helpful assistant.",
Config: agent.Config{
Name: "AzureResponsesAgent",
},
},
)
response, err := responsesAgent.RunText(ctx, "Summarize the latest deployment status.").Collect()
if err != nil {
return err
}
fmt.Println(response.String())
Zmienne środowiskowe
| Variable | Opis |
|---|---|
AZURE_OPENAI_ENDPOINT |
Punkt końcowy zasobu Azure OpenAI |
AZURE_OPENAI_DEPLOYMENT_NAME |
Nazwa wdrożenia/modelu |
AZURE_OPENAI_API_VERSION |
Wersja interfejsu API (np. 2025-01-01-preview) |
Tip
Zobacz przykład uzupełnień czatu Azure OpenAI i przykład odpowiedzi, aby zapoznać się z pełnymi przykładami.