Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung erstellen Sie eine .NET-Konsolen-KI-Chat-App, um eine Verbindung mit einem KI-Modell herzustellen, bei dem lokale Funktionsaufrufe aktiviert sind. Die App verwendet die Microsoft.Extensions.AI-Bibliothek, sodass Sie Code mithilfe von KI-Abstraktionen und nicht mit einem bestimmten SDK schreiben können. KI-Abstraktionen ermöglichen es Ihnen, das zugrunde liegende KI-Modell mit minimalen Codeänderungen zu ändern.
Voraussetzungen
- .NET 8.0 SDK oder höher – Installieren Sie das .NET 8.0 SDK.
- Ein -API-Schlüssel aus openAI, damit Sie dieses Beispiel ausführen können.
Voraussetzungen
- .NET 8.0 SDK oder höher – .NET 8 SDKinstallieren.
- Ein Azure-Abonnement – Kostenlos erstellen.
- Azure Developer CLI (optional) – Installieren oder Aktualisieren der Azure Developer CLI.
Anmerkung
Sie können auch Semantic Kernel verwenden, um die Aufgaben in diesem Artikel zu erledigen. Der semantische Kernel ist ein einfaches Open-Source-SDK, mit dem Sie KI-Agents erstellen und die neuesten KI-Modelle in Ihre .NET-Apps integrieren können.
Erstellen der App
Führen Sie die folgenden Schritte aus, um eine .NET-Konsolen-App zu erstellen, um eine Verbindung mit einem AI-Modell herzustellen.
Verwenden Sie in einem leeren Verzeichnis auf Ihrem Computer den Befehl
dotnet new
, um eine neue Konsolen-App zu erstellen:dotnet new console -o FunctionCallingAI
Wechseln Sie das Verzeichnis in den App-Ordner:
cd FunctionCallingAI
Installieren Sie die erforderlichen Pakete:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Öffnen der App in Visual Studio Code oder dem gewünschten Editor
code .
Erstellen des KI-Diensts
Führen Sie zum Bereitstellen eines Azure OpenAI-Diensts und -Modells die Schritte im Artikel zum Erstellen und Bereitstellen eines Azure OpenAI Service-Ressourcenartikels aus.
Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum Stammverzeichnis Des Projekts.
Führen Sie die folgenden Befehle aus, um Ihren Azure OpenAI-Endpunkt und den Modellnamen für die Beispiel-App zu konfigurieren:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name>
Konfigurieren der App
Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum Stammverzeichnis Ihres .NET-Projekts.
Führen Sie die folgenden Befehle aus, um Ihren OpenAI-API-Schlüssel als geheimen Schlüssel für die Beispiel-App zu konfigurieren:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
Hinzufügen des App-Codes
Die App verwendet das Microsoft.Extensions.AI
-Paket zum Senden und Empfangen von Anforderungen an das KI-Modell.
Fügen Sie in der datei Program.cs den folgenden Code hinzu, um eine Verbindung mit dem KI-Modell herzustellen und sich zu authentifizieren. Die
ChatClient
ist auch für die Verwendung von Funktionsaufrufen konfiguriert, sodass das KI-Modell .NET-Funktionen in Ihrem Code aufrufen kann.using Microsoft.Extensions.Configuration; using Microsoft.Extensions.AI; using Azure.AI.OpenAI; using Azure.Identity; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; IChatClient client = new ChatClientBuilder( new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .GetChatClient(deployment).AsIChatClient()) .UseFunctionInvocation() .Build();
Anmerkung
DefaultAzureCredential sucht von Ihrem lokalen Tool nach Authentifizierungsanmeldeinformationen. Wenn Sie die
azd
Vorlage nicht zum Bereitstellen der Azure OpenAI-Ressource verwenden, müssen Sie dem Konto, das Sie für die Anmeldung bei Visual Studio oder der Azure CLI verwendet haben, dieAzure AI Developer
Rolle zuweisen. Weitere Informationen finden Sie unter Authentifizieren von Azure AI-Diensten mit .NET.using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string? model = config["ModelName"]; string? key = config["OpenAIKey"]; IChatClient client = new ChatClientBuilder(new OpenAIClient(key).GetChatClient(model ?? "gpt-4o").AsIChatClient()) .UseFunctionInvocation() .Build();
Erstellen Sie ein neues
ChatOptions
-Objekt, das eine Inlinefunktion enthält, die das KI-Modell aufrufen kann, um das aktuelle Wetter abzurufen. Die Funktionsdeklaration enthält einen Delegat zum Ausführen von Logik sowie Namen- und Beschreibungsparameter, um den Zweck der Funktion für das KI-Modell zu beschreiben.// Add a new plugin with a local .NET function // that should be available to the AI model. var chatOptions = new ChatOptions { Tools = [AIFunctionFactory.Create((string location, string unit) => { // Here you would call a weather API // to get the weather for the location. return "Periods of rain or drizzle, 15 C"; }, "get_current_weather", "Get the current weather in a given location")] };
Fügen Sie dem
chatHistory
eine Systemaufforderung hinzu, um dem Modell Kontext und Anweisungen bereitzustellen. Senden Sie eine Benutzeraufforderung mit einer Frage, die erfordert, dass das KI-Modell die registrierte Funktion aufruft, um die Frage ordnungsgemäß zu beantworten.// System prompt to provide context. List<ChatMessage> chatHistory = [new(ChatRole.System, """ You are a hiking enthusiast who helps people discover fun hikes in their area. You are upbeat and friendly. """)]; // Weather conversation relevant to the registered function. chatHistory.Add(new ChatMessage(ChatRole.User, "I live in Montreal and I'm looking for a moderate intensity hike. What's the current weather like?")); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}"); ChatResponse response = await client.GetResponseAsync(chatHistory, chatOptions); Console.WriteLine($"Assistant >>> {response.Text}");
Verwenden Sie den Befehl
dotnet run
, um die App auszuführen:dotnet run
Die App druckt die Abschlussantwort des KI-Modells, die Daten enthält, die von der .NET-Funktion bereitgestellt werden. Das KI-Modell hat verstanden, dass die registrierte Funktion verfügbar war und automatisch aufgerufen wurde, um eine richtige Antwort zu generieren.
Bereinigen von Ressourcen
Wenn Sie sie nicht mehr benötigen, löschen Sie die Azure OpenAI-Ressource und die GPT-4-Modellbereitstellung.
- Navigieren Sie im Azure Portalzur Azure OpenAI-Ressource.
- Wählen Sie die Azure OpenAI-Ressource aus und wählen Sie dann Löschen.