Udostępnij za pośrednictwem


Podsumowywanie tekstu przy użyciu aplikacji do czatu sztucznej inteligencji za pomocą platformy .NET

Rozpocznij pracę ze sztuczną inteligencją, tworząc prostą aplikację do czatu konsolowego platformy .NET 8.0 w celu podsumowania tekstu. Aplikacja działa lokalnie i używa modelu OpenAI gpt-3.5-turbo . Wykonaj następujące kroki, aby uzyskać dostęp do interfejsu OpenAI i dowiedzieć się, jak używać jądra semantycznego.

Wymagania wstępne

  • Zestaw .NET 8.0 SDK — zainstaluj zestaw .NET 8.0 SDK.
  • Klucz interfejsu API z interfejsu OpenAI , aby można było uruchomić ten przykład.
  • W systemie Windows wymagany jest program PowerShell v7+ . Aby zweryfikować wersję, uruchom polecenie pwsh w terminalu. Powinna zwrócić bieżącą wersję. Jeśli zwraca błąd, wykonaj następujące polecenie: dotnet tool update --global PowerShell.

Rozpocznij pracę ze sztuczną inteligencją, tworząc prostą aplikację do czatu konsolowego platformy .NET 8.0 w celu podsumowania tekstu. Aplikacja działa lokalnie i nawiązuje połączenie z modelem OpenAI gpt-35-turbo wdrożonym w usłudze Azure OpenAI. Wykonaj następujące kroki, aby aprowizować usługę Azure OpenAI i dowiedzieć się, jak używać jądra semantycznego.

Wymagania wstępne

Pobieranie przykładowego projektu

Sklonuj repozytorium GitHub zawierające przykładowe aplikacje dla wszystkich przewodników Szybki start:

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

Tworzenie usługi Azure OpenAI

Przykładowe repozytorium GitHub jest ustrukturyzowane jako szablon interfejsu wiersza polecenia dla deweloperów platformy Azure (azd), którego azd można użyć do aprowizacji usługi Azure OpenAI i modelu.

  1. W terminalu lub wierszu polecenia przejdź do katalogu src\quickstarts\azure-openai przykładowego repozytorium.

  2. Uruchom polecenie , azd up aby aprowizować zasoby usługi Azure OpenAI. Utworzenie usługi Azure OpenAI i wdrożenie modelu może potrwać kilka minut.

    azd up
    

    azd Konfiguruje również wymagane wpisy tajne użytkownika dla przykładowej aplikacji, takie jak klucz dostępu OpenAI.

    Uwaga

    Jeśli podczas wdrażania wystąpi błąd azd up , odwiedź sekcję rozwiązywania problemów.

Wypróbuj przykład korzyści dla pieszych

  1. W terminalu lub wierszu polecenia przejdź do openai\01-HikeBenefitsSummary katalogu.

  2. Uruchom następujące polecenia, aby skonfigurować klucz interfejsu API OpenAI jako wpis tajny dla przykładowej aplikacji:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    
  3. Użyj polecenia , dotnet run aby uruchomić aplikację:

    dotnet run
    
  1. W terminalu lub wierszu polecenia przejdź do azure-openai\01-HikeBenefitsSummary katalogu.

  2. Użyj polecenia , dotnet run aby uruchomić aplikację:

    dotnet run
    

    Napiwek

    Jeśli zostanie wyświetlony komunikat o błędzie, zasoby usługi Azure OpenAI mogą nie zakończyć wdrażania. Poczekaj kilka minut i spróbuj ponownie.

Eksplorowanie kodu

Aplikacja używa Microsoft.SemanticKernel pakietu do wysyłania i odbierania żądań do usługi OpenAI.

Plik Program.cs zawiera cały kod aplikacji. Pierwsze kilka wierszy kodu ustawia wartości konfiguracji i pobierz klucz OpenAI, który został wcześniej ustawiony przy użyciu dotnet user-secrets polecenia .

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

Klasa Kernel ułatwia żądania i odpowiedzi oraz rejestruje usługę OpenAIChatCompletion .

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

Aplikacja używa Microsoft.SemanticKernel pakietu do wysyłania i odbierania żądań do usługi Azure OpenAI.

Plik Program.cs zawiera cały kod aplikacji. Pierwsze kilka wierszy kodu ładuje wpisy tajne i wartości konfiguracji, które zostały ustawione dla dotnet user-secrets Użytkownika podczas aprowizacji aplikacji.

// 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"];

Klasa Kernel ułatwia żądania i odpowiedzi oraz rejestruje usługę OpenAIChatCompletion .

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

Po utworzeniu Kernel kodu aplikacji odczytuje benefits.md zawartość pliku i używa jej do utworzenia prompt modelu. Monit nakazuje modelowi podsumowanie zawartości tekstowej pliku.

// 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}");

Funkcja InvokePromptAsync wysyła prompt element do modelu w celu wygenerowania odpowiedzi.

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

Dostosuj zawartość tekstowa pliku lub długość podsumowania, aby zobaczyć różnice w odpowiedziach.

Czyszczenie zasobów

Jeśli nie potrzebujesz już przykładowej aplikacji lub zasobów, usuń odpowiednie wdrożenie i wszystkie zasoby.

azd down

Rozwiązywanie problemów

W systemie Windows po uruchomieniu azd upprogramu mogą zostać wyświetlone następujące komunikaty o błędach:

postprovision.ps1 nie jest podpisany cyfrowo. Skrypt nie zostanie wykonany w systemie

Skrypt postprovision.ps1 jest wykonywany w celu ustawienia wpisów tajnych użytkownika platformy .NET używanych w aplikacji. Aby uniknąć tego błędu, uruchom następujące polecenie programu PowerShell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Następnie uruchom azd up ponownie polecenie.

Inny możliwy błąd:

Polecenie "pwsh" nie jest rozpoznawane jako wewnętrzne lub zewnętrzne polecenie, program operacyjny lub plik wsadowy. OSTRZEŻENIE: hak "postprovision" nie powiódł się z kodem zakończenia: "1", ścieżka: ".\infra\post-script\postprovision.ps1". : kod zakończenia: 1 Wykonanie będzie kontynuowane, ponieważ właściwość ContinueOnError została ustawiona na wartość true.

Skrypt postprovision.ps1 jest wykonywany w celu ustawienia wpisów tajnych użytkownika platformy .NET używanych w aplikacji. Aby uniknąć tego błędu, ręcznie uruchom skrypt przy użyciu następującego polecenia programu PowerShell:

.\infra\post-script\postprovision.ps1

Aplikacje sztucznej inteligencji platformy .NET mają teraz skonfigurowane wpisy tajne użytkownika i można je przetestować.

Następne kroki