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 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. 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
- Zestaw .NET 8 SDK — zainstaluj zestaw .NET 8 SDK.
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Dostęp do usługi Azure OpenAI.
- Interfejs wiersza polecenia dla deweloperów platformy Azure (opcjonalnie) — instalowanie lub aktualizowanie interfejsu wiersza polecenia dla deweloperów platformy Azure.
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
- 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
src\quickstarts\azure-openai
katalogu 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 punkt końcowy usługi Azure OpenAI i nazwa modelu.
Wypróbuj przykładowe obrazy turystyczne
Sklonuj repozytorium: dotnet/ai-samples
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\semantic-kernel\05-HikeImages
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 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 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ć.