Freigeben über


Zusammenfassen von Text mithilfe einer KI-Chat-App mit .NET

Erstellen Sie für erste Schritte mit KI eine einfache Chatanwendung mit .NET 8.0-Konsole zum Zusammenfassen von Text. Die Anwendung wird lokal ausgeführt und verwendet das gpt-3.5-turbo-Modell von OpenAI. Führen Sie die folgenden Schritte aus, um auf OpenAI zuzugreifen und zu erfahren, wie Sie Semantic Kernel verwenden.

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 Sie pwsh 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.

Erstellen Sie für erste Schritte mit KI eine einfache Chatanwendung mit .NET 8.0-Konsole zum Zusammenfassen von Text. Die App wird lokal ausgeführt und stellt eine Verbindung mit dem in Azure OpenAI bereitgestellten gpt-35-turbo-Modell von OpenAI her. Führen Sie die folgenden Schritte aus, um Azure OpenAI Service bereitzustellen und zu erfahren, wie Sie Semantic Kernel verwenden.

Voraussetzungen

Herunterladen des Beispielprojekts

Klonen Sie das GitHub-Repository, das die Beispiel-Apps für alle Schnellstarts enthält:

git clone https://github.com/dotnet/ai-samples.git

Erstellen der Azure OpenAI Service-Instanz

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.

  1. Navigieren Sie von einem Terminal oder einer Eingabeaufforderung zum Verzeichnis src\quickstarts\azure-openai des Beispielrepositorys.

  2. 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 Benutzergeheimnisse für die Beispiel-App, z. B. den OpenAI-Zugriffsschlüssel.

    Hinweis

    Wenn während der azd up-Bereitstellung ein Fehler auftritt, lesen Sie den Abschnitt Problembehandlung.

Ausprobieren des Beispiels zu den Vorteilen des Wanderns

  1. Navigieren Sie mithilfe eines Terminals oder einer Eingabeaufforderung zum Verzeichnis openai\01-HikeBenefitsSummary.

  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>
    
  3. Verwenden Sie den Befehl dotnet run, um die App auszuführen:

    dotnet run
    
  1. Navigieren Sie mithilfe eines Terminals oder einer Eingabeaufforderung zum Verzeichnis azure-openai\01-HikeBenefitsSummary.

  2. Verwenden Sie den Befehl dotnet run, um die App auszuführen:

    dotnet run
    

    Tipp

    Wenn Sie eine Fehlermeldung erhalten, ist die Bereitstellung der Azure OpenAI-Ressourcen möglicherweise noch nicht abgeschlossen. Warten Sie ein paar Minuten, und versuchen Sie es dann noch einmal.

Untersuchen des Codes

Die App verwendet das Microsoft.SemanticKernel-Paket zum Senden und Empfangen von Anforderungen an und von OpenAI Service.

Die Program.cs-Datei enthält den gesamten App-Code. Die ersten Codezeilen legen Konfigurationswerte fest und rufen den OpenAI-Schlüssel ab, der zuvor mit dem Befehl dotnet user-secrets festgelegt wurde.

var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string model = "gpt-3.5-turbo";
string key = config["OpenAIKey"];

Die Kernel-Klasse erleichtert Anforderungen und Antworten und registriert einen OpenAIChatCompletion-Dienst.

// Create a Kernel containing the OpenAI Chat Completion Service
Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatCompletion(model, key)
    .Build();

Die Anwendung verwendet das Microsoft.SemanticKernel-Paket zum Senden und Empfangen von Anforderungen an und von Azure OpenAI Service.

Die Program.cs-Datei enthält den gesamten App-Code. Mithilfe der ersten Codezeilen werden Geheimnisse und Konfigurationswerte geladen, die während der Anwendungsbereitstellung in dotnet user-secrets für Sie festgelegt wurden.

// Retrieve the local secrets saved during the Azure deployment
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];
string key = config["AZURE_OPENAI_KEY"];

Die Kernel-Klasse erleichtert Anforderungen und Antworten und registriert einen OpenAIChatCompletion-Dienst.

// Create a Kernel containing the Azure OpenAI Chat Completion Service
Kernel kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deployment, endpoint, key)
    .Build();

Nachdem der Kernel erstellt wurde, liest der App-Code den benefits.md-Dateiinhalt und verwendet ihn zum Erstellen einer prompt für das Modell. Über die Eingabeaufforderung wird das Modell angewiesen, den Dateitextinhalt zusammenzufassen.

// Create and print out the prompt
string prompt = $"""
    Please summarize the the following text in 20 words or less:
    {File.ReadAllText("benefits.md")}
    """;
Console.WriteLine($"user >>> {prompt}");

Die InvokePromptAsync-Funktion sendet die prompt an das Modell, um eine Antwort zu generieren.

// Submit the prompt and print out the response
string response = await kernel.InvokePromptAsync<string>(
    prompt,
    new(new OpenAIPromptExecutionSettings() 
        { 
            MaxTokens = 400 
        })
    );
Console.WriteLine($"assistant >>> {response}");

Passen Sie den Textinhalt der Datei oder die Länge der Zusammenfassung an, um die Unterschiede in den Antworten anzuzeigen.

Bereinigen von Ressourcen

Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.

azd down

Problembehandlung

Unter Windows werden nach dem Ausführen von azd up möglicherweise die folgenden Fehlermeldungen angezeigt:

postprovision.ps1 ist nicht digital signiert. Das Skript wird nicht auf dem System ausgeführt.

Das Skript postprovision.ps1 wird ausgeführt, um die in der Anwendung verwendeten .NET-Benutzergeheimnisse festzulegen. Führen Sie den folgenden PowerShell-Befehl aus, um diesen Fehler zu vermeiden:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Führen Sie dann den azd up-Befehl erneut aus.

Ein weiterer möglicher Fehler:

„pwsh“ wird nicht als interner oder externer Befehle, als operierbare Programm- oder Batchdatei erkannt. WARNUNG: Fehler beim „postprovision“-Hook mit dem Ausgangscode: „1“, Pfad: „.\infra\post-script\postprovision.ps1“. : Exitcode: 1 Ausführung wird fortgesetzt, da ContinueOnError auf „true“ festgelegt wurde.

Das Skript postprovision.ps1 wird ausgeführt, um die in der Anwendung verwendeten .NET-Benutzergeheimnisse festzulegen. Um diesen Fehler zu vermeiden, führen Sie das Skript mithilfe des folgenden PowerShell-Befehls manuell aus:

.\infra\post-script\postprovision.ps1

Die .NET KI-Apps verfügen jetzt über konfigurierte Benutzergeheimnisse und können getestet werden.

Nächste Schritte