Freigeben über


Generieren von Bildern mit KI und .NET

In dieser Schnellstartanleitung erfahren Sie, wie Sie eine .NET-Konsolen-App erstellen, um Bilder mithilfe eines OpenAI- oder Azure OpenAI DALLe AI-Modells zu generieren, das speziell für das Generieren von Bildern basierend auf Textaufforderungen konzipiert ist.

Voraussetzungen

Voraussetzungen

Anmerkung

Sie können auch den Semantischen Kernel verwenden, um die Aufgaben in diesem Artikel auszuführen. Der semantische Kernel ist ein einfaches Open-Source-SDK, mit dem Sie KI-Agents erstellen und die neuesten KI-Modelle in Ihre .NET-Apps integrieren können.

Klonen des Beispielrepositorys

Sie können Ihre eigene App mit den Schritten in den vorherigen Abschnitten erstellen oder das GitHub-Repository klonen, das die abgeschlossenen Beispiel-Apps für alle Schnellstarts enthält. Wenn Sie Beabsichtigen, Azure OpenAI zu verwenden, ist das Beispiel-Repository auch als Azure Developer CLI-Vorlage strukturiert, die eine Azure OpenAI-Ressource für Sie bereitstellen kann.

git clone https://github.com/dotnet/ai-samples.git

Erstellen der App

Führen Sie die folgenden Schritte aus, um eine .NET-Konsolen-App zu erstellen, um eine Verbindung mit einem AI-Modell herzustellen.

  1. Verwenden Sie in einem leeren Verzeichnis auf Ihrem Computer den Befehl dotnet new, um eine neue Konsolen-App zu erstellen:

    dotnet new console -o ImagesAI
    
  2. Wechseln Sie das Verzeichnis in den App-Ordner:

    cd ImagesAI
    
  3. Installieren Sie die erforderlichen Pakete:

    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
    
  4. Öffnen Sie die App in Visual Studio Code oder dem gewünschten Editor.

    code .
    

Erstellen Sie den KI-Dienst

Das GitHub-Beispielrepository ist als Azure Developer CLI-Vorlage (azd) strukturiert, die azd zum Bereitstellen der Azure OpenAI Service-Instanz und -Modells für Sie verwenden kann.

  1. Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum src\quickstarts\azure-openai Verzeichnis des Beispielrepo.

  2. Führen Sie den azd up-Befehl aus, um die Azure OpenAI-Ressourcen bereitzustellen. Es kann mehrere Minuten dauern, bis Azure OpenAI Service erstellt und das Modell bereitgestellt ist.

    azd up
    

    azd konfiguriert außerdem die erforderlichen Benutzerschlüssel für die Beispiel-App, z. B. den Azure OpenAI-Endpunkt und den Modellnamen.

Konfigurieren der App

  1. Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum Stammverzeichnis Ihres .NET-Projekts.

  2. Führen Sie die folgenden Befehle aus, um Ihren OpenAI-API-Schlüssel als Geheimnis für die Beispiel-App zu konfigurieren:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    dotnet user-secrets set ModelName <your-openai-model-name>
    

Fügen Sie den App-Code hinzu

  1. Fügen Sie in der datei Program.cs den folgenden Code hinzu, um eine Verbindung mit dem KI-Modell herzustellen und sich zu authentifizieren.

    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}");
    

    Anmerkung

    DefaultAzureCredential sucht von Ihrem lokalen Tool nach Authentifizierungsanmeldeinformationen. Wenn Sie die azd Vorlage nicht zum Bereitstellen der Azure OpenAI-Ressource verwenden, müssen Sie dem Konto, das Sie für die Anmeldung bei Visual Studio oder der Azure CLI verwendet haben, die Azure AI Developer Rolle zuweisen. Weitere Informationen finden Sie unter Authentifizierung von Azure AI-Diensten mit .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}");
    

    Der vorangehende Code:

    • Liest wesentliche Konfigurationsparameter aus den projektbezogenen Benutzungsgeheimnissen aus, um eine Verbindung mit dem KI-Modell herzustellen.
    • Erstellt eine ImageClient zum Herstellen einer Verbindung mit dem KI-Modell
    • Sendet eine Eingabeaufforderung an das Modell, das das gewünschte Bild beschreibt.
    • Druckt die URL des generierten Bildes in die Konsolenausgabe
  2. Verwenden Sie den Befehl dotnet run, um die App auszuführen:

    dotnet run
    

    Navigieren Sie zur Bild-URL in der Konsolenausgabe, um das generierte Bild anzuzeigen. Passen Sie den Textinhalt der Eingabeaufforderung an, um neue Bilder zu erstellen oder das Original zu ändern.

Bereinigen von Ressourcen

Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.

azd down

Nächste Schritte