Generowanie obrazów przy użyciu sztucznej inteligencji za pomocą platformy .NET
Z tego przewodnika Szybki start dowiesz się, jak utworzyć aplikację konsolową platformy .NET w celu generowania obrazów przy użyciu modelu OpenAI lub DALLe AI platformy Azure OpenAI, który został specjalnie zaprojektowany do generowania obrazów na podstawie monitów tekstowych.
Wymagania wstępne
- Zestaw .NET 8.0 SDK lub nowszy — Zainstaluj zestaw .NET 8.0 SDK.
- Klucz interfejsu API z interfejsu OpenAI , aby można było uruchomić ten przykład.
Wymagania wstępne
- Zestaw .NET 8.0 SDK lub nowszy — 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.
Nota
Do wykonania zadań w tym artykule można również użyć Semantic Kernel. Semantyczne jądro to lekki zestaw SDK typu open source, który umożliwia tworzenie agentów sztucznej inteligencji i integrowanie najnowszych modeli sztucznej inteligencji z aplikacjami platformy .NET.
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 aplikacji
Wykonaj poniższe kroki, aby utworzyć aplikację konsolową platformy .NET w celu nawiązania połączenia z modelem sztucznej inteligencji.
W pustym katalogu na komputerze użyj polecenia
dotnet new
, aby utworzyć nową aplikację konsolową:dotnet new console -o ImagesAI
Zmień katalog na folder aplikacji:
cd ImagesAI
Zainstaluj wymagane pakiety:
dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Otwórz aplikację w programie Visual Studio Code lub wybranym edytorze.
code .
Tworzenie usługi sztucznej inteligencji
- 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.
Konfigurowanie aplikacji
Przejdź do katalogu głównego projektu platformy .NET z poziomu terminalu lub wiersza polecenia.
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> dotnet user-secrets set ModelName <your-openai-model-name>
Dodawanie kodu aplikacji
W pliku Program.cs dodaj następujący kod, aby nawiązać połączenie i uwierzytelnić się w modelu AI.
using Microsoft.Extensions.Configuration; using OpenAI.Images; using System.ClientModel; using Azure.AI.OpenAI; using Azure.Identity; // Retrieve the local secrets saved during the Azure deployment. If you skipped the deployment // because you already have an Azure OpenAI available, edit the following lines to use your information, // e.g. string openAIEndpoint = "https://cog-demo123.openai.azure.com/"; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_DALLE_NAME"]; // Create the Azure OpenAI ImageClient ImageClient client = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .GetImageClient(deployment); // Generate the image GeneratedImage generatedImage = await client.GenerateImageAsync(""" A postal card with an 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!' """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 }); Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
Nota
DefaultAzureCredential wyszukuje poświadczenia uwierzytelniania z lokalnych narzędzi. Jeśli nie używasz szablonu
azd
do aprowizowania zasobu usługi Azure OpenAI, musisz przypisać rolęAzure AI Developer
do konta użytego do logowania się do programu Visual Studio lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie usług Azure AI za pomocą .NET.// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Microsoft.Extensions.Configuration; using OpenAI.Images; // Retrieve the local secrets that were set from the command line, using: // dotnet user-secrets init // dotnet user-secrets set OpenAIKey <your-openai-key> var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string key = config["OpenAIKey"]; string modelName = config["ModelName"]; // Create the OpenAI ImageClient ImageClient client = new(modelName, key); // Generate the image GeneratedImage generatedImage = await client.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!' """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 }); Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
Powyższy kod:
- Odczytuje podstawowe wartości konfiguracji z tajnych danych użytkownika projektu, aby połączyć się z modelem AI.
- Tworzy
ImageClient
w celu nawiązania połączenia z modelem AI - Wysyła monit do modelu, który opisuje żądany obraz
- Drukuje adres URL wygenerowanego obrazu do danych wyjściowych konsoli
Użyj polecenia ,
dotnet run
aby uruchomić aplikację:dotnet run
Przejdź do adresu URL obrazu w danych wyjściowych konsoli, aby wyświetlić wygenerowany obraz. Dostosuj zawartość tekstowa monitu, aby utworzyć nowe obrazy lub zmodyfikować oryginał.
Czyszczenie zasobów
Jeśli nie potrzebujesz już przykładowej aplikacji lub zasobów, usuń odpowiednie wdrożenie i wszystkie zasoby.
azd down