Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu použijete knihovnu Microsoft.Extensions.AI (MEAI) ke generování obrázků z textových výzev pomocí modelu AI. Funkce MEAI typu text-to-image umožňují generovat obrázky z výzev přirozeného jazyka nebo existujících obrázků pomocí konzistentního a rozšiřitelného povrchu rozhraní API.
Rozhraní IImageGenerator poskytuje jednotné a rozšiřitelné rozhraní API pro práci s různými službami generování imagí, což usnadňuje integraci funkcí převodu textu na obrázek do aplikací .NET. Rozhraní podporuje:
- Generování textu na obrázek
- Složení kanálu pomocí middlewaru (protokolování, telemetrie, ukládání do mezipaměti).
- Flexibilní možnosti konfigurace
- Podpora více poskytovatelů AI
Poznámka:
Rozhraní IImageGenerator je aktuálně označeno jako experimentální s ID diagnostiky MEAI001 . Toto upozornění může být potřeba potlačit v souboru nebo kódu projektu.
Požadavky
- .NET 8.0 SDK nebo novější – Nainstalujte sadu .NET 8 SDK.
- Předplatné Azure – Vytvořte si ho zdarma.
- Azure Developer CLI (volitelné) – Nainstalujte nebo aktualizujte Azure Developer CLI.
Konfigurace služby AI
Pokud chcete zřídit službu a model Azure OpenAI pomocí webu Azure Portal, proveďte kroky v článku Vytvoření a nasazení prostředku služby Azure OpenAI. V kroku Nasazení modelu vyberte gpt-image-1 model.
Poznámka:
gpt-image-1 je novější model, který nabízí několik vylepšení oproti DALL-E 3. Je k dispozici od OpenAI na omezeném základě; požádat o přístup pomocí tohoto formuláře.
Vytvoření aplikace
Provedením následujících kroků vytvořte konzolovou aplikaci .NET, která generuje obrázky z textových výzev.
Vytvořte novou konzolovou aplikaci:
dotnet new console -o TextToImageAIPřejděte do adresáře
TextToImageAIa přidejte do aplikace potřebné balíčky:dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsSpuštěním následujících příkazů přidejte tajné kódy aplikací pro koncový bod Azure OpenAI, název modelu a klíč rozhraní API:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME gpt-image-1 dotnet user-secrets set AZURE_OPENAI_API_KEY <your-azure-openai-api-key>Otevřete novou aplikaci v libovolném editoru (například v sadě Visual Studio).
Implementovat základní generaci obrázků
Program.csAktualizujte soubor následujícím kódem, abyste získali konfigurační data a vytvořiliAzureOpenAIClient:using Azure; using Azure.AI.OpenAI; using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; IConfigurationRoot config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string apiKey = config["AZURE_OPENAI_API_KEY"]; string model = config["AZURE_OPENAI_GPT_NAME"]; // Create the Azure OpenAI client and convert to IImageGenerator. AzureOpenAIClient azureClient = new( new Uri(endpoint), new AzureKeyCredential(apiKey)); var imageClient = azureClient.GetImageClient(model); #pragma warning disable MEAI001 // Type is for evaluation purposes only. IImageGenerator generator = imageClient.AsIImageGenerator();Předchozí kód:
- Načte konfiguraci z tajných kódů uživatelů.
- Vytvoří
ImageClientpomocí sady OpenAI SDK. - Převede
ImageClientnaIImageGeneratorpomocí metody rozšíření AsIImageGenerator(ImageClient).
Přidejte následující kód pro implementaci základního generování textu na obrázek:
// Generate an image from a text prompt var options = new ImageGenerationOptions { MediaType = "image/png" }; string prompt = "A tennis court in a jungle"; var response = await generator.GenerateImagesAsync(prompt, options); // Save the image to a file. var dataContent = response.Contents.OfType<DataContent>().First(); string fileName = SaveImage(dataContent, "jungle-tennis.png"); Console.WriteLine($"Image saved to file: {fileName}"); static string SaveImage(DataContent content, string fileName) { string userDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); var path = Path.Combine(userDirectory, fileName); File.WriteAllBytes(path, content.Data.ToArray()); return Path.GetFullPath(path); }Předchozí kód:
- Nastaví požadovaný typ souboru obrázku nastavením ImageGenerationOptions.MediaType.
- Vygeneruje obrázek pomocí GenerateImagesAsync(IImageGenerator, String, ImageGenerationOptions, CancellationToken) metody s textovou výzvou.
- Uloží vygenerovaný obrázek do souboru v místním uživatelském adresáři.
Spusťte aplikaci prostřednictvím integrovaného vývojového prostředí (IDE) nebo pomocí
dotnet run.Aplikace vygeneruje obrázek a vypíše cestu k souboru s obrázkem. Otevřete soubor a zobrazte vygenerovaný obrázek. Následující obrázek ukazuje jeden příklad vygenerované image.
Konfigurace možností generování image
Generování obrázků můžete přizpůsobit tak, že poskytnete další možnosti, jako je velikost, formát odpovědi a počet obrázků, které se mají vygenerovat. Třída ImageGenerationOptions umožňuje zadat:
- AdditionalProperties: Možnosti specifické pro zprostředkovatele.
- Count: Počet obrázků, které se mají vygenerovat.
- ImageSize: Rozměry vygenerovaného obrazu jako System.Drawing.Size. Podporované velikosti najdete v referenčních informacích k rozhraní Api OpenAI.
- MediaType: Typ média (typ MIME) vygenerovaného obrázku.
- ModelId: ID modelu.
- RawRepresentationFactory: Zpětné volání, které generuje nezpracovanou reprezentaci možností generování obrázku z podkladové implementace systému.
- ResponseFormat: Možnosti jsou Uri, Dataa Hosted.
Použijte hostovací integraci
Při vytváření webových aplikací nebo hostovaných služeb můžete integrovat generování imagí pomocí injektáže závislostí a vzorů hostování. Tento přístup poskytuje lepší správu životního cyklu, integraci konfigurace a testovatelnost.
Konfigurace hostitelských služeb
Balíček Aspire.Azure.AI.OpenAI poskytuje metody rozšíření pro registraci služeb Azure OpenAI v kontejneru injektáže závislostí vaší aplikace:
Přidejte do webové aplikace potřebné balíčky:
dotnet add package Aspire.Azure.AI.OpenAI --prerelease dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI.OpenAI --prereleaseNakonfigurujte v
Program.cssouboru generátor obrázků a klienta Azure OpenAI:using Aspire.Azure.AI.OpenAI; using Microsoft.Extensions.AI; using OpenAI; WebApplicationBuilder builder = WebApplication.CreateBuilder(args); // Add the Azure OpenAI client using hosting integration. AspireAzureOpenAIClientBuilder openai = builder.AddAzureOpenAIClient("openai");Metoda AddAzureOpenAIClient(IHostApplicationBuilder, String, Action<AzureOpenAISettings>, Action<IAzureClientBuilder<AzureOpenAIClient,AzureOpenAIClientOptions>>) zaregistruje klienta Azure OpenAI pomocí injektáže závislostí. Připojovací řetězec (pojmenovaný
"openai") se načte z konfigurace, obvykle zappsettings.jsonnebo z proměnných prostředí.{ "ConnectionStrings": { "openai": "Endpoint=https://your-resource-name.openai.azure.com/;Key=your-api-key" } }IImageGenerator Zaregistrujte službu pomocí injektáže závislostí:
// Register the image generator with dependency injection. ImageGeneratorBuilder imageBuilder = builder.Services.AddImageGenerator(services => { OpenAIClient openAiClient = services.GetRequiredService<OpenAIClient>(); OpenAI.Images.ImageClient imageClient = openAiClient.GetImageClient("gpt-image-1"); #pragma warning disable MEAI001 // Type is for evaluation purposes only. return imageClient.AsIImageGenerator(); #pragma warning restore MEAI001 });Metoda AddImageGenerator zaregistruje generátor obrázků jako službu singleton, která se dá vložit do kontrolerů, služeb nebo minimálních koncových bodů rozhraní API.
Přidejte možnosti a protokolování:
imageBuilder.ConfigureOptions(options => { options.MediaType = "image/png"; }).UseLogging();Předchozí kód:
- Konfiguruje možnosti voláním metody rozšíření ConfigureOptions(ImageGeneratorBuilder, Action<ImageGenerationOptions>) na ImageGeneratorBuilder. Tato metoda nakonfiguruje ImageGenerationOptions, aby byl předán dalšímu generátoru v datovém toku.
- Přidá protokolování do kanálu generátoru obrázků voláním UseLogging(ImageGeneratorBuilder, ILoggerFactory, Action<LoggingImageGenerator>) metody rozšíření.
Použití generátoru obrázků v koncových bodech
Po registraci můžete vkládat IImageGenerator do koncových bodů nebo služeb:
// Use the image generator in an endpoint.
app.MapPost("/generate-image", async (IImageGenerator generator, string prompt) =>
{
ImageGenerationResponse response = await generator.GenerateImagesAsync(prompt);
DataContent dataContent = response.Contents.OfType<DataContent>().First();
return Results.File(dataContent.Data.ToArray(), dataContent.MediaType);
});
Tento přístup k hostování nabízí několik výhod:
- Správa konfigurace: Připojovací řetězce a nastavení se spravují prostřednictvím konfiguračního systému .NET.
- Injektáž závislostí: Generátor obrázků je k dispozici v celé aplikaci prostřednictvím DI.
- Správa životního cyklu: Služby jsou správně inicializovány a uvolněny hostitelskou infrastrukturou.
- Testovatelnost: Mock implementace lze snadno použít pro testování.
-
Integrace s .NET Aspire: Při použití rozhraní .NET Aspire se
AddAzureOpenAIClientmetoda integruje se zjišťováním služeb a telemetrií.
Osvědčené postupy
Při implementaci generování textu na image ve vašich aplikacích zvažte tyto osvědčené postupy:
- Příprava výzvy: Zadejte jasné podrobné výzvy, které popisují požadovaný obrázek. Uveďte konkrétní podrobnosti o stylu, složení, barvách a prvech.
- Správa nákladů: Generování imagí může být nákladné. Ukládejte výsledky do mezipaměti, pokud je to možné, a implementujte omezování rychlosti pro řízení nákladů.
- Bezpečnost obsahu: Vždy zkontrolujte vygenerované obrázky pro příslušný obsah, zejména v produkčních aplikacích. Zvažte implementaci filtrování obsahu a moderování.
- Uživatelské prostředí: Generování obrázků může trvat několik sekund. Poskytněte indikátory průběhu a řádně zpracujte časové limity.
- Právní aspekty: Mějte na paměti licenční a práva k používání generovaných imagí. Přečtěte si podmínky služby pro vašeho poskytovatele AI.
Vyčistěte zdroje
Pokud už prostředek Azure OpenAI nepotřebujete, odstraňte ho, abyste se vyhnuli poplatkům:
- Na webu Azure Portal přejděte k prostředku Azure OpenAI.
- Vyberte prostředek a pak vyberte Odstranit.
Další kroky
Úspěšně jste vygenerovali několik různých obrázků pomocí IImageGenerator rozhraní v Microsoft.Extensions.AI. Dále můžete prozkoumat některé další funkce, mezi které patří:
- Iterativní upřesnění vygenerovaného obrázku
- Úprava existujícího obrázku
- Přizpůsobení obrázku, diagramu nebo motivu