Azure OpenAI

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.

Następne kroki