Udostępnij za pośrednictwem


Generowanie obrazów przy użyciu sztucznej inteligencji za pomocą platformy .NET

Rozpocznij pracę ze sztuczną inteligencją, tworząc prostą aplikację do czatu konsolowego platformy .NET 8. Aplikacja będzie działać lokalnie i używa modelu OpenAI dall-e-3 do generowania obrazów kart pocztowych, dzięki czemu możesz zaprosić znajomych na wycieczkę! 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. Aplikacja będzie działać lokalnie i używa modelu OpenAI dall-e-3 do generowania obrazów kart pocztowych, dzięki czemu możesz zaprosić znajomych na wycieczkę! Wykonaj następujące kroki, aby aprowizować usługę Azure OpenAI i dowiedzieć się, jak używać zestawu .NET Azure OpenAI SDK.

Wymagania wstępne

Pobieranie przykładowego projektu

Klonowanie przykładowego repozytorium

Możesz utworzyć własną aplikację, wykonując kroki opisane w sekcjach z wyprzedzeniem lub sklonować repozytorium GitHub zawierające ukończone przykładowe aplikacje dla wszystkich przewodników Szybki start. Jeśli planujesz używać usługi Azure OpenAI, przykładowe repozytorium jest również ustrukturyzowane jako szablon interfejsu wiersza polecenia dla deweloperów platformy Azure, który może aprowizować zasób usługi Azure OpenAI.

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 src\quickstarts\azure-openai katalogu 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 punkt końcowy usługi Azure OpenAI i nazwa modelu.

Wypróbuj przykładowe obrazy turystyczne

  1. Sklonuj repozytorium: dotnet/ai-samples

  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\semantic-kernel\05-HikeImages 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 key = config["OpenAIKey"];

Usługa OpenAITextToImageService ułatwia żądania i odpowiedzi.

OpenAITextToImageService textToImageService = new(key, null);

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

Usługa AzureOpenAITextToImageService ułatwia żądania i odpowiedzi.

AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, new DefaultAzureCredential(), null);

Podaj kontekst i instrukcje dla modelu, dodając monit systemowy. Dobry monit generowania obrazu wymaga jasnego opisu obrazu, kolorów do użycia, zamierzonego stylu i innych deskryptorów.

Funkcja GenerateImageAsync instruuje model, aby wygenerował odpowiedź na podstawie monitu użytkownika oraz konfiguracji rozmiaru obrazu i jakości.

// Generate the image
string imageUrl = await textToImageService.GenerateImageAsync("""
    A postal card with a happy hiker waving and a beautiful mountain in the background.
    There is a trail visible in the foreground.
    The postal card has text in red saying: 'You are invited for a hike!'
    """, 1024, 1024);

Console.WriteLine($"The generated image is ready at:\n{imageUrl}");

Dostosuj monit o personalizowanie obrazów wygenerowanych przez model.

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