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.
- 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ł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\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"];
string key = config["AZURE_OPENAI_KEY"];
Usługa AzureOpenAITextToImageService
ułatwia żądania i odpowiedzi.
AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, key, 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ć.