Freigeben über


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.

Voraussetzungen

Voraussetzungen

Hinweis

Sie können auch Semantic Kernel verwenden, um die Aufgaben in diesem Artikel zu erledigen. Semantic Kernel ist ein schlankes Open-Source SDK, mit dem Sie KI-Agenten erstellen und die neuesten KI-Modelle in Ihre .NET Apps integrieren können.

Erstellen der App

Schließen Sie die folgenden Schritte ab, um eine App für eine .NET-Konsole zu erstellen, die sich mit einem KI-Modell verbindet.

  1. Verwenden Sie in einem leeren Verzeichnis auf Ihrem Computer den Befehl dotnet new, um eine neue Konsolen-App zu erstellen:

    dotnet new console -o ChatAppAI
    
  2. Wechseln Sie das Verzeichnis in den App-Ordner:

    cd ChatAppAI
    
  3. Installieren Sie die erforderlichen Pakete:

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Öffnen Sie die App in Visual Studio Code (oder Ihrem ausgewählten Editor).

    code .
    

Erstellen Sie den KI-Dienst

  1. 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.

  2. Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum Stammverzeichnis Des Projekts.

  3. 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

  1. Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum Stammverzeichnis Ihres .NET-Projekts.

  2. 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>
    

Fügen Sie den App-Code hinzu

Diese App verwendet das Microsoft.Extensions.AI Paket zum Senden und Empfangen von Anforderungen an das KI-Modell. Die App bietet Benutzern Informationen zu Wanderwegen.

  1. Fügen Sie in der Program.cs Datei den folgenden Code hinzu, um eine Verbindung mit dem KI-Modell herzustellen und sich zu authentifizieren.

    IConfigurationRoot 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())
        .GetChatClient(deployment)
        .AsIChatClient();
    

    Hinweis

    DefaultAzureCredential sucht in Ihrem lokalen Tool nach Authentifizierungsdaten. 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, die Azure AI Developer Rolle zuweisen. Weitere Informationen finden Sie unter Authentifizierung von Azure AI-Diensten mit .NET.

    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient chatClient =
        new OpenAIClient(key).GetChatClient(model).AsIChatClient();
    
  2. 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 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.
            """)
        ];
    
  3. Erstellen Sie eine Unterhaltungsschleife, die eine Eingabeaufforderung des Benutzers akzeptiert, die Aufforderung an das Modell sendet und den Antwortabschluss druckt:

    // Loop to get user input and stream AI response
    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        string? userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        string response = "";
        await foreach (ChatResponseUpdate item in
            chatClient.GetStreamingResponseAsync(chatHistory))
        {
            Console.Write(item.Text);
            response += item.Text;
        }
        chatHistory.Add(new ChatMessage(ChatRole.Assistant, response));
        Console.WriteLine();
    }
    
  4. 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 sie nicht mehr benötigen, löschen Sie die Azure OpenAI-Ressource und die GPT-4-Modellbereitstellung.

  1. Navigieren Sie im Azure Portalzur Azure OpenAI-Ressource.
  2. Wählen Sie die Azure OpenAI-Ressource aus und wählen Sie dann Löschen.

Nächste Schritte