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 poleceniepwsh
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
- Zestaw .NET 8 SDK — zainstaluj zestaw .NET 8 SDK.
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Interfejs wiersza polecenia dla deweloperów platformy Azure — instalowanie lub aktualizowanie interfejsu wiersza polecenia dla deweloperów platformy Azure.
- Dostęp do usługi Azure OpenAI.
- W systemie Windows wymagany jest program PowerShell
v7+
. Aby zweryfikować wersję, uruchom poleceniepwsh
w terminalu. Powinna zwrócić bieżącą wersję. Jeśli zwraca błąd, wykonaj następujące polecenie:dotnet tool update --global PowerShell
.
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
- Interfejs wiersza polecenia dla deweloperów platformy Azure
- Interfejs wiersza polecenia platformy Azure
- Azure Portal
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.
W terminalu lub wierszu polecenia przejdź do katalogu src\quickstarts\azure-openai przykładowego repozytorium.
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
W terminalu lub wierszu polecenia przejdź do
openai\01-HikeBenefitsSummary
katalogu.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>
Użyj polecenia ,
dotnet run
aby uruchomić aplikację:dotnet run
W terminalu lub wierszu polecenia przejdź do
azure-openai\01-HikeBenefitsSummary
katalogu.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 up
programu 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ć.