Erstellen einer KI-Chat-App mit .NET
In dieser Schnellstartanleitung erfahren Sie, wie Sie eine Unterhaltungs-.NET-Konsolenchat-App mit einem OpenAI- oder Azure OpenAI-Modell erstellen. 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.
Hinweis
Die Microsoft.Extensions.AI
Bibliothek befindet sich derzeit in der Vorschau.
Voraussetzungen
- .NET 8.0 SDK: Installieren Sie das .NET 8.0 SDK.
- Ein API-Schlüssel aus OpenAI, damit Sie dieses Beispiel ausführen können
- Unter Windows ist PowerShell
v7+
erforderlich. Um Ihre Version zu überprüfen, führen Siepwsh
in einem Terminal aus. Die aktuelle Version sollte zurückgegeben werden. Wenn ein Fehler zurückgegeben wird, führen Sie den folgenden Befehl aus:dotnet tool update --global PowerShell
.
Voraussetzungen
- .NET 8 SDK: Installieren Sie das .NET 8 SDK.
- Azure-Abonnement – kostenloses Abonnement erstellen.
- Zugriff auf Azure OpenAI Service
- Azure Developer CLI (Optional) – Installieren oder Aktualisieren der Azure Developer CLI.
Hinweis
Sie können auch den semantischen Kernel verwenden, um die Aufgaben in diesem Artikel auszuführen. 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.
Klonen des Beispielrepositorys
Sie können Ihre eigene App mit den Schritten in den vorherigen Abschnitten erstellen oder das GitHub-Repository klonen, das die abgeschlossenen Beispiel-Apps für alle Schnellstarts enthält. Wenn Sie Beabsichtigen, Azure OpenAI zu verwenden, ist das Beispiel-Repository auch als Azure Developer CLI-Vorlage strukturiert, die eine Azure OpenAI-Ressource für Sie bereitstellen kann.
git clone https://github.com/dotnet/ai-samples.git
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
dotnet new
Befehl, um eine neue Konsolen-App zu erstellen:dotnet new console -o ChatAppAI
Ändern Sie das Verzeichnis in den App-Ordner:
cd ChatAppAI
Installieren Sie die erforderlichen Pakete:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package OpenAI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Öffnen Sie die App in Visual Studio Code (oder Ihrem ausgewählten Editor).
code .
Erstellen des KI-Diensts
Das GitHub-Beispielrepository ist als Azure Developer CLI-Vorlage (azd
) strukturiert, die azd
zum Bereitstellen der Azure OpenAI Service-Instanz und -Modells für Sie verwenden kann.
Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum
src\quickstarts\azure-openai
Verzeichnis des Beispielrepo.Führen Sie den
azd up
-Befehl aus, um die Azure OpenAI-Ressourcen bereitzustellen. Es kann mehrere Minuten dauern, bis Azure OpenAI Service erstellt und das Modell bereitgestellt ist.azd up
azd
konfiguriert außerdem die erforderlichen Benutzerschlüssel für die Beispiel-App, z. B. den Azure OpenAI-Endpunkt und den Modellnamen.
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 Geheimnis 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 und ist so konzipiert, dass Benutzer Informationen zu Wanderwegen erhalten.
Fügen Sie in der datei Program.cs den folgenden Code hinzu, um eine Verbindung mit dem AI-Modell herzustellen und sich zu authentifizieren.
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 chatClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .AsChatClient(deployment);
Hinweis
DefaultAzureCredential Sucht nach Authentifizierungsanmeldeinformationen aus Ihrem lokalen Tool. Wenn Sie die Vorlage nicht zum Bereitstellen der
azd
Azure OpenAI-Ressource verwenden, müssen Sie dieAzure AI Developer
Rolle dem Konto zuweisen, das Sie zum Anmelden bei Visual Studio oder der Azure CLI verwendet haben. Weitere Informationen finden Sie unter Authentifizieren bei Azure AI-Diensten mit .NET.using Microsoft.Extensions.Configuration; using Microsoft.Extensions.AI; using OpenAI; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string model = config["ModelName"]; string key = config["OpenAIKey"]; // Create the IChatClient IChatClient chatClient = new OpenAIClient(key).AsChatClient(model);
Erstellen Sie eine Systemaufforderung, um das KI-Modell mit anfänglichem Rollenkontext und Anweisungen zu Wanderempfehlungen bereitzustellen:
// Start the conversation with context for the AI model List<ChatMessage> chatHistory = new() { new ChatMessage(ChatRole.System, """ You are a friendly hiking enthusiast who helps people discover fun hikes in their area. You introduce yourself when first saying hello. When helping people out, you always ask them for this information to inform the hiking recommendation you provide: 1. The location where they would like to hike 2. What hiking intensity they are looking for You will then provide three suggestions for nearby hikes that vary in length after you get that information. You will also share an interesting fact about the local nature on the hikes when making a recommendation. At the end of your response, ask if there is anything else you can help with. """) };
Erstellen Sie eine Unterhaltungsschleife, die eine Eingabeaufforderung des Benutzers akzeptiert, die Aufforderung an das Modell sendet und den Antwortabschluss druckt:
while (true) { // Get user prompt and add to chat history Console.WriteLine("Your prompt:"); var userPrompt = Console.ReadLine(); chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt)); // Stream the AI response and add to chat history Console.WriteLine("AI Response:"); var response = ""; await foreach (var item in chatClient.CompleteStreamingAsync(chatHistory)) { Console.Write(item.Text); response += item.Text; } chatHistory.Add(new ChatMessage(ChatRole.Assistant, response)); Console.WriteLine(); }
Verwenden Sie den Befehl
dotnet run
, um die App auszuführen:dotnet run
Die App druckt die Abschlussantwort aus dem KI-Modell. Senden Sie weitere Nachverfolgungsaufforderungen, und stellen Sie weitere Fragen, um mit der KI-Chatfunktion zu experimentieren.
Bereinigen von Ressourcen
Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.
azd down